Repository navigation
identity: the key is sealed for attested runners; the control plane loses kms:Sign (I6) - #28
Merged
Merged
Conversation
…oses kms:Sign The identity key becomes a P-256 data key pair KMS makes for the control plane without its plaintext, under a symmetric key whose policy opens it only with Recipient to the runner's PCRs and denies the control plane's role every use but making it unseen. The control plane grants it under a role of its own; runners record what they sign under their own name and read the rosters; no role deletes a roster or the key. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I6, with spin-stack/spin#286 (security zone: the user reviews).
identity.tf. The identity key is no longer a SIGN_VERIFY key the control plane signs with. It becomes a symmetric keyspin-identitythat seals an ECDSA P-256 data key pair, which KMS makes for the control plane without its plaintext. The key policy:GenerateDataKeyPairWithoutPlaintext(P-256, in the identity's context);Decryptonly withRecipientand the runner's PCR4/7/12;Decryptwithout attestation to everyone;The key is
prevent_destroyand rotated.iam.tf.SignItsWorkspacesIdentityis gone. The control plane's role has no KMS action of its own.identity/issued/*and the CA, and readsrosters/*.boundary.tf. No role deletes a roster version,identity/issuer.jsonoridentity/x509-ca.der: a delete marker over a roster is a member put back.config.tf. The document namesidentity = {key, role}.outputs.tf.identity_documentsreads the public half fromissuer.json.Tests. The posture test
a_workspaces_identity_key_is_opened_only_by_an_attested_runnerreplaces the signing one. A planted P-384 pair spec fails it.Order: merges with spin#286, and is applied once a spin release carries it: a control plane before #286 signs with KMS, and would find no
kms:Sign.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.