Skip to content

feat: carry the principal on S3 authorize and bucket info results - #69

Closed
pyropy wants to merge 1 commit into
mainfrom
srdjan/feat/iam-principal-field
Closed

pyropy wants to merge 1 commit into
mainfrom
srdjan/feat/iam-principal-field

Conversation

@pyropy

@pyropy pyropy commented Sep 10, 2026

Copy link
Copy Markdown

Description

AuthorizeOK and InfoOK gain an optional principal: access key is bound to the principal, absent for a service key. Ingot indexes its per-key caches by tenant and principal from this field. Additive on the wire; /s3/bucket/create shares AuthorizeOK and carries it too. Part of the Forge S3 tenant IAM work (RFC).

Change log

  • Principal *string on AuthorizeOK and InfoOK, codecs regenerated
  • Tests: nil omits the key, a set value round-trips, empty string stays distinct from absent

馃 Generated with Claude Code

@pyropy
pyropy added this pull request to stack #71 September 10, 2026 16:10
Hilt binds an access key to a principal, and Ingot needs to know which
principal a key belongs to so it can drop the caches it holds for that
principal when a policy changes. Add an optional principal field to the
results of /s3/request/authorize and /s3/bucket/info. A key that is not
bound to a principal, such as a tenant-wide service credential, omits the
field, so an absent field and an empty identifier stay distinguishable on
the wire.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@pyropy
pyropy force-pushed the srdjan/feat/iam-principal-field branch from 4087054 to e056eb8 Compare September 11, 2026 09:03
@pyropy
pyropy marked this pull request as ready for review September 11, 2026 12:40
@pyropy
pyropy requested a review from alanshaw September 14, 2026 09:51
@pyropy pyropy self-assigned this Sep 14, 2026
@pyropy
pyropy requested review from Peeja and bajtos September 14, 2026 09:52
// Principal is the identifier of the principal the access key is bound to,
// unique within the tenant. It is nil for a service key, which carries its
// own permissions and buckets and is bound to no principal.
Principal *string `cborgen:"principal,omitempty" dagjsongen:"principal,omitempty"`

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.

What is a "principal"? In UCAN a principal is some agent identified by a DID. What are we actually referring to here?

@pyropy

pyropy commented Sep 15, 2026

Copy link
Copy Markdown
Author

Superseded by the per-key marker design in fil-one/RFC#30 (f61f474): no principal invalidation record; markers are revoked through the existing /ucan/revoke. 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.

2 participants