Skip to content

feat(iam): enforce the effective action set on the fast path - #156

Closed
pyropy wants to merge 1 commit into
srdjan/feat/iam-permission-setfrom
srdjan/feat/iam-enforce-actions
Closed

pyropy wants to merge 1 commit into
srdjan/feat/iam-permission-setfrom
srdjan/feat/iam-enforce-actions

Conversation

@pyropy

@pyropy pyropy commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

A key granted only s3:PutObject could read and abort on the same bucket:
s3perm maps that permission to a command set containing every command
s3:GetObject, s3:ListBucket and s3:AbortMultipartUpload need, and the
fast path decided on a chain probe alone.

The authorize response's effective action set is now cached under the
bucket hilt named, with the same expiry as the derived keys and the
tenant. authorizeLocal reports authorized, denied or undecided: it
refuses an action the cached set excludes with AccessDenied, and defers
to hilt whenever no set is cached or the operation maps to no Forge
command.

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com


Stack created with GitHub Stacks CLI • Give Feedback 💬

A key granted only s3:PutObject could read and abort on the same bucket:
s3perm maps that permission to a command set containing every command
s3:GetObject, s3:ListBucket and s3:AbortMultipartUpload need, and the
fast path decided on a chain probe alone.

The authorize response's effective action set is now cached under the
bucket hilt named, with the same expiry as the derived keys and the
tenant. authorizeLocal reports authorized, denied or undecided: it
refuses an action the cached set excludes with AccessDenied, and defers
to hilt whenever no set is cached or the operation maps to no Forge
command.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@pyropy

pyropy commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

Opened by mistake by a stack re-submit; this branch's PR #133 was already closed as superseded by the per-key marker design in fil-one/RFC#30 (f61f474). Branch kept.

@pyropy pyropy closed this Sep 15, 2026
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