Skip to content

[FEATURE] Security support for extensions  #1895

@saratvemulapalli

Description

@saratvemulapalli

Coming from:
[Meta] Making OpenSearch Extensible opensearch-project/OpenSearch#2447
[Meta] Plugin Sandboxing (a.k.a extensions) opensearch-project/OpenSearch#1422

Problem

As we are building extensions, security is an integral part of everything we deliver. We see a bunch of problems for plugin security and would like to solve them from Day 1 for extensions.

Requirements

  • [Extensions] Extensions should be able to call a common API which evaluates permissions and gates resources.
  • [Extensions] Extensions by default should not have any permissions, and are explicitly granted based on defined policies.
  • [Security into Core and Extensions] All API calls between extensions and OpenSearch are access controlled based on extension permission policies.
  • [Extensions and SDK] Extensions SDK should be able to restrict host level access(file system, network etc) based on security policy.
  • [Security into Core] Add support to gate Rest APIs for OpenSearch
  • [Extensions and SDK] Add support to validate the identity of an extension during runtime. This helps in identifying the extension and claiming if it really is. This is an important requirement for extensions since extensions can be installed/modified/removed on the fly and needs identity validation before it joins the cluster.
  • [Extensions and SDK] Compliance: Add support for extensions to do audit logging.

Refactored these requirements from June 2022 to explain the problems above.

To build a MVP for extensions we are working on building Anomaly Detection plugin and help run it as an extension.
Our end goal is to have:

  • Load third party extensions securely
  • Protect the cluster resources when extensions are installed
  • Access control for resources created by extensions (Including APIs, application resources etc)
  • Access control OpenSearch resources from extensions.

We can chat over this and get more feedback, but these are the resources we could think of to enable secure extensions.

For a start as we are looking at AD: opensearch-project/OpenSearch#3635
We need help to figure out how AD extension can work with security (adding extension support for common-utils):

  • AD uses User information for resource access control
  • AD uses InjectUser to inject user permissions for background jobs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeature-proposaltriagedIssues labeled as 'Triaged' have been reviewed and are deemed actionable.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions