Skip to content

Docs: Add OpenSearch FGAC permissions guide - #599

Open
Shahzeb-DataEngineer wants to merge 2 commits into
open-metadata:mainfrom
Shahzeb-DataEngineer:docs/opensearch-fgac-permissions
Open

Shahzeb-DataEngineer wants to merge 2 commits into
open-metadata:mainfrom
Shahzeb-DataEngineer:docs/opensearch-fgac-permissions

Conversation

@Shahzeb-DataEngineer

Copy link
Copy Markdown
Contributor

Related: open-metadata/OpenMetadata#29856

Adds a documentation page listing the minimal OpenSearch security permissions the OpenMetadata server backend needs when running against a security-enabled cluster (FGAC / security plugin).

What the page covers

  • Index patterns (<prefix>_*, <prefix>-di-*) for entity indexes and Data Insights streams
  • Cluster permissions table with a "when needed" column
  • Index-level operations note
  • Ready-to-use security role JSON example (+ AWS FGAC role-mapping pointer)
  • Permission changes across releases (1.6.6 prefix change, 1.13.x additions, 2.x ISM removal + pipeline demotion)

Verification
Scoped to 2.0.x and checked against the 2.0.5 search-client source (OpenSearchClient, OpenSearchEntityManager, OpenSearchGenericManager, OpenSearchVectorService, OpenSearchDataInsightsClient). Key deltas vs the issue's 1.13.1 enumeration: ISM policy management was removed in 2.x (only migration-cleanup DELETE remains, so cluster:admin/opendistro/ism/policy/* is migration-only), and the hybrid-search pipeline became best-effort (ad-hoc inlined pipelines need no cluster privilege), so cluster:admin/search/pipeline/* is now optional.

For reviewers — two judgment calls worth confirming:

  1. The .ds-<prefix>-di-* backing-index pattern is documented as no longer needed on 2.x (nothing targets .ds-* directly since ISM removal), but this was verified from source, not a live FGAC cluster.
  2. Exact data-stream permission strings may vary by OpenSearch version — flagged in the page as "validate in your environment".

Also linked from the EKS deployment page (the reporter's environment) and registered in menu.md.

Documents the minimal OpenSearch security permissions the OpenMetadata
server backend needs when running against a security-enabled cluster
(FGAC / security plugin), scoped to 2.0.x and verified against the 2.0.5
search-client source. Includes index patterns, cluster permissions with
'when needed' guidance, a ready-to-use role example, and the permission
changes across releases (1.6.6, 1.13.x, 2.x).
Copilot AI balanced review requested due to automatic review settings October 14, 2026 09:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@ayush-shah ayush-shah left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential finding on the reviewed commit; please verify the scenario below.

{
"index_patterns": ["openmetadata_*", "openmetadata-di-*"],
"allowed_actions": [
"crud",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Potential P2] Include index creation in the example security role

Copying this ready-to-use role for an OpenMetadata 2.0.5 server denies creation of its entity search indexes: crud grants data reads/writes, but no listed action grants indices:admin/create. The pinned 2.0.5 OpenSearchIndexManager explicitly calls client.indices().create(...), so initializing or rebuilding missing indexes cannot complete with this role alone. Add create_index (or indices:admin/create) on the entity index pattern and verify the complete role on a fresh FGAC deployment.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, thanks. Verified against the 2.0.5 OpenSearchIndexManager, which calls client.indices().create(...) when initializing missing indexes, and crud does not grant indices:admin/create. Added the create_index action group to the example role and mentioned index creation in the operations list.

The crud action group does not grant indices:admin/create, but the
2.0.5 OpenSearchIndexManager calls client.indices().create(...) when
initializing missing entity search indexes, so a role copied from
this example could not create them. Add the create_index action
group to the example role and mention index creation in the
operations list.

Signed-off-by: Shahzeb Ali <126076773+Shahzeb-DataEngineer@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants