Skip to content

docs(gcp-backplane): record why GCP subjects are not scoped to a single BBD - #292

Merged
JohannesRudolph merged 2 commits into
mainfrom
docs/gcp-wif-subject-scope-rationale
Aug 25, 2026
Merged

docs(gcp-backplane): record why GCP subjects are not scoped to a single BBD#292
JohannesRudolph merged 2 commits into
mainfrom
docs/gcp-wif-subject-scope-rationale

Conversation

@JohannesRudolph

Copy link
Copy Markdown
Member

Follow-up to #291, which is closed and not being pursued.

GCP is the only backplane family that scopes workload identity federation to the workspace rather than to one building block definition. Next to modules/azure/, modules/aws/ and modules/stackit/ — all of which pin the definition uuid — that reads as an oversight. It is a decision, so this writes it down.

The note goes in .agents/references/gcp-backplane.md, directly after the subject-derivation idiom, and covers:

  • The cycle, in two sentences: pinning the uuid makes the pool provider depend on the definition, while the definition already depends on the backplane because it embeds credentials_json — whose audience is that same pool provider's resource name.
  • Why the workarounds cost more than the hardening is worth: a hand-assembled audience string with no compile-time check against the real resource, plus an inverted create order in which the pool provider becomes the last resource applied, after the definition is already live.
  • The accepted trade-off, with a guard against a future "fix": startsWith admits any definition owned by the same platform workspace, but authoring a definition there is already a privileged action that coincides with being able to change the backplane itself. Residual cost is audit attribution.

Docs only — no module or scorecard behaviour changes.

The underlying limitation is going to meshStack product separately, as a request to make a definition's WIF subject knowable before the definition exists.

🤖 Generated with Claude Code

…le BBD

GCP is the only backplane family that scopes workload identity federation to
the workspace rather than to one building block definition. That looks like an
oversight next to azure/aws/stackit, so write down that it is a decision: the
uuid cannot be pinned without closing a Terraform dependency cycle, and the
workarounds cost more than the hardening is worth for definitions owned by one
platform team.

Closes the question raised in #291, which is not being pursued.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Scorecard Check

No module changes detected relative to origin/main.

@aws-amplify-eu-central-1

Copy link
Copy Markdown

This pull request is automatically being deployed by Amplify Hosting (learn more).

Access this pull request here: https://pr-292.d1o16zfeoh2slu.amplifyapp.com

@JohannesRudolph
JohannesRudolph marked this pull request as ready for review August 25, 2026 15:22
@JohannesRudolph
JohannesRudolph merged commit 58434e2 into main Aug 25, 2026
2 of 3 checks passed
@JohannesRudolph
JohannesRudolph deleted the docs/gcp-wif-subject-scope-rationale branch August 25, 2026 15:22
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