Skip to content

[META] Identity in OpenSearch #5834

@DarshitChanpura

Description

@DarshitChanpura

Supporting Native AuthN/AuthZ with Core

Every thing done within OpenSearch should be permissible, no matter the source. This is why we need to move authentication and authorization into OpenSearch core codebase. The plugin model is very useful for optional things, security primitives are not one of them.

Getting these new native concepts out to OpenSearch developers and customers quickly for feedback and iteration is our aim to achieve this.

Terminology:

  • Subject: An individual, process, or device that causes information to flow among objects or change to the system state.
  • Principal: An application-wide identifier that is persisted

Minimal viable system

To move quickly, and provide a surface area for experimentation we are going to cut some corners. This effort will first be within a feature branch, then be controlled via an experimental feature flag shipped with OpenSearch distribution, finally made available for adoption with backwards compatible support.

Blog Posts

This section is for tracking any updates that would be made Identity related blog-posts.

The following are the areas of focus to create this minimal set of functionality along with an estimated complexity to develop to help in terms of understanding the projects. Complexity attempts to score uncertainty, not effort, delivering more complex items implies more prototypes/design reviews.

Identity Concepts

Principal Identifiers

Delegate Execution

Access Tokens

  • [Complexity 5] Add APIs to: generate token for principal, refresh token, expire all refresh tokens
  • [Complexity 5] Secrets generation / storage

Internal Identity Provider

CRUD operations on Subject

Authentication

Permissions/Authorization

  • [Complexity 3] Design the permissions model and any potential changes. Notability existing permissions based on action names will be on deprecation path PR [FEATURE/Identity] Outline Permissions Model and updated Permission Nomenclature #5698
  • [Complexity 3] Adding Permissions check API [Feature/Identity] Permissions check API #4516
  • [Complexity 2] Registration of permissions from all permissions sources in core
  • [Complexity 5] Registration of permissions for extension/plugins
  • [Complexity 2] Have a process where from a Subject a list of permissions is generated so they can be checked
  • [Complexity 8] For the new permission come up with a structured naming convention building blocks, such as {SourceName}{ResourceName}{ActionVerb} -> Ad.Detector.Create. Additionally come up with a 'blessed' list of action verbs to prevent http methods from being used as action names.
  • [Complexity 2] With the new naming convention create updated names for all core permissions
  • [Complexity 2] Confirm evaluation of permissions for Actions in core
  • [Complexity 2] Grant permissions to a subject, through the identity provider

TODOs

This section contains all the current and pending TODO items in the identity code.

Future Scope

The following items are not required for the critical path delivery and will likely be started on following the stabilization of the MVP components.

Loading from configuration

  • [Complexity 8] Reuse/replace existing YAML configuration

Index View(s)

  • [Complexity 8] Might be further expanded into a generic 'resource collection'

Authorization Abstractions

  • [Complexity 8] Roles, groups, trees, or other intermediate representations of permissions.

Rename plugin permissions (OOB?)

  • [Complexity 8] Drive the renaming of permissions through all the existing plugins.

Migration from Security Plugin

  • [Complexity 13] How to do a complete, or partial migration(s) from the security plugin.

Authentication providers

  • [Complexity 8] OIDC, SAML, and other(s).

Security testing

  • [Complexity 8] How to author test cases for security features, and building out these test cases for all critical scenarios

Identity Information

  • [Complexity 8] Allow retrieve/storage of user information

Metadata

Metadata

Assignees

No one assigned

    Labels

    Roadmap:SecurityProject-wide roadmap labelenhancementEnhancement or improvement to existing feature or request

    Type

    No type

    Projects

    Status

    New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions