Skip to content

Authenticate cluster identities and authorize operations from applied policy - #691

Merged
aaltshuler merged 10 commits into
mainfrom
codex/identity-policy
Sep 16, 2026
Merged

aaltshuler merged 10 commits into
mainfrom
codex/identity-policy

Conversation

@aaltshuler

@aaltshuler aaltshuler commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Signed credentials currently duplicate graph/action permissions already held in policy. Version 2 credentials authenticate a principal for one cluster; the applied Cedar policy owns graph, schema and configuration permissions. Minimal discovery exposes every effective graph ID/name without granting access to data, schema or query definitions.

The shared cluster API authorizes the complete configuration plan against current applied policy, repeats checks under the existing lock, and refuses candidate self-grants, changed bases and pending recovery. Initial policy installation uses an exact first-initialization boundary. The new recovery probe inspects bounded storage metadata without opening or repairing the graph.

The CLI preserves complete typed HTTP errors for both --json and --format json. Denial regressions verify structured errors and unchanged graph snapshots/branch inventory.

Compatibility:

  • Normal managed issuance uses identity-only credentials. Published version-1 restricted credentials remain an explicit OSS compatibility profile and are never silently upgraded.
  • Direct/static authentication and storage-holder entry points retain their contracts.
  • Existing policy files need an explicit config_manage rule before identity-authorized configuration execution. Public exhaustive policy matches need the new ConfigManage/Cluster variants.
  • This change introduces no stored graph format change. It does not implement the configuration proposal in rfc: named targets and CLI coherency #675.

The accepted design is docs/rfcs/2026-09-09-identity-credentials-and-applied-policy.md. This PR builds on the merged bounded-transport change in #685.

Validation: the JSON-format failure was reproduced before the fix; four focused remote CLI tests and six policy-enforcement cases pass. Formatting, documentation and link checks pass; recovery code and tests use current seam APIs. On the final head, canonical local workspace/failpoint tests pass (3,182 passed, 25 ignored), as do 149 GQT library and 14 runner-dispatch tests. Full workspace, GQ, DST, server AWS, both RustFS suites and format/upgrade CI pass. Locally unconfigured cloud/predecessor fixtures are qualified by their configured CI jobs.

@aaltshuler
aaltshuler force-pushed the codex/identity-policy branch from 0b7cacf to 03914c3 Compare September 16, 2026 14:23
@aaltshuler
aaltshuler changed the base branch from main to codex/managed-load-demo September 16, 2026 14:23
@aaltshuler
aaltshuler force-pushed the codex/identity-policy branch from 03914c3 to 3b9edfa Compare September 16, 2026 14:47
@aaltshuler
aaltshuler changed the base branch from codex/managed-load-demo to main September 16, 2026 14:47
@aaltshuler
aaltshuler marked this pull request as ready for review September 16, 2026 14:47
@aaltshuler
aaltshuler merged commit 54627ec into main Sep 16, 2026
34 of 53 checks passed
@azimafroozeh
azimafroozeh deleted the codex/identity-policy branch September 29, 2026 15:15
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.

1 participant