From ea71ecd62a65bafb2eda8b68cde1a79fceae38c1 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:07:50 -0400 Subject: [PATCH 01/10] feat(accounts): put the two keys behind a selected key service, with a cloud KMS backend (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit accounts held its Ed25519 signing key and its envelope key in Vault, so a hosted deployment ran, unsealed, backed up and credentialled a stateful secrets store to hold two keys. This puts both behind one seam whose backend is selected by configuration, and adds a GCP Cloud KMS backend for the envelope key and the keyed hash: non-exportable keys, reached with the workload's own cloud identity, with key NAMES — not credentials, not files — in the `key-service` group. The stored form is unchanged for everything already sealed: a value keeps its `cfs1:vault-transit:` framing, and a Cloud KMS value adds its own tag beside it, so a read resolves the backend from the value rather than from whatever configuration was in force when it was written. That is what makes a cutover possible, and the Vault backend passes the same conformance suite as the new one. Six defects a review of the first draft found, each fixed at its cause: - The two legacy sweeps selected `secret_encrypted NOT LIKE 'cfs1:vault-transit:%'`, which is "not sealed by VAULT", not "not sealed". Under any other backend every sealed row matched, and the webhook sweep then re-sealed the envelope STRING as though it were the secret — doubly wrapped, unreadable, counted as a successful migration, and wrapped again on every restart. The consumer shares a webhook signing secret, so the host cannot regenerate it. The MFA sweep hit the same rows and refused boot instead, which masked the webhook case whenever a TOTP device existed. Both predicates now narrow only; `keyservice.IsEnvelopeFraming` decides, and it accepts framings this build cannot OPEN — refusing to open an unknown framing is correct, sweeping it is destruction. Proved against real Postgres: with the old predicate restored, the new tests fail on both a `gcp-kms` and a `cfs2` value. - Cloud KMS answers 400 for a ciphertext belonging to a DIFFERENT key, which the draft mapped to ErrInvalidSecretEnvelope — the sentinel that tells a datasource sync the credential is permanently unreadable and the user must reconnect. One mistyped KEY_SERVICE_KMS_ENVELOPE_KEY would have destroyed every tenant's credentials. Each ciphertext now records the key that sealed it, reads route on that rather than on the tag, a foreign key is a named configuration refusal, and the constructor proves a seal/open round trip at boot so a wrong key name refuses to start. - A keyed hash cannot be re-keyed, so the re-seal sweep cannot touch api_keys.key_hash, and the lookup is BY hash: every API key issued before a cutover stopped authenticating, reported as merely invalid. ValidateAPIKey now tries the outgoing backend's hash too, selected first so a settled deployment still does one lookup. - The `key-service` group did not exist, so nothing could select a backend through the configuration plane: group file, repo-root symlink, and the service manifest's dependency list. - The recorded key version was never validated on read, and two keys of one service could not both be bound — so a re-key, the migration most likely to be attempted, was inexpressible. Backends now carry an identity, not just a tag. - The tree did not compile and two test packages were broken. The KMS signing backend is cut rather than shipped unreachable: a Cloud KMS key cannot be exported, and the Work Context signer, the delegation minter and the OAuth state signer are each handed the key itself, so they must accept a crypto.Signer before `kms` can hold it. `KEY_SERVICE_SIGNING_BACKEND=kms` is refused by name, and a hosted cell runs `kms` for stored credentials with the signing key still on `vault`. Verified with codefly against real dependencies: ./pkg/infra and ./pkg/business boot store and Vault and are green, including the live Vault seal/open round trip that confirms the stored format did not move. Co-Authored-By: Claude Opus 5 (1M context) --- configurations/local/key-service.env | 1 + module/configurations/local/key-service.env | 81 +++ .../business/api_key_authentication_test.go | 79 +++ .../accounts/code/pkg/business/api_keys.go | 42 +- .../code/pkg/business/service_test.go | 16 +- .../infra/keyservice_migration_sweep_test.go | 122 ++++ .../accounts/code/pkg/infra/postgres_mfa.go | 11 +- .../pkg/infra/postgres_webhook_secrets.go | 15 +- .../services/accounts/code/pkg/infra/vault.go | 234 -------- .../code/pkg/infra/vault_hashkey_test.go | 49 -- .../code/pkg/infra/vault_relogin_test.go | 59 -- .../code/pkg/infra/vault_secret_test.go | 89 --- .../accounts/code/pkg/keyservice/cipher.go | 153 ++++++ .../code/pkg/keyservice/conformance_test.go | 520 ++++++++++++++++++ .../accounts/code/pkg/keyservice/envelope.go | 90 +++ .../code/pkg/keyservice/fake_backends_test.go | 421 ++++++++++++++ .../code/pkg/keyservice/keyservice.go | 116 ++++ .../accounts/code/pkg/keyservice/kms.go | 481 ++++++++++++++++ .../accounts/code/pkg/keyservice/load.go | 270 +++++++++ .../accounts/code/pkg/keyservice/vault.go | 245 +++++++++ .../code/pkg/keyservice/vault_test.go | 171 ++++++ module/services/accounts/code/work.go | 143 ++--- .../services/accounts/code/work_auth_test.go | 83 ++- module/services/accounts/service.codefly.yaml | 1 + 24 files changed, 2976 insertions(+), 516 deletions(-) create mode 120000 configurations/local/key-service.env create mode 100644 module/configurations/local/key-service.env create mode 100644 module/services/accounts/code/pkg/infra/keyservice_migration_sweep_test.go delete mode 100644 module/services/accounts/code/pkg/infra/vault.go delete mode 100644 module/services/accounts/code/pkg/infra/vault_hashkey_test.go delete mode 100644 module/services/accounts/code/pkg/infra/vault_relogin_test.go delete mode 100644 module/services/accounts/code/pkg/infra/vault_secret_test.go create mode 100644 module/services/accounts/code/pkg/keyservice/cipher.go create mode 100644 module/services/accounts/code/pkg/keyservice/conformance_test.go create mode 100644 module/services/accounts/code/pkg/keyservice/envelope.go create mode 100644 module/services/accounts/code/pkg/keyservice/fake_backends_test.go create mode 100644 module/services/accounts/code/pkg/keyservice/keyservice.go create mode 100644 module/services/accounts/code/pkg/keyservice/kms.go create mode 100644 module/services/accounts/code/pkg/keyservice/load.go create mode 100644 module/services/accounts/code/pkg/keyservice/vault.go create mode 100644 module/services/accounts/code/pkg/keyservice/vault_test.go diff --git a/configurations/local/key-service.env b/configurations/local/key-service.env new file mode 120000 index 000000000..5ef3877fd --- /dev/null +++ b/configurations/local/key-service.env @@ -0,0 +1 @@ +../../module/configurations/local/key-service.env \ No newline at end of file diff --git a/module/configurations/local/key-service.env b/module/configurations/local/key-service.env new file mode 100644 index 000000000..7d4d86df5 --- /dev/null +++ b/module/configurations/local/key-service.env @@ -0,0 +1,81 @@ +# Which service holds accounts' keys, and under what names. +# +# accounts holds two keys: the Ed25519 signing key behind every access token and +# the published JWKS, and the envelope key that seals stored credentials — +# source tokens, MFA seeds, WebAuthn credentials, webhook secrets — together +# with the keyed hash behind every API key. +# +# Which service holds them is a DEPLOYMENT decision and is selected here, never +# inferred. The two shapes have opposite custody models, so an unstated backend +# is refused by name rather than defaulted into either: +# +# vault an in-cluster HashiCorp Vault: KV v2 for the signing key, Transit for +# the envelope key and the keyed hash, reached with the AppRole +# credential the `vault` groups carry. A stateful secrets store the cell +# runs, unseals, backs up and credentials. +# kms the cell's cloud key-management service: keys that cannot be +# exported, reached with the workload's own cloud identity. No secrets +# store to run and no stored credential to rotate — the keys below are +# NAMES, and nothing here is a credential or a file. +# +# KEY_SERVICE_BACKEND seals stored credentials and computes the keyed +# hash. REQUIRED outside the local environment. +# KEY_SERVICE_PREVIOUS_BACKEND the backend a cutover is migrating AWAY from. +# Accepted on READ only — nothing new is sealed +# under it — and withdrawn once no stored value +# references it. Naming the same backend twice is +# refused: the re-seal sweep would be a no-op +# while reading as progress. +# KEY_SERVICE_SIGNING_BACKEND holds the access-token signing key. Defaults to +# KEY_SERVICE_BACKEND. +# +# The two families are selected separately because they move separately: an +# envelope key is migrated by re-sealing, which is reversible and invisible to +# users, while replacing the signing key either re-logs everyone in or needs both +# keys published across the cutover. +# +# `kms` is NOT yet selectable for the signing key, and accounts refuses it by +# name. A Cloud KMS key cannot be exported, and three consumers are handed the +# signing key rather than signing through the key service: the Work Context +# signer (github.com/codefly-dev/sdk-go/workcontext), the delegation minter +# (github.com/codefly-dev/core policy.MintEd25519) and the OAuth state signer's +# seed. Those have to accept a crypto.Signer first. A hosted cell therefore runs +# KEY_SERVICE_BACKEND=kms with the signing key still on `vault`. +KEY_SERVICE_BACKEND=vault +KEY_SERVICE_PREVIOUS_BACKEND= +KEY_SERVICE_SIGNING_BACKEND= + +# The cloud keys, by resource name, when a backend above is `kms`. Each is read +# as a value; there is no credential and no file anywhere in this binding — +# the workload authenticates as itself (on GCP the metadata server answers for +# the service account bound to the pod). +# +# Each is named in the shape its own rotation semantics demand, and the asymmetry +# matters because getting it wrong is silent: +# +# KEY_SERVICE_KMS_ENVELOPE_KEY a cryptoKey, purpose ENCRYPT_DECRYPT, algorithm +# GOOGLE_SYMMETRIC_ENCRYPTION. Encryption uses +# the key's primary version and each ciphertext +# records the version AND the key that sealed it, +# so rotation never makes an existing ciphertext +# unreadable, and a value sealed by a DIFFERENT +# key is reported as a configuration error rather +# than as a credential needing re-entry. +# projects//locations//keyRings//cryptoKeys/ +# KEY_SERVICE_KMS_MAC_KEY a cryptoKeyVERSION, algorithm HMAC_SHA256. The +# keyed hash is what a presented API key is +# looked up BY, so it must stay byte-identical +# for the life of the key: moving to another +# version silently stops every API key already +# stored from matching. Pinning the version here +# makes that a deliberate edit with a stated +# consequence instead of a side effect of +# rotating a key. +# …/cryptoKeys//cryptoKeyVersions/ +# +# accounts validates both at boot — purpose, algorithm, version state, and a +# seal/open round trip — so a misnamed, wrongly-typed or unreachable key refuses +# to start while the deployment can still be fixed, rather than surfacing on the +# first MFA enrolment or API-key lookup. +KEY_SERVICE_KMS_ENVELOPE_KEY= +KEY_SERVICE_KMS_MAC_KEY= diff --git a/module/services/accounts/code/pkg/business/api_key_authentication_test.go b/module/services/accounts/code/pkg/business/api_key_authentication_test.go index c1361ea8f..60df0dcd5 100644 --- a/module/services/accounts/code/pkg/business/api_key_authentication_test.go +++ b/module/services/accounts/code/pkg/business/api_key_authentication_test.go @@ -145,3 +145,82 @@ func TestCreateAPIKeyRefusesAScopeThatIsNotOneScope(t *testing.T) { require.ErrorContains(t, err, "stopped at the database") require.Equal(t, 1, transactions) } + +// hashKeyedStore answers only for the one hash a key is actually stored under, +// which is what makes the lookup's single-candidate assumption visible: the +// store is keyed BY hash, so a hash computed under a different key finds nothing +// and is indistinguishable from a revoked key. +type hashKeyedStore struct { + business.Store + storedUnder string + authentication *business.APIKeyAuthentication + lookups []string +} + +func (store *hashKeyedStore) GetAPIKeyAuthentication(_ context.Context, keyHash string) (*business.APIKeyAuthentication, error) { + store.lookups = append(store.lookups, keyHash) + if keyHash != store.storedUnder { + return nil, nil + } + return store.authentication, nil +} + +// cutoverHasher is a key service mid-cutover: it hashes new keys under the +// selected backend and can also produce the hash the outgoing backend wrote. +type cutoverHasher struct{ selected, previous string } + +func (h cutoverHasher) HashKey(context.Context, string) (string, error) { return h.selected, nil } + +func (h cutoverHasher) CandidateHashes(context.Context, string) ([]string, error) { + return []string{h.selected, h.previous}, nil +} + +// A keyed hash cannot be re-keyed — the plaintext is gone once the key is +// issued — so the re-seal sweep that rewrites every enveloped column cannot +// touch api_keys.key_hash. If the lookup used only the selected backend's hash, +// every API key issued before a key-service cutover would stop authenticating, +// reported as simply invalid. +func TestValidateAPIKeyFindsAKeyStoredUnderThePreviousBackend(t *testing.T) { + store := &hashKeyedStore{ + storedUnder: "hash-written-by-the-outgoing-backend", + authentication: &business.APIKeyAuthentication{ + Key: &gen.APIKey{UserId: "user", OrganizationId: "org"}, + Claims: business.APIKeyIdentityClaims{Member: true, OrgRole: "admin"}, + }, + } + service, err := business.NewService(store) + require.NoError(t, err) + service.SetHasher(cutoverHasher{ + selected: "hash-under-the-selected-backend", + previous: "hash-written-by-the-outgoing-backend", + }) + + response, err := service.ValidateAPIKey(context.Background(), "presented-key") + require.NoError(t, err) + require.True(t, response.Valid, + "a key issued before the cutover must still authenticate while the previous backend is bound") + require.Equal(t, + []string{"hash-under-the-selected-backend", "hash-written-by-the-outgoing-backend"}, + store.lookups, + "the selected backend's hash is tried first, so a settled deployment does one lookup") +} + +// Once the cutover is finished the previous backend is withdrawn and there is a +// single hash to look up: no extra query per validation. +func TestValidateAPIKeyDoesOneLookupWhenNoCutoverIsInProgress(t *testing.T) { + store := &hashKeyedStore{ + storedUnder: "hash", + authentication: &business.APIKeyAuthentication{ + Key: &gen.APIKey{UserId: "user", OrganizationId: "org"}, + Claims: business.APIKeyIdentityClaims{Member: true, OrgRole: "admin"}, + }, + } + service, err := business.NewService(store) + require.NoError(t, err) + service.SetHasher(staticKeyHasher{}) + + response, err := service.ValidateAPIKey(context.Background(), "presented-key") + require.NoError(t, err) + require.True(t, response.Valid) + require.Equal(t, []string{"hash"}, store.lookups) +} diff --git a/module/services/accounts/code/pkg/business/api_keys.go b/module/services/accounts/code/pkg/business/api_keys.go index fba81d6e2..d62256bfe 100644 --- a/module/services/accounts/code/pkg/business/api_keys.go +++ b/module/services/accounts/code/pkg/business/api_keys.go @@ -20,6 +20,34 @@ type KeyHasher interface { HashKey(ctx context.Context, plaintext string) (string, error) } +// MultiKeyHasher is a KeyHasher whose key service is mid-cutover and can +// therefore produce more than one hash a presented key may already be stored +// under: the selected backend's, and the one the outgoing backend wrote. +// +// A keyed hash cannot be re-keyed — the plaintext is gone once the key is +// issued — so the re-seal sweep that rewrites every enveloped column cannot +// touch api_keys.key_hash. Because the lookup is BY hash, a key issued under +// the outgoing backend is simply not found once the selected one changes, and +// "not found" is indistinguishable from "revoked" to the caller. Trying each +// candidate is what keeps existing keys authenticating across a cutover. +type MultiKeyHasher interface { + KeyHasher + CandidateHashes(ctx context.Context, plaintext string) ([]string, error) +} + +// candidateHashes is every hash a presented key could be stored under, most +// likely first. A hasher that is not mid-cutover yields exactly one. +func (s *Service) candidateHashes(ctx context.Context, plaintextKey string) ([]string, error) { + if multi, ok := s.hasher.(MultiKeyHasher); ok { + return multi.CandidateHashes(ctx, plaintextKey) + } + hash, err := s.hasher.HashKey(ctx, plaintextKey) + if err != nil { + return nil, err + } + return []string{hash}, nil +} + // CreateAPIKey generates a new API key, hashes it via vault, and stores the hash. func (s *Service) CreateAPIKey(ctx context.Context, userID string, req *gen.CreateAPIKeyRequest) (*gen.CreateAPIKeyResponse, error) { w := wool.Get(ctx).In("CreateAPIKey") @@ -103,14 +131,20 @@ func (s *Service) ValidateAPIKey(ctx context.Context, plaintextKey string) (*gen return nil, w.NewError("key hasher not configured") } - keyHash, err := s.hasher.HashKey(ctx, plaintextKey) + candidates, err := s.candidateHashes(ctx, plaintextKey) if err != nil { return nil, w.Wrapf(err, "cannot hash key") } - authentication, err := s.store.GetAPIKeyAuthentication(ctx, keyHash) - if err != nil { - return nil, w.Wrapf(err, "cannot look up key") + var authentication *APIKeyAuthentication + for _, keyHash := range candidates { + authentication, err = s.store.GetAPIKeyAuthentication(ctx, keyHash) + if err != nil { + return nil, w.Wrapf(err, "cannot look up key") + } + if authentication != nil && authentication.Key != nil { + break + } } if authentication == nil || authentication.Key == nil { return &gen.ValidateAPIKeyResponse{Valid: false}, nil diff --git a/module/services/accounts/code/pkg/business/service_test.go b/module/services/accounts/code/pkg/business/service_test.go index 800624ed8..19c1b03b8 100644 --- a/module/services/accounts/code/pkg/business/service_test.go +++ b/module/services/accounts/code/pkg/business/service_test.go @@ -3,6 +3,7 @@ package business_test import ( + "accounts/pkg/keyservice" "crypto/ed25519" authcore "accounts/pkg/auth" @@ -148,13 +149,14 @@ func runBusinessTests(m *testing.M) int { } service.SetWebhookJobProducer(store) - // Wire optional components - vaultClient, err := infra.NewVaultClient(ctx) - if err == nil { - service.SetHasher(vaultClient) - service.SetMFASecretCipher(vaultClient) - service.SetOrgIdentityProviderCipher(vaultClient) - service.SetConnectorCipher(vaultClient) + // Wire optional components. The key service is bound exactly as work.go + // binds it, so these suites exercise the real stored envelope format rather + // than a stand-in that cannot disagree with it. + if keys, err := keyservice.Load(ctx); err == nil { + service.SetHasher(keys.Cipher) + service.SetMFASecretCipher(keys.Cipher) + service.SetOrgIdentityProviderCipher(keys.Cipher) + service.SetConnectorCipher(keys.Cipher) } // New auth pipeline: IdentityResolver + JWTMinter both backed by Postgres. diff --git a/module/services/accounts/code/pkg/infra/keyservice_migration_sweep_test.go b/module/services/accounts/code/pkg/infra/keyservice_migration_sweep_test.go new file mode 100644 index 000000000..6af3d67da --- /dev/null +++ b/module/services/accounts/code/pkg/infra/keyservice_migration_sweep_test.go @@ -0,0 +1,122 @@ +//go:build !pure + +package infra_test + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + "accounts/pkg/business" + "accounts/pkg/infra/storetx" + "accounts/pkg/keyservice" +) + +// The legacy sweeps upgrade PRE-ENVELOPE plaintext. They must not touch a value +// another key-service backend already sealed. +// +// The predicate used to be "not sealed by Vault", which is not the same question: +// a value sealed by any other backend — or under a later framing, like the +// per-purpose Transit split — matches it, and the sweep then re-seals the +// ENVELOPE STRING as though it were the secret. The row ends up doubly wrapped, +// unreadable forever, counted as a successful migration, and wrapped once more on +// every restart. For a webhook secret that is unrecoverable: the consumer shares +// it, so the host cannot regenerate it. +// +// Each sweep is asserted on its own fixture. The MFA sweep runs first in +// work.go, so a fixture carrying both would fail there and never exercise the +// webhook sweep — a test that passed for the wrong reason and would go green +// while webhook secrets were still being destroyed. + +// foreignBackendCipher seals under a backend this deployment does not bind, and +// refuses to be used as one: the sweep must skip its values without ever calling +// it, so any call is the failure. +type foreignBackendCipher struct{ t *testing.T } + +func (c foreignBackendCipher) EncryptSecret(_ context.Context, purpose, plaintext string) (string, error) { + c.t.Fatalf("the sweep re-sealed a value another backend had already sealed (purpose %q): %q", purpose, plaintext) + return "", nil +} + +func (c foreignBackendCipher) DecryptSecret(_ context.Context, _, envelope string) (string, error) { + return envelope, nil +} + +func foreignEnvelopes() map[string]string { + return map[string]string{ + "cloud kms": keyservice.Envelope{ + Backend: keyservice.TagGCPKMS, + Payload: "1:" + "Zmluz2VyAAAAAAAA" + ":Y2lwaGVydGV4dA", + }.String(), + // A framing this build cannot open is still an envelope, and sweeping it + // is destruction rather than a refusal. + "a later framing": "cfs2:vault-transit:mfa-totp:Y2lwaGVydGV4dA", + } +} + +func TestMigrateLegacyMFASecretsLeavesAnotherBackendsEnvelopeAlone(t *testing.T) { + for name, sealed := range foreignEnvelopes() { + t.Run(name, func(t *testing.T) { + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, `DELETE FROM mfa_devices`) + return err + })) + userID := seedUser(t) + device := &business.MFADevice{ + ID: business.NewIDString(), UserID: userID, DeviceType: "totp", + Name: "Sealed elsewhere", SecretEncrypted: sealed, + } + require.NoError(t, testStore.WithUserTx(testCtx, userID, func(ctx context.Context) error { + return testStore.CreateMFADevice(ctx, device) + })) + + migrated, err := testStore.MigrateLegacyMFASecrets(testCtx, foreignBackendCipher{t}) + require.NoError(t, err, + "a foreign envelope must not be read as a legacy base32 seed, which refuses boot") + require.Zero(t, migrated) + + require.NoError(t, testStore.WithUserTx(testCtx, userID, func(ctx context.Context) error { + got, err := testStore.GetMFADevice(ctx, device.ID) + require.NoError(t, err) + require.Equal(t, sealed, got.SecretEncrypted, "the stored envelope must be untouched") + return nil + })) + }) + } +} + +func TestMigrateLegacyWebhookSecretsLeavesAnotherBackendsEnvelopeAlone(t *testing.T) { + for name, sealed := range foreignEnvelopes() { + t.Run(name, func(t *testing.T) { + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, `DELETE FROM webhook_subscriptions`) + return err + })) + ownerID := seedUser(t) + orgID := seedOrg(t, ownerID) + subscription := &business.WebhookSubscription{ + ID: business.NewIDString(), OrgID: orgID, + URL: "https://example.com/hooks", Events: []string{"saas.user.registered"}, + SecretEncrypted: sealed, Active: true, + } + require.NoError(t, testStore.WithOrgTx(testCtx, orgID, func(ctx context.Context) error { + return testStore.CreateWebhookSubscription(ctx, subscription) + })) + + migrated, disabled, err := testStore.MigrateLegacyWebhookSecrets(testCtx, foreignBackendCipher{t}) + require.NoError(t, err) + require.Zero(t, migrated) + require.Zero(t, disabled) + + require.NoError(t, testStore.WithOrgTx(testCtx, orgID, func(ctx context.Context) error { + got, err := testStore.GetWebhookSubscription(ctx, subscription.ID) + require.NoError(t, err) + require.Equal(t, sealed, got.SecretEncrypted, + "the stored envelope must be untouched, not re-sealed as its own plaintext") + require.True(t, got.Active, "a sealed secret is not an empty one, so the endpoint stays active") + return nil + })) + }) + } +} diff --git a/module/services/accounts/code/pkg/infra/postgres_mfa.go b/module/services/accounts/code/pkg/infra/postgres_mfa.go index 9d74eae5e..ea7ef7a5a 100644 --- a/module/services/accounts/code/pkg/infra/postgres_mfa.go +++ b/module/services/accounts/code/pkg/infra/postgres_mfa.go @@ -11,6 +11,7 @@ import ( "github.com/jackc/pgx/v5" "accounts/pkg/business" + "accounts/pkg/keyservice" ) // Compile-time check that PostgresStore implements MFAStore. @@ -33,7 +34,7 @@ func (s *PostgresStore) MigrateLegacyMFASecrets(ctx context.Context, cipher busi SELECT id, user_id, secret_encrypted FROM mfa_devices WHERE device_type = 'totp' - AND secret_encrypted NOT LIKE 'cfs1:vault-transit:%'`) + AND secret_encrypted NOT LIKE 'cfs%'`) if err != nil { return err } @@ -52,6 +53,14 @@ func (s *PostgresStore) MigrateLegacyMFASecrets(ctx context.Context, cipher busi migrated := 0 for _, item := range legacy { + // The SQL predicate above narrows; this decides. A value already sealed + // by ANY backend or framing is not legacy plaintext, and treating one as + // plaintext would re-seal the envelope STRING — storing a doubly-wrapped + // payload nothing can read. The SQL cannot be the authority because it + // would have to enumerate every present and future framing. + if keyservice.IsEnvelopeFraming(item.plaintext) { + continue + } if _, err := base32.StdEncoding.WithPadding(base32.NoPadding).DecodeString(strings.ToUpper(item.plaintext)); err != nil { return migrated, fmt.Errorf("legacy MFA secret %s is not valid base32: %w", item.id, err) } diff --git a/module/services/accounts/code/pkg/infra/postgres_webhook_secrets.go b/module/services/accounts/code/pkg/infra/postgres_webhook_secrets.go index 09f52f4ed..e392ecbcb 100644 --- a/module/services/accounts/code/pkg/infra/postgres_webhook_secrets.go +++ b/module/services/accounts/code/pkg/infra/postgres_webhook_secrets.go @@ -11,10 +11,9 @@ import ( "github.com/jackc/pgx/v5" "accounts/pkg/business" + "accounts/pkg/keyservice" ) -const vaultSecretEnvelopePrefix = "cfs1:vault-transit:" - // MigrateLegacyWebhookSecrets upgrades pre-migration plaintext keys before the // server accepts requests. Empty legacy keys came from the old broken create // path; they receive an encrypted random replacement and are disabled because @@ -32,7 +31,7 @@ func (s *PostgresStore) MigrateLegacyWebhookSecrets(ctx context.Context, cipher rows, err := s.getQueryExecutor(ctx).Query(ctx, ` SELECT id::text, org_id::text, secret_encrypted, active FROM webhook_subscriptions - WHERE secret_encrypted NOT LIKE $1`, vaultSecretEnvelopePrefix+"%") + WHERE secret_encrypted NOT LIKE 'cfs%'`) if err != nil { return err } @@ -50,6 +49,16 @@ func (s *PostgresStore) MigrateLegacyWebhookSecrets(ctx context.Context, cipher } for _, item := range legacy { + // The SQL predicate above narrows; this decides. A value already sealed + // by ANY backend or framing is not legacy plaintext. Without this guard + // a deployment that selected a different key service would have every + // webhook signing secret re-sealed as though the envelope string were + // the secret — unreadable afterwards, counted as success, and wrapped + // once more on every restart. The secret is shared with the consumer, so + // the host cannot regenerate it. + if keyservice.IsEnvelopeFraming(item.plaintext) { + continue + } plaintext := item.plaintext shouldDisable := strings.TrimSpace(plaintext) == "" if shouldDisable { diff --git a/module/services/accounts/code/pkg/infra/vault.go b/module/services/accounts/code/pkg/infra/vault.go deleted file mode 100644 index 61d2375dd..000000000 --- a/module/services/accounts/code/pkg/infra/vault.go +++ /dev/null @@ -1,234 +0,0 @@ -package infra - -import ( - "accounts/pkg/business" - "accounts/pkg/vaultconnection" - "context" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "io" - "net/http" - "strings" -) - -// VaultClient provides transit encryption and hashing via HashiCorp Vault. -type VaultClient struct { - address string - token string - transitKey string - connection *vaultconnection.Connection -} - -func NewVaultClient(ctx context.Context) (*VaultClient, error) { - connection, err := vaultconnection.Load(ctx) - if err != nil { - return nil, err - } - return &VaultClient{address: connection.Address, transitKey: "api-keys", connection: connection}, nil -} - -// NewVaultClientDirect creates a vault client with explicit address and token (for local/test use). -func NewVaultClientDirect(address, token string) *VaultClient { - return &VaultClient{ - address: address, - token: token, - transitKey: "api-keys", - } -} - -// Health hits Vault's /v1/sys/health endpoint and returns nil only on -// the canonical 200 / 429 / 472 / 473 codes that signal a reachable -// + un-sealed vault. Used by the /v1/status probe — needs to be -// fast enough for the 2s budget. -func (v *VaultClient) Health(ctx context.Context) error { - req, err := http.NewRequestWithContext(ctx, http.MethodGet, v.address+"/v1/sys/health", nil) - if err != nil { - return err - } - resp, err := v.httpClient().Do(req) - if err != nil { - return err - } - defer func() { _ = resp.Body.Close() }() - // Vault docs: 200 standby/active OK, 429 standby (still up), - // 472/473 disaster-recovery secondary. Anything else = unhealthy. - switch resp.StatusCode { - case http.StatusOK, http.StatusTooManyRequests, 472, 473: - return nil - default: - return fmt.Errorf("vault unhealthy: HTTP %d", resp.StatusCode) - } -} - -// HashKey hashes an API key using Vault transit HMAC. -// -// There is intentionally no local fallback: silently downgrading to -// SHA-256 on a Vault error would produce a hash that never matches the -// HMAC written for the same key once Vault recovers, so verification -// would break for any key created during the outage. Failing closed keeps -// creation and verification on a single, keyed algorithm. -func (v *VaultClient) HashKey(ctx context.Context, plaintext string) (string, error) { - input := base64.StdEncoding.EncodeToString([]byte(plaintext)) - body := fmt.Sprintf(`{"input":"%s"}`, input) - - result, err := v.request(ctx, http.MethodPost, - fmt.Sprintf("/v1/transit/hmac/%s", v.transitKey), body) - if err != nil { - return "", fmt.Errorf("vault hmac request: %w", err) - } - - hmac, ok := result["hmac"].(string) - if !ok || hmac == "" { - return "", fmt.Errorf("vault transit response missing hmac") - } - return hmac, nil -} - -const secretEnvelopePrefix = "cfs1:vault-transit:" - -// EncryptSecret stores a purpose-bound JSON payload in Vault Transit and wraps -// the Vault ciphertext in an application-versioned envelope. There is -// intentionally no plaintext/local fallback for MFA seeds. -func (v *VaultClient) EncryptSecret(ctx context.Context, purpose, plaintext string) (string, error) { - if purpose == "" || plaintext == "" { - return "", fmt.Errorf("vault secret encryption requires purpose and plaintext") - } - payload, err := json.Marshal(struct { - Purpose string `json:"purpose"` - Value string `json:"value"` - }{Purpose: purpose, Value: plaintext}) - if err != nil { - return "", err - } - body, err := json.Marshal(map[string]string{ - "plaintext": base64.StdEncoding.EncodeToString(payload), - }) - if err != nil { - return "", err - } - result, err := v.request(ctx, http.MethodPost, - fmt.Sprintf("/v1/transit/encrypt/%s", v.transitKey), string(body)) - if err != nil { - return "", err - } - ciphertext, ok := result["ciphertext"].(string) - if !ok || ciphertext == "" { - return "", fmt.Errorf("vault transit response missing ciphertext") - } - return secretEnvelopePrefix + base64.RawURLEncoding.EncodeToString([]byte(ciphertext)), nil -} - -// DecryptSecret accepts only the current application envelope, decrypts with -// Vault Transit (which handles its own key-version prefix), and verifies the -// purpose embedded inside the ciphertext. -func (v *VaultClient) DecryptSecret(ctx context.Context, purpose, envelope string) (string, error) { - if purpose == "" || !strings.HasPrefix(envelope, secretEnvelopePrefix) { - return "", fmt.Errorf("unsupported secret envelope: %w", business.ErrInvalidSecretEnvelope) - } - encoded := strings.TrimPrefix(envelope, secretEnvelopePrefix) - ciphertext, err := base64.RawURLEncoding.DecodeString(encoded) - if err != nil || len(ciphertext) == 0 { - return "", fmt.Errorf("invalid secret envelope: %w", business.ErrInvalidSecretEnvelope) - } - body, err := json.Marshal(map[string]string{"ciphertext": string(ciphertext)}) - if err != nil { - return "", err - } - result, err := v.request(ctx, http.MethodPost, - fmt.Sprintf("/v1/transit/decrypt/%s", v.transitKey), string(body)) - if err != nil { - return "", err - } - encodedPlaintext, ok := result["plaintext"].(string) - if !ok || encodedPlaintext == "" { - return "", fmt.Errorf("vault transit response missing plaintext") - } - plaintext, err := base64.StdEncoding.DecodeString(encodedPlaintext) - if err != nil { - return "", fmt.Errorf("decode vault plaintext: %w", err) - } - var payload struct { - Purpose string `json:"purpose"` - Value string `json:"value"` - } - if err := json.Unmarshal(plaintext, &payload); err != nil { - return "", fmt.Errorf("decode secret payload: %w", business.ErrInvalidSecretEnvelope) - } - if payload.Purpose != purpose || payload.Value == "" { - return "", fmt.Errorf("secret purpose mismatch: %w", business.ErrInvalidSecretEnvelope) - } - return payload.Value, nil -} - -func (v *VaultClient) request(ctx context.Context, method, path, body string) (map[string]interface{}, error) { - data, err := v.requestOnce(ctx, method, path, body) - var refused *vaultHTTPError - if v.connection != nil && errors.As(err, &refused) && refused.status == http.StatusForbidden { - // Vault refused the token itself (revoked, or its lease ended early): - // a Kubernetes-auth connection logs in again and this call is retried - // once. A second refusal is a policy answer and is returned as is. - v.connection.Invalidate() - return v.requestOnce(ctx, method, path, body) - } - return data, err -} - -func (v *VaultClient) requestOnce(ctx context.Context, method, path, body string) (map[string]interface{}, error) { - var bodyReader io.Reader - if body != "" { - bodyReader = strings.NewReader(body) - } - - req, err := http.NewRequestWithContext(ctx, method, v.address+path, bodyReader) - if err != nil { - return nil, err - } - token := v.token - if v.connection != nil { - token, err = v.connection.Token() - if err != nil { - return nil, err - } - } - req.Header.Set("X-Vault-Token", token) - req.Header.Set("Content-Type", "application/json") - - resp, err := v.httpClient().Do(req) - if err != nil { - return nil, err - } - defer func() { _ = resp.Body.Close() }() - - respBody, _ := io.ReadAll(resp.Body) - - if resp.StatusCode >= 400 { - return nil, &vaultHTTPError{status: resp.StatusCode} - } - - var envelope struct { - Data map[string]interface{} `json:"data"` - } - if err := json.Unmarshal(respBody, &envelope); err != nil { - return nil, err - } - return envelope.Data, nil -} - -func (v *VaultClient) httpClient() *http.Client { - if v.connection != nil { - return v.connection.Client - } - return http.DefaultClient // explicit local/test constructor -} - -// Preserve a typed status without retaining provider bodies or secret material. -type vaultHTTPError struct { - status int -} - -func (e *vaultHTTPError) Error() string { - return fmt.Sprintf("vault request returned %d", e.status) -} -func (e *vaultHTTPError) HTTPStatusCode() int { return e.status } diff --git a/module/services/accounts/code/pkg/infra/vault_hashkey_test.go b/module/services/accounts/code/pkg/infra/vault_hashkey_test.go deleted file mode 100644 index 4467d5bf3..000000000 --- a/module/services/accounts/code/pkg/infra/vault_hashkey_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package infra - -import ( - "net/http" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestHashKeyReturnsVaultHMAC(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "/v1/transit/hmac/api-keys", r.URL.Path) - w.Header().Set("Content-Type", "application/json") - _, _ = w.Write([]byte(`{"data":{"hmac":"vault:v1:abc123"}}`)) - })) - defer server.Close() - - client := NewVaultClientDirect(server.URL, "test-token") - hash, err := client.HashKey(t.Context(), "cfly_sk_live_secret") - require.NoError(t, err) - require.Equal(t, "vault:v1:abc123", hash) -} - -// TestHashKeyFailsClosedOnVaultError proves HashKey no longer downgrades to a -// local SHA-256 when Vault errors: a silent downgrade would produce a hash that -// never matches the HMAC written for the same key once Vault recovers. -func TestHashKeyFailsClosedOnVaultError(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - http.Error(w, "sealed", http.StatusInternalServerError) - })) - defer server.Close() - - client := NewVaultClientDirect(server.URL, "test-token") - _, err := client.HashKey(t.Context(), "cfly_sk_live_secret") - require.Error(t, err) -} - -func TestHashKeyFailsClosedOnMissingHMAC(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - _, _ = w.Write([]byte(`{"data":{}}`)) - })) - defer server.Close() - - client := NewVaultClientDirect(server.URL, "test-token") - _, err := client.HashKey(t.Context(), "cfly_sk_live_secret") - require.ErrorContains(t, err, "missing hmac") -} diff --git a/module/services/accounts/code/pkg/infra/vault_relogin_test.go b/module/services/accounts/code/pkg/infra/vault_relogin_test.go deleted file mode 100644 index 3b1cb5428..000000000 --- a/module/services/accounts/code/pkg/infra/vault_relogin_test.go +++ /dev/null @@ -1,59 +0,0 @@ -package infra - -import ( - "accounts/pkg/vaultconnection" - "context" - "encoding/json" - "fmt" - "net/http" - "net/http/httptest" - "strings" - "sync" - "testing" - - "github.com/stretchr/testify/require" -) - -// A Transit call whose token Vault has revoked logs in again and is retried -// once, instead of failing every call until the cached token's lease ends. -func TestVaultClientLogsInAgainWhenVaultRefusesItsToken(t *testing.T) { - var mu sync.Mutex - logins, transit := 0, []string{} - // Plain http on loopback: the binding has no CA to pin anywhere any more, - // so a TLS fixture would exercise a transport the contract does not have. - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - mu.Lock() - defer mu.Unlock() - w.Header().Set("Content-Type", "application/json") - switch { - case r.URL.Path == "/v1/auth/approle/login": - logins++ - _ = json.NewEncoder(w).Encode(map[string]any{"auth": map[string]any{ - "client_token": fmt.Sprintf("token-%d", logins), "lease_duration": 3600, "renewable": true, - }}) - case strings.HasPrefix(r.URL.Path, "/v1/transit/encrypt/"): - token := r.Header.Get("X-Vault-Token") - transit = append(transit, token) - if token == "token-1" { // revoked out from under the client - w.WriteHeader(http.StatusForbidden) - return - } - _, _ = fmt.Fprint(w, `{"data":{"ciphertext":"vault:v1:sealed"}}`) - default: - w.WriteHeader(http.StatusNotFound) - } - })) - defer server.Close() - connection, err := vaultconnection.New(vaultconnection.Config{ - Address: server.URL, - AppRole: &vaultconnection.AppRoleAuth{RoleID: "role-fixture", SecretID: "secret-fixture"}, - Runtime: vaultconnection.RuntimeLocal, - }) - require.NoError(t, err) - client := &VaultClient{address: connection.Address, transitKey: "api-keys", connection: connection} - - _, err = client.request(context.Background(), http.MethodPost, "/v1/transit/encrypt/api-keys", `{"plaintext":"eA=="}`) - require.NoError(t, err) - require.Equal(t, []string{"token-1", "token-2"}, transit) - require.Equal(t, 2, logins) -} diff --git a/module/services/accounts/code/pkg/infra/vault_secret_test.go b/module/services/accounts/code/pkg/infra/vault_secret_test.go deleted file mode 100644 index 415057d6f..000000000 --- a/module/services/accounts/code/pkg/infra/vault_secret_test.go +++ /dev/null @@ -1,89 +0,0 @@ -package infra - -import ( - "accounts/pkg/business" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/http/httptest" - "strings" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestVaultSecretCipherVersionedPurposeBoundRoundTrip(t *testing.T) { - var encryptedPayload string - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "test-token", r.Header.Get("X-Vault-Token")) - var body map[string]string - require.NoError(t, json.NewDecoder(r.Body).Decode(&body)) - w.Header().Set("Content-Type", "application/json") - switch r.URL.Path { - case "/v1/transit/encrypt/api-keys": - encryptedPayload = body["plaintext"] - _, _ = fmt.Fprint(w, `{"data":{"ciphertext":"vault:v7:test-ciphertext"}}`) - case "/v1/transit/decrypt/api-keys": - require.Equal(t, "vault:v7:test-ciphertext", body["ciphertext"]) - _ = json.NewEncoder(w).Encode(map[string]any{"data": map[string]string{"plaintext": encryptedPayload}}) - default: - http.NotFound(w, r) - } - })) - defer server.Close() - - client := NewVaultClientDirect(server.URL, "test-token") - envelope, err := client.EncryptSecret(t.Context(), "mfa-totp", "TOP-SECRET-SEED") - require.NoError(t, err) - require.True(t, strings.HasPrefix(envelope, secretEnvelopePrefix)) - require.NotContains(t, envelope, "TOP-SECRET-SEED") - - plaintext, err := client.DecryptSecret(t.Context(), "mfa-totp", envelope) - require.NoError(t, err) - require.Equal(t, "TOP-SECRET-SEED", plaintext) - - _, err = client.DecryptSecret(t.Context(), "different-purpose", envelope) - require.ErrorContains(t, err, "purpose mismatch") - require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) -} - -func TestVaultSecretCipherRejectsLegacyPlaintextAndMalformedEnvelope(t *testing.T) { - client := NewVaultClientDirect("http://unused.invalid", "token") - _, err := client.DecryptSecret(t.Context(), "mfa-totp", "PLAINTEXTBASE32") - require.ErrorContains(t, err, "unsupported secret envelope") - require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) - - _, err = client.DecryptSecret(t.Context(), "mfa-totp", secretEnvelopePrefix+base64.RawURLEncoding.EncodeToString(nil)) - require.ErrorContains(t, err, "invalid secret envelope") - require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) -} - -func TestVaultDecryptOutageIsNotAnInvalidCredential(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - w.WriteHeader(http.StatusServiceUnavailable) - })) - defer server.Close() - client := NewVaultClientDirect(server.URL, "token") - envelope := secretEnvelopePrefix + base64.RawURLEncoding.EncodeToString([]byte("vault:v1:ciphertext")) - _, err := client.DecryptSecret(t.Context(), "datasource", envelope) - require.Error(t, err) - require.NotErrorIs(t, err, business.ErrInvalidSecretEnvelope) -} - -func TestVaultDecryptExposesStatusWithoutProviderBody(t *testing.T) { - for _, code := range []int{400, 403, 503} { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(code) - _, _ = fmt.Fprint(w, "sensitive-provider-body") - })) - client := NewVaultClientDirect(server.URL, "token") - _, err := client.DecryptSecret(t.Context(), "purpose", secretEnvelopePrefix+base64.RawURLEncoding.EncodeToString([]byte("vault:v1:old"))) - var typed interface{ HTTPStatusCode() int } - require.True(t, errors.As(err, &typed)) - require.Equal(t, code, typed.HTTPStatusCode()) - require.NotContains(t, err.Error(), "sensitive-provider-body") - server.Close() - } -} diff --git a/module/services/accounts/code/pkg/keyservice/cipher.go b/module/services/accounts/code/pkg/keyservice/cipher.go new file mode 100644 index 000000000..1ae76ddbf --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/cipher.go @@ -0,0 +1,153 @@ +package keyservice + +import ( + "context" + "errors" + "fmt" +) + +// Cipher is the key service as accounts' stored-credential callers see it: one +// backend that seals, and — during a cutover — the backend being migrated away +// from, accepted on read only. +// +// It implements business.SecretCipher and business.KeyHasher, so selecting a +// backend changes nothing above this type. +type Cipher struct { + seal Sealer + previous Sealer +} + +// NewCipher builds the cipher over the backend that seals and, when a cutover +// is in progress, the one being migrated away from. previous may be nil. +func NewCipher(seal, previous Sealer) (*Cipher, error) { + if seal == nil { + return nil, errors.New("key service: a sealing backend is required") + } + // Two backends sharing a TAG are fine — a re-key from one Cloud KMS key to + // another is a real cutover, and the envelope names the key so reads route + // correctly. What is refused is a previous backend that would accept the + // very envelopes the selected one writes: nothing would ever be re-sealed, + // and the sweep would report progress while doing nothing. + if previous != nil && previous.Identity() == seal.Identity() { + return nil, fmt.Errorf("key service: the previous backend is the same key as the selected one (%s); a cutover has two distinct backends or none, and naming one twice would make the sweep that re-seals every stored credential a no-op while reading as progress", seal.Identity()) + } + return &Cipher{seal: seal, previous: previous}, nil +} + +// SealsWith is the tag every value this cipher seals is stored under. A +// migration sweep uses it to recognise what it has already done. +func (c *Cipher) SealsWith() string { return c.seal.Tag() } + +// PreviousTag is the tag the cutover is migrating away from, or "" when no +// cutover is configured. +func (c *Cipher) PreviousTag() string { + if c.previous == nil { + return "" + } + return c.previous.Tag() +} + +// EncryptSecret seals a purpose-bound value under the selected backend. There +// is no plaintext fallback: a credential that failed to seal is not stored. +func (c *Cipher) EncryptSecret(ctx context.Context, purpose, plaintext string) (string, error) { + if purpose == "" || plaintext == "" { + return "", errors.New("key service: sealing requires a purpose and a plaintext") + } + payload, err := c.seal.Seal(ctx, purpose, plaintext) + if err != nil { + return "", err + } + return Envelope{Backend: c.seal.Tag(), Payload: payload}.String(), nil +} + +// DecryptSecret opens a stored envelope through whichever configured backend +// its tag names. A tag no backend answers for is refused by name: that is the +// signal a cutover is incomplete, and it is strictly better than the +// alternative of handing the bytes to the wrong backend. +func (c *Cipher) DecryptSecret(ctx context.Context, purpose, stored string) (string, error) { + if purpose == "" { + return "", errors.New("key service: opening requires a purpose") + } + envelope, err := ParseEnvelope(stored) + if err != nil { + return "", err + } + backend, err := c.readerFor(envelope) + if err != nil { + return "", err + } + return backend.Open(ctx, purpose, envelope.Payload) +} + +// readerFor picks the backend that actually sealed the envelope. It asks each +// bound backend rather than matching the tag, because two backends can share a +// tag and differ in the key they hold, and handing a ciphertext to the wrong one +// of those is indistinguishable from a corrupt ciphertext at the key service. +func (c *Cipher) readerFor(envelope Envelope) (Sealer, error) { + if c.seal.Accepts(envelope) { + return c.seal, nil + } + if c.previous != nil && c.previous.Accepts(envelope) { + return c.previous, nil + } + return nil, fmt.Errorf("stored secret was sealed by %q, which this deployment does not bind: select it as the previous key-service backend until nothing references it", envelope.Backend) +} + +// Reseal opens a stored value and seals it again under the selected backend. +// A value already sealed by the selected backend is returned unchanged with +// false, so a sweep is restart-safe and re-running it is free. +func (c *Cipher) Reseal(ctx context.Context, purpose, stored string) (string, bool, error) { + envelope, err := ParseEnvelope(stored) + if err != nil { + return "", false, err + } + if c.seal.Accepts(envelope) { + return stored, false, nil + } + plaintext, err := c.DecryptSecret(ctx, purpose, stored) + if err != nil { + return "", false, err + } + resealed, err := c.EncryptSecret(ctx, purpose, plaintext) + if err != nil { + return "", false, err + } + return resealed, true, nil +} + +// HashKey is the hash a newly issued API key is stored under. +// +// There is intentionally no local fallback: silently downgrading to an unkeyed +// digest would produce a hash that never matches the one written for the same +// key once the key service recovers, so verification would break for every key +// created during the outage. +func (c *Cipher) HashKey(ctx context.Context, plaintext string) (string, error) { + return c.seal.MAC(ctx, plaintext) +} + +// CandidateHashes is every hash a presented API key could already be stored +// under: the selected backend's first, then — while a cutover is in progress — +// the one the previous backend would have produced. +// +// A keyed hash cannot be re-keyed: the plaintext is gone, so the re-seal sweep +// that rewrites every enveloped column cannot touch api_keys.key_hash. Looking +// a presented key up under both keys is therefore the only way a cutover does +// not invalidate every API key that exists, and it is why the previous backend +// stays bound until the keys issued under it have been rotated or expired. +func (c *Cipher) CandidateHashes(ctx context.Context, plaintext string) ([]string, error) { + current, err := c.HashKey(ctx, plaintext) + if err != nil { + return nil, err + } + if c.previous == nil { + return []string{current}, nil + } + previous, err := c.previous.MAC(ctx, plaintext) + if err != nil { + return nil, err + } + if previous == current { + return []string{current}, nil + } + return []string{current, previous}, nil +} diff --git a/module/services/accounts/code/pkg/keyservice/conformance_test.go b/module/services/accounts/code/pkg/keyservice/conformance_test.go new file mode 100644 index 000000000..a24572c42 --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/conformance_test.go @@ -0,0 +1,520 @@ +package keyservice + +// One suite, both backends. A backend is only interchangeable if the properties +// every caller already relies on hold identically, and the only way to know +// that is to assert them against each backend from the same place: a suite +// written once per backend drifts, and the drift shows up as a credential that +// cannot be read after a cutover. + +import ( + "errors" + "net/http" + "strings" + "testing" + + "github.com/stretchr/testify/require" + + "accounts/pkg/business" +) + +// conformanceSealer is one backend under test, plus the knob that makes its key +// service answer a given status, so the suite can assert how each separates an +// outage from a credential that is genuinely unreadable. +type conformanceSealer struct { + Sealer + outage func(status int) +} + +func conformanceSealers() map[string]func(*testing.T) conformanceSealer { + return map[string]func(*testing.T) conformanceSealer{ + "vault": func(t *testing.T) conformanceSealer { + fake := newFakeVault(t) + return conformanceSealer{Sealer: fake.sealer(), outage: func(status int) { fake.outage = status }} + }, + "kms": func(t *testing.T) conformanceSealer { + fake, sealer := newConformanceKMS(t) + return conformanceSealer{Sealer: sealer, outage: func(status int) { fake.outage = status }} + }, + } +} + +func TestSealerConformance(t *testing.T) { + for name, build := range conformanceSealers() { + t.Run(name, func(t *testing.T) { + t.Run("round trips", func(t *testing.T) { + sealer := build(t) + payload, err := sealer.Seal(t.Context(), "mfa-totp", "JBSWY3DPEHPK3PXP") + require.NoError(t, err) + opened, err := sealer.Open(t.Context(), "mfa-totp", payload) + require.NoError(t, err) + require.Equal(t, "JBSWY3DPEHPK3PXP", opened) + }) + + t.Run("refuses another purpose", func(t *testing.T) { + sealer := build(t) + payload, err := sealer.Seal(t.Context(), "webhook-signing:a", "secret") + require.NoError(t, err) + _, err = sealer.Open(t.Context(), "webhook-signing:b", payload) + require.Error(t, err, "a payload copied to another row must not open") + require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) + }) + + t.Run("does not repeat a ciphertext", func(t *testing.T) { + sealer := build(t) + first, err := sealer.Seal(t.Context(), "org-idp:acme", "s3cret") + require.NoError(t, err) + second, err := sealer.Seal(t.Context(), "org-idp:acme", "s3cret") + require.NoError(t, err) + require.NotEqual(t, first, second, + "two seals of one plaintext must differ, or equal ciphertexts reveal equal secrets") + }) + + t.Run("refuses a corrupt payload", func(t *testing.T) { + sealer := build(t) + payload, err := sealer.Seal(t.Context(), "mfa-totp", "seed") + require.NoError(t, err) + _, err = sealer.Open(t.Context(), "mfa-totp", payload[:len(payload)-4]) + require.Error(t, err) + }) + + t.Run("keyed hash is deterministic and key-bound", func(t *testing.T) { + sealer := build(t) + first, err := sealer.MAC(t.Context(), "sk_live_example") + require.NoError(t, err) + again, err := sealer.MAC(t.Context(), "sk_live_example") + require.NoError(t, err) + require.Equal(t, first, again, "API-key lookup is by this value, so it cannot move") + other, err := sealer.MAC(t.Context(), "sk_live_other") + require.NoError(t, err) + require.NotEqual(t, first, other) + require.NotContains(t, first, "sk_live_example", "the hash must not carry the key") + }) + + t.Run("an outage is not an invalid credential", func(t *testing.T) { + backend := build(t) + payload, err := backend.Seal(t.Context(), "mfa-totp", "seed") + require.NoError(t, err) + + backend.outage(http.StatusServiceUnavailable) + _, err = backend.Open(t.Context(), "mfa-totp", payload) + require.Error(t, err) + require.NotErrorIs(t, err, business.ErrInvalidSecretEnvelope, + "a caller that disabled an endpoint because the key service was briefly down would have destroyed a credential that was never broken") + }) + + t.Run("carries a status without the provider body", func(t *testing.T) { + for _, status := range []int{http.StatusBadRequest, http.StatusForbidden, http.StatusServiceUnavailable} { + backend := build(t) + payload, err := backend.Seal(t.Context(), "mfa-totp", "seed") + require.NoError(t, err) + + backend.outage(status) + _, err = backend.Open(t.Context(), "mfa-totp", payload) + require.Error(t, err) + var typed interface{ HTTPStatusCode() int } + require.True(t, errors.As(err, &typed), "status %d must travel as a typed status", status) + require.Equal(t, status, typed.HTTPStatusCode()) + require.NotContains(t, err.Error(), "sensitive-provider-body") + } + }) + + t.Run("tags every envelope it seals", func(t *testing.T) { + sealer := build(t) + cipher, err := NewCipher(sealer, nil) + require.NoError(t, err) + stored, err := cipher.EncryptSecret(t.Context(), "mfa-totp", "seed") + require.NoError(t, err) + require.True(t, strings.HasPrefix(stored, EnvelopePrefix(sealer.Tag())), + "stored value %q must name the backend that sealed it", stored) + }) + }) + } +} + +func newConformanceKMS(t *testing.T) (*fakeKMS, *KMSSealer) { + t.Helper() + fake := newFakeKMS(t) + config := fake.config() + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + sealer, err := NewKMSSealer(t.Context(), config) + require.NoError(t, err) + return fake, sealer +} + +func newConformanceKMSSealer(t *testing.T) *KMSSealer { + t.Helper() + _, sealer := newConformanceKMS(t) + return sealer +} + +// TestKMSRefusesByName drives every refusal the `kms` backend raises at boot. +// Each is checked by the text an operator will read, because a refusal that +// does not name the key or the key name is one that gets diagnosed by guessing. +func TestKMSRefusesByName(t *testing.T) { + for name, scenario := range map[string]struct { + arrange func(*testing.T, *fakeKMS, *KMSConfig) + expect string + }{ + "envelope key is not a resource name": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.EnvelopeKey = "envelope" + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + }, + expect: KMSEnvelopeKeyKey + " must be a Cloud KMS cryptoKey resource name", + }, + "mac key names a key rather than a version": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + fake.addMACKey(t, testKeyName("api-keys")) + config.MACKey = testKeyName("api-keys") + }, + expect: "stops every API key already stored from matching", + }, + "envelope key has the wrong purpose": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + fake.addMACKey(t, testKeyName("envelope")) + config.EnvelopeKey = testKeyName("envelope") + }, + expect: "has purpose MAC; ENCRYPT_DECRYPT is required", + }, + "mac key has the wrong algorithm": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + fake.keys[testKeyName("api-keys")].algorithm = "HMAC_SHA512" + }, + expect: "the keyed hash requires HMAC_SHA256", + }, + "mac key version is disabled": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + fake.keys[testKeyName("api-keys")].versions[1] = "DESTROYED" + }, + expect: "is DESTROYED, not ENABLED", + }, + "the workload identity cannot reach the key": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + fake.outage = http.StatusForbidden + }, + expect: "cloud kms refused the workload identity on " + testKeyName("envelope"), + }, + "the pod has no bound service account": { + arrange: func(t *testing.T, fake *fakeKMS, config *KMSConfig) { + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + fake.metadataStatus = 404 + }, + expect: "the pod has no bound service account", + }, + } { + t.Run(name, func(t *testing.T) { + fake := newFakeKMS(t) + config := fake.config() + scenario.arrange(t, fake, &config) + _, err := NewKMSSealer(t.Context(), config) + require.Error(t, err) + require.Contains(t, err.Error(), scenario.expect) + }) + } +} + +// TestKMSSealBindsAssociatedData is the property the purpose check rests on for +// this backend: the purpose is Cloud KMS's own associated data, so a ciphertext +// moved between rows fails the integrity check rather than decrypting into a +// value some later check has to catch. +func TestKMSSealBindsAssociatedData(t *testing.T) { + sealer := newConformanceKMSSealer(t) + payload, err := sealer.Seal(t.Context(), "github-connector:a", "ghp_example") + require.NoError(t, err) + + _, err = sealer.Open(t.Context(), "github-connector:b", payload) + require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) + + opened, err := sealer.Open(t.Context(), "github-connector:a", payload) + require.NoError(t, err) + require.Equal(t, "ghp_example", opened) +} + +func TestKMSSealRecordsTheKeyVersion(t *testing.T) { + sealer := newConformanceKMSSealer(t) + payload, err := sealer.Seal(t.Context(), "mfa-totp", "seed") + require.NoError(t, err) + require.True(t, strings.HasPrefix(payload, "1:"+keyFingerprint(testKeyName("envelope"))+":"), + "the payload must name the key version AND the key that sealed it, got %q", payload) +} + +func TestEnvelopeParsing(t *testing.T) { + for name, scenario := range map[string]struct { + stored string + backend string + payload string + invalid bool + }{ + "vault transit": { + stored: "cfs1:vault-transit:dmF1bHQ6djE6YWJj", + backend: TagVaultTransit, + payload: "dmF1bHQ6djE6YWJj", + }, + "cloud kms carries its key version and key": { + stored: "cfs1:gcp-kms:3:Zmluz2VyAAAAAAAA:Y2lwaGVy", + backend: TagGCPKMS, + payload: "3:Zmluz2VyAAAAAAAA:Y2lwaGVy", + }, + "an unknown version is refused": {stored: "cfs2:vault-transit:abc", invalid: true}, + "an unframed value is refused": {stored: "vault:v1:abc", invalid: true}, + "an empty payload is refused": {stored: "cfs1:vault-transit:", invalid: true}, + "a missing backend is refused": {stored: "cfs1::abc", invalid: true}, + "a bare envelope is refused": {stored: "cfs1", invalid: true}, + "plaintext is refused": {stored: "JBSWY3DPEHPK3PXP", invalid: true}, + } { + t.Run(name, func(t *testing.T) { + envelope, err := ParseEnvelope(scenario.stored) + if scenario.invalid { + require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) + return + } + require.NoError(t, err) + require.Equal(t, scenario.backend, envelope.Backend) + require.Equal(t, scenario.payload, envelope.Payload) + require.Equal(t, scenario.stored, envelope.String()) + }) + } +} + +// TestCipherCutover is the migration contract: during a cutover reads accept +// both backends, writes only the selected one, and the re-seal rewrites what +// the previous backend sealed while leaving what the selected one sealed alone. +func TestCipherCutover(t *testing.T) { + previous := newFakeVault(t).sealer() + selected := newConformanceKMSSealer(t) + + before, err := NewCipher(previous, nil) + require.NoError(t, err) + stored, err := before.EncryptSecret(t.Context(), "org-idp:acme", "legacy-secret") + require.NoError(t, err) + + cutover, err := NewCipher(selected, previous) + require.NoError(t, err) + require.Equal(t, TagGCPKMS, cutover.SealsWith()) + require.Equal(t, TagVaultTransit, cutover.PreviousTag()) + + opened, err := cutover.DecryptSecret(t.Context(), "org-idp:acme", stored) + require.NoError(t, err) + require.Equal(t, "legacy-secret", opened) + + fresh, err := cutover.EncryptSecret(t.Context(), "org-idp:acme", "new-secret") + require.NoError(t, err) + require.True(t, strings.HasPrefix(fresh, EnvelopePrefix(TagGCPKMS)), + "a cutover seals only under the selected backend") + + resealed, changed, err := cutover.Reseal(t.Context(), "org-idp:acme", stored) + require.NoError(t, err) + require.True(t, changed) + require.True(t, strings.HasPrefix(resealed, EnvelopePrefix(TagGCPKMS))) + opened, err = cutover.DecryptSecret(t.Context(), "org-idp:acme", resealed) + require.NoError(t, err) + require.Equal(t, "legacy-secret", opened) + + _, changed, err = cutover.Reseal(t.Context(), "org-idp:acme", resealed) + require.NoError(t, err) + require.False(t, changed, "re-sealing what is already sealed must be a no-op, so a sweep is restart-safe") +} + +// TestCipherRefusesAnUnboundBackend is what keeps the previous binding from +// being withdrawn too early: a value nothing can open is named as that rather +// than handed to the wrong backend. +func TestCipherRefusesAnUnboundBackend(t *testing.T) { + stored := Envelope{Backend: TagVaultTransit, Payload: "dmF1bHQ6djE6YWJj"}.String() + + cipher, err := NewCipher(newConformanceKMSSealer(t), nil) + require.NoError(t, err) + _, err = cipher.DecryptSecret(t.Context(), "mfa-totp", stored) + require.Error(t, err) + require.Contains(t, err.Error(), `sealed by "vault-transit", which this deployment does not bind`) +} + +func TestCipherRefusesTheSameBackendTwice(t *testing.T) { + sealer := newFakeVault(t).sealer() + _, err := NewCipher(sealer, newFakeVault(t).sealer()) + require.Error(t, err) + require.Contains(t, err.Error(), "a cutover has two distinct backends or none") +} + +// TestCandidateHashesCoverBothKeysDuringACutover is the one part of the +// migration a re-seal cannot do: a keyed hash has no plaintext to re-key, so a +// presented key is looked up under both keys until the keys issued under the +// outgoing one are gone. +func TestCandidateHashesCoverBothKeysDuringACutover(t *testing.T) { + vault := newFakeVault(t).sealer() + kms := newConformanceKMSSealer(t) + + legacy, err := vault.MAC(t.Context(), "sk_live_example") + require.NoError(t, err) + + cutover, err := NewCipher(kms, vault) + require.NoError(t, err) + candidates, err := cutover.CandidateHashes(t.Context(), "sk_live_example") + require.NoError(t, err) + require.Len(t, candidates, 2) + require.Contains(t, candidates, legacy) + + current, err := cutover.HashKey(t.Context(), "sk_live_example") + require.NoError(t, err) + require.Equal(t, current, candidates[0], "a newly issued key is stored under the selected backend") + + settled, err := NewCipher(kms, nil) + require.NoError(t, err) + candidates, err = settled.CandidateHashes(t.Context(), "sk_live_example") + require.NoError(t, err) + require.Equal(t, []string{current}, candidates, + "once the previous backend is withdrawn there is one hash to look up") +} + +func TestCipherRequiresAPurposeAndAPlaintext(t *testing.T) { + cipher, err := NewCipher(newFakeVault(t).sealer(), nil) + require.NoError(t, err) + + _, err = cipher.EncryptSecret(t.Context(), "", "value") + require.Error(t, err) + _, err = cipher.EncryptSecret(t.Context(), "mfa-totp", "") + require.Error(t, err) + _, err = cipher.DecryptSecret(t.Context(), "", "cfs1:vault-transit:abc") + require.Error(t, err) +} + +func TestParseBackend(t *testing.T) { + for _, backend := range Backends { + parsed, err := ParseBackend(string(backend)) + require.NoError(t, err) + require.Equal(t, backend, parsed) + } + _, err := ParseBackend("") + require.Error(t, err) + _, err = ParseBackend("consul") + require.Error(t, err) + require.Contains(t, err.Error(), "use vault or kms") +} + +// kmsSealerOn builds a sealer over one named envelope key in an existing fake, +// so a cutover between two Cloud KMS keys can be driven. +func kmsSealerOn(t *testing.T, fake *fakeKMS, envelopeKey string) *KMSSealer { + t.Helper() + config := fake.config() + config.EnvelopeKey = fake.addSymmetricKey(t, envelopeKey) + if _, registered := fake.keys[testKeyName("api-keys")]; !registered { + fake.addMACKey(t, testKeyName("api-keys")) + } + config.MACKey = testKeyName("api-keys") + "/cryptoKeyVersions/1" + sealer, err := NewKMSSealer(t.Context(), config) + require.NoError(t, err) + return sealer +} + +// A value sealed by a DIFFERENT Cloud KMS key is a configuration answer, not a +// broken credential. Cloud KMS answers both with 400, so without the key +// recorded in the envelope an operator who mistyped KEY_SERVICE_KMS_ENVELOPE_KEY +// would have every source marked permanently unreadable and every user told to +// re-enter their credential. +func TestKMSOpenRefusesAForeignKeyWithoutCondemningTheCredential(t *testing.T) { + fake := newFakeKMS(t) + sealedByA := kmsSealerOn(t, fake, testKeyName("envelope-a")) + readerOnB := kmsSealerOn(t, fake, testKeyName("envelope-b")) + + payload, err := sealedByA.Seal(t.Context(), "github-connector:s1", "ghp_example") + require.NoError(t, err) + + _, err = readerOnB.Open(t.Context(), "github-connector:s1", payload) + require.Error(t, err) + require.NotErrorIs(t, err, business.ErrInvalidSecretEnvelope, + "a wrong key name must not be reported as a credential that needs re-entering") + require.Contains(t, err.Error(), "sealed by a different Cloud KMS key") + require.Contains(t, err.Error(), KMSEnvelopeKeyKey) +} + +// The boot probe: every static check passes on a key that is well-formed and +// simply is not the one holding this deployment's data, so the constructor +// proves the key can seal and open before anything depends on it. +func TestNewKMSSealerRefusesAKeyThatCannotRoundTrip(t *testing.T) { + fake := newFakeKMS(t) + config := fake.config() + config.EnvelopeKey = fake.addSymmetricKey(t, testKeyName("envelope")) + config.MACKey = fake.addMACKey(t, testKeyName("api-keys")) + // The key answers metadata but refuses the data-plane operations, which is + // what a role granted viewer-but-not-encrypter looks like. + fake.failOperations = true + + _, err := NewKMSSealer(t.Context(), config) + require.Error(t, err) + require.Contains(t, err.Error(), "cannot seal") +} + +// The recorded key version is written on the seal path, so a payload that does +// not carry one was not written by this backend. Reading past it would make the +// recorded version decorative. +func TestKMSPayloadVersionIsValidated(t *testing.T) { + sealer := newConformanceKMSSealer(t) + fingerprint := keyFingerprint(testKeyName("envelope")) + for name, payload := range map[string]string{ + "no version": "" + fingerprint + ":Y2lwaGVy", + "version is text": "garbage:" + fingerprint + ":Y2lwaGVy", + "version is zero": "0:" + fingerprint + ":Y2lwaGVy", + "no key": "1:Y2lwaGVy", + } { + t.Run(name, func(t *testing.T) { + _, err := sealer.Open(t.Context(), "mfa-totp", payload) + require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) + }) + } +} + +// A re-key inside one backend is a real cutover: two Cloud KMS keys share the +// `gcp-kms` tag, so routing on the tag alone could not express it. +func TestCipherCutoverBetweenTwoCloudKMSKeys(t *testing.T) { + fake := newFakeKMS(t) + outgoing := kmsSealerOn(t, fake, testKeyName("envelope-old")) + incoming := kmsSealerOn(t, fake, testKeyName("envelope-new")) + require.NotEqual(t, outgoing.Identity(), incoming.Identity(), + "two Cloud KMS keys must be two backend identities") + + before, err := NewCipher(outgoing, nil) + require.NoError(t, err) + stored, err := before.EncryptSecret(t.Context(), "org-idp:acme", "legacy-secret") + require.NoError(t, err) + + cutover, err := NewCipher(incoming, outgoing) + require.NoError(t, err) + opened, err := cutover.DecryptSecret(t.Context(), "org-idp:acme", stored) + require.NoError(t, err, "a value sealed by the outgoing key must still open") + require.Equal(t, "legacy-secret", opened) + + resealed, changed, err := cutover.Reseal(t.Context(), "org-idp:acme", stored) + require.NoError(t, err) + require.True(t, changed, "a value under the outgoing KEY must be re-sealed, not skipped on a tag match") + _, changed, err = cutover.Reseal(t.Context(), "org-idp:acme", resealed) + require.NoError(t, err) + require.False(t, changed) +} + +// The migration sweeps ask "is this an envelope at all", which must be true for +// a framing this build cannot open — otherwise the sweep treats another +// backend's value as plaintext and re-seals the envelope string itself. +func TestIsEnvelopeFramingAcceptsFramingsThisBuildCannotOpen(t *testing.T) { + for _, stored := range []string{ + "cfs1:vault-transit:abc", + "cfs1:gcp-kms:1:fp:abc", + "cfs2:vault-transit:mfa-totp:abc", // the per-purpose split in flight on #1019 + "cfs9:some-future-service:abc", + } { + require.True(t, IsEnvelopeFraming(stored), "%q is an application envelope", stored) + } + for _, plaintext := range []string{ + "JBSWY3DPEHPK3PXP", "whsec_abc", "", "cfs1", "cfs1:", "cfs1:vault-transit:", "cfs0:x:y", "vault:v1:abc", + } { + require.False(t, IsEnvelopeFraming(plaintext), "%q is not an application envelope", plaintext) + } +} diff --git a/module/services/accounts/code/pkg/keyservice/envelope.go b/module/services/accounts/code/pkg/keyservice/envelope.go new file mode 100644 index 000000000..8301c90cd --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/envelope.go @@ -0,0 +1,90 @@ +package keyservice + +import ( + "fmt" + "regexp" + "strings" + + "accounts/pkg/business" +) + +// envelopeVersion versions the FRAMING of a stored value — that it names the +// backend which sealed it and that the backend's own payload follows — not the +// key, the algorithm or the ciphertext. A new backend therefore extends the tag +// set rather than the version, and every value already stored keeps reading. +const envelopeVersion = "cfs1" + +// Tags the backends write. A tag names the key-management SERVICE rather than +// the configured backend, so a stored value says which service to ask instead +// of leaving a later reader to re-derive it from whatever configuration was in +// force when the value was sealed. The two namespaces are deliberately not the +// same: `kms` selects whichever cloud the deployment runs in, and its +// ciphertexts have to stay distinguishable from another cloud's. +const ( + TagVaultTransit = "vault-transit" + TagGCPKMS = "gcp-kms" +) + +// Envelope is the stored form of a sealed value. +// +// The tag is what makes a cutover possible: a read resolves the backend from +// the value itself, so a deployment that has switched backends still opens +// everything the previous one sealed, and the previous binding can be withdrawn +// exactly when no stored value names it. +// +// Where the KEY VERSION is recorded is each backend's own business, because +// each already answers it differently. A Vault Transit ciphertext carries its +// own `vault:v:` prefix, so the payload is the ciphertext and nothing is +// added. A Cloud KMS ciphertext is opaque, so that backend's payload names the +// key version ahead of it. +type Envelope struct { + Backend string + Payload string +} + +func (e Envelope) String() string { + return envelopeVersion + ":" + e.Backend + ":" + e.Payload +} + +// ParseEnvelope reads a stored value. It is strict in both halves: an +// unrecognised version and an empty payload are refused rather than guessed at, +// because the alternative to refusing is handing a backend bytes it will +// mis-read. +func ParseEnvelope(stored string) (Envelope, error) { + version, rest, found := strings.Cut(stored, ":") + if !found || version != envelopeVersion { + return Envelope{}, fmt.Errorf("unsupported secret envelope framing %q, this build opens %s: %w", version, envelopeVersion, business.ErrInvalidSecretEnvelope) + } + backend, payload, found := strings.Cut(rest, ":") + if !found || backend == "" || payload == "" { + return Envelope{}, fmt.Errorf("invalid secret envelope: %w", business.ErrInvalidSecretEnvelope) + } + return Envelope{Backend: backend, Payload: payload}, nil +} + +// envelopeFraming matches any application envelope, including a framing version +// this build does not implement. +var envelopeFraming = regexp.MustCompile(`^cfs[1-9][0-9]*:[^:]+:.`) + +// IsEnvelopeFraming reports whether a stored value is an application envelope at +// all — as opposed to a pre-envelope plaintext. +// +// It deliberately accepts framing versions this build cannot OPEN. The migration +// sweeps that upgrade pre-envelope plaintext select on "not an envelope", and a +// sweep that recognised only its own version would treat every value written by +// another backend — or by a later framing — as plaintext, re-seal the envelope +// STRING, and store a doubly-wrapped payload nothing can ever read. Refusing to +// open an unknown framing is correct; sweeping it is destruction, so the two +// questions get two functions. +func IsEnvelopeFraming(stored string) bool { + return envelopeFraming.MatchString(stored) +} + +// EnvelopePrefix is the stored-value prefix every envelope one backend seals +// begins with. A migration sweep selects on it, so it has to be the whole +// discriminator and not just the version: a predicate that matched only the +// version would re-seal what the new backend already sealed and store a +// doubly-wrapped payload nothing can read. +func EnvelopePrefix(tag string) string { + return envelopeVersion + ":" + tag + ":" +} diff --git a/module/services/accounts/code/pkg/keyservice/fake_backends_test.go b/module/services/accounts/code/pkg/keyservice/fake_backends_test.go new file mode 100644 index 000000000..088827036 --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/fake_backends_test.go @@ -0,0 +1,421 @@ +package keyservice + +// Fakes for the two key services, used by the conformance suite. +// +// Each fake does the real cryptography the backend depends on — AES-GCM with +// the associated data actually bound, HMAC-SHA256, real Ed25519 — because the +// properties the suite asserts are properties of that binding. A fake that +// ignored the associated data would let "a payload moved between rows no longer +// opens" pass while production had lost it. + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/hmac" + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "strconv" + "strings" + "testing" +) + +// fakeVault serves the three Transit endpoints accounts uses, plus the health +// probe. Its ciphertexts carry Vault's own `vault:v:` key-version prefix, so +// the backend's handling of that prefix is exercised rather than assumed. +type fakeVault struct { + server *httptest.Server + aead cipher.AEAD + macKey []byte + version int + // token is the only token the fake accepts, so a request that lost its + // header is a 403 rather than a pass. + token string + // outage answers every Transit call with this status, for the tests that + // separate "the key service is down" from "this credential is broken". + outage int +} + +func newFakeVault(t *testing.T) *fakeVault { + t.Helper() + v := &fakeVault{aead: newTestAEAD(t), macKey: randomBytes(t, 32), version: 1, token: "fake-vault-token"} + mux := http.NewServeMux() + mux.HandleFunc("/v1/sys/health", func(w http.ResponseWriter, _ *http.Request) { + w.WriteHeader(http.StatusOK) + }) + mux.HandleFunc("/v1/transit/", func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("X-Vault-Token") != v.token { + w.WriteHeader(http.StatusForbidden) + return + } + if v.outage != 0 { + w.WriteHeader(v.outage) + _, _ = w.Write([]byte("sensitive-provider-body")) + return + } + var request map[string]string + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + operation := strings.Split(strings.TrimPrefix(r.URL.Path, "/v1/transit/"), "/")[0] + switch operation { + case "encrypt": + plaintext, err := base64.StdEncoding.DecodeString(request["plaintext"]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + writeVaultData(w, map[string]any{"ciphertext": v.seal(plaintext)}) + case "decrypt": + plaintext, ok := v.open(request["ciphertext"]) + if !ok { + w.WriteHeader(http.StatusBadRequest) + return + } + writeVaultData(w, map[string]any{"plaintext": base64.StdEncoding.EncodeToString(plaintext)}) + case "hmac": + input, err := base64.StdEncoding.DecodeString(request["input"]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + mac := hmac.New(sha256.New, v.macKey) + mac.Write(input) + writeVaultData(w, map[string]any{ + "hmac": v.prefix() + base64.StdEncoding.EncodeToString(mac.Sum(nil)), + }) + default: + w.WriteHeader(http.StatusNotFound) + } + }) + v.server = httptest.NewServer(mux) + t.Cleanup(v.server.Close) + return v +} + +func (v *fakeVault) prefix() string { return "vault:v" + strconv.Itoa(v.version) + ":" } + +func (v *fakeVault) seal(plaintext []byte) string { + nonce := randomBytesN(v.aead.NonceSize()) + sealed := v.aead.Seal(nonce, nonce, plaintext, nil) + return v.prefix() + base64.StdEncoding.EncodeToString(sealed) +} + +func (v *fakeVault) open(ciphertext string) ([]byte, bool) { + if !strings.HasPrefix(ciphertext, "vault:v") { + return nil, false + } + _, encoded, found := strings.Cut(strings.TrimPrefix(ciphertext, "vault:v"), ":") + if !found { + return nil, false + } + raw, err := base64.StdEncoding.DecodeString(encoded) + if err != nil || len(raw) < v.aead.NonceSize() { + return nil, false + } + nonce, body := raw[:v.aead.NonceSize()], raw[v.aead.NonceSize():] + plaintext, err := v.aead.Open(nil, nonce, body, nil) + return plaintext, err == nil +} + +func (v *fakeVault) sealer() *VaultSealer { + sealer := NewVaultSealerDirect(v.server.URL, v.token) + sealer.client = v.server.Client() + return sealer +} + +func writeVaultData(w http.ResponseWriter, data map[string]any) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]any{"data": data}) +} + +// fakeKMS serves the Cloud KMS surface the backend uses, plus the metadata +// server that issues the workload identity's token. Keys are addressed by their +// resource name, so a request for a key the fake does not hold is the 404 a real +// project answers, and a key whose purpose or algorithm does not match the +// backend's requirement is served as configured so the refusals can be driven. +type fakeKMS struct { + server *httptest.Server + keys map[string]*fakeKMSKey + token string + tokenTTL int + // outage answers every KMS call with this status: 403 is what an + // unprivileged workload identity meets, 503 is the service being down. + outage int + // metadataStatus overrides the metadata server's status, for a pod with no + // bound service account. + metadataStatus int + // failOperations refuses the data-plane operations while still answering key + // metadata — a role granted viewer but not encrypter/decrypter. + failOperations bool +} + +type fakeKMSKey struct { + purpose string + algorithm string + // versions are ordinal → state. The primary is the highest ENABLED one. + versions map[int]string + aead cipher.AEAD + macKey []byte +} + +func newFakeKMS(t *testing.T) *fakeKMS { + t.Helper() + k := &fakeKMS{keys: map[string]*fakeKMSKey{}, token: "fake-metadata-token", tokenTTL: 3600} + mux := http.NewServeMux() + mux.HandleFunc("/computeMetadata/v1/instance/service-accounts/default/token", + func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Metadata-Flavor") != "Google" { + w.WriteHeader(http.StatusForbidden) + return + } + if k.metadataStatus != 0 { + w.WriteHeader(k.metadataStatus) + return + } + writeJSON(w, map[string]any{"access_token": k.token, "expires_in": k.tokenTTL}) + }) + mux.HandleFunc("/v1/", func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Authorization") != "Bearer "+k.token { + w.WriteHeader(http.StatusUnauthorized) + return + } + if k.outage != 0 { + w.WriteHeader(k.outage) + _, _ = w.Write([]byte("sensitive-provider-body")) + return + } + k.serve(w, r) + }) + k.server = httptest.NewServer(mux) + t.Cleanup(k.server.Close) + return k +} + +func (k *fakeKMS) config() KMSConfig { + return KMSConfig{ + apiBase: k.server.URL + "/v1/", + metadataBase: k.server.URL + "/computeMetadata/v1/", + } +} + +// addSymmetricKey registers an ENCRYPT_DECRYPT key with one enabled version. +func (k *fakeKMS) addSymmetricKey(t *testing.T, name string) string { + t.Helper() + k.keys[name] = &fakeKMSKey{ + purpose: purposeEncryptDecrypt, algorithm: algorithmSymmetric, + versions: map[int]string{1: versionStateEnabled}, aead: newTestAEAD(t), + } + return name +} + +// addMACKey registers a MAC key and returns the resource name of version 1. +func (k *fakeKMS) addMACKey(t *testing.T, name string) string { + t.Helper() + k.keys[name] = &fakeKMSKey{ + purpose: purposeMAC, algorithm: algorithmHMACSHA256, + versions: map[int]string{1: versionStateEnabled}, macKey: randomBytes(t, 32), + } + return name + "/cryptoKeyVersions/1" +} + +func (k *fakeKMS) serve(w http.ResponseWriter, r *http.Request) { + resource := strings.TrimPrefix(r.URL.Path, "/v1/") + switch { + case strings.HasSuffix(resource, ":encrypt"): + k.encrypt(w, r, strings.TrimSuffix(resource, ":encrypt")) + case strings.HasSuffix(resource, ":decrypt"): + k.decrypt(w, r, strings.TrimSuffix(resource, ":decrypt")) + case strings.HasSuffix(resource, ":macSign"): + k.macSign(w, r, strings.TrimSuffix(resource, ":macSign")) + default: + k.describe(w, resource) + } +} + +func (k *fakeKMS) describe(w http.ResponseWriter, resource string) { + if name, ordinal, ok := splitVersion(resource); ok { + key := k.keys[name] + if key == nil || key.versions[ordinal] == "" { + w.WriteHeader(http.StatusNotFound) + return + } + writeJSON(w, kmsCryptoKeyVersion{Name: resource, State: key.versions[ordinal], Algorithm: key.algorithm}) + return + } + key := k.keys[resource] + if key == nil { + w.WriteHeader(http.StatusNotFound) + return + } + described := map[string]any{ + "purpose": key.purpose, + "versionTemplate": map[string]any{"algorithm": key.algorithm}, + } + if key.purpose == purposeEncryptDecrypt { + described["primary"] = map[string]any{ + "name": resource + "/cryptoKeyVersions/" + strconv.Itoa(key.primary()), + "state": versionStateEnabled, + } + } + writeJSON(w, described) +} + +func (k *fakeKMS) encrypt(w http.ResponseWriter, r *http.Request, name string) { + if k.failOperations { + w.WriteHeader(http.StatusForbidden) + return + } + key := k.keys[name] + if key == nil || key.aead == nil { + w.WriteHeader(http.StatusNotFound) + return + } + request := decodeJSON(w, r) + if request == nil { + return + } + plaintext, err := base64.StdEncoding.DecodeString(request["plaintext"]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + aad, err := base64.StdEncoding.DecodeString(request["additionalAuthenticatedData"]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + nonce := randomBytesN(key.aead.NonceSize()) + sealed := key.aead.Seal(nonce, nonce, plaintext, aad) + writeJSON(w, map[string]any{ + "name": name + "/cryptoKeyVersions/" + strconv.Itoa(key.primary()), + "ciphertext": base64.StdEncoding.EncodeToString(sealed), + }) +} + +func (k *fakeKMS) decrypt(w http.ResponseWriter, r *http.Request, name string) { + key := k.keys[name] + if key == nil || key.aead == nil { + w.WriteHeader(http.StatusNotFound) + return + } + request := decodeJSON(w, r) + if request == nil { + return + } + raw, err := base64.StdEncoding.DecodeString(request["ciphertext"]) + if err != nil || len(raw) < key.aead.NonceSize() { + w.WriteHeader(http.StatusBadRequest) + return + } + aad, err := base64.StdEncoding.DecodeString(request["additionalAuthenticatedData"]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + nonce, body := raw[:key.aead.NonceSize()], raw[key.aead.NonceSize():] + plaintext, err := key.aead.Open(nil, nonce, body, aad) + if err != nil { + // What Cloud KMS answers when the associated data does not match. + w.WriteHeader(http.StatusBadRequest) + return + } + writeJSON(w, map[string]any{"plaintext": base64.StdEncoding.EncodeToString(plaintext)}) +} + +func (k *fakeKMS) macSign(w http.ResponseWriter, r *http.Request, version string) { + name, ordinal, ok := splitVersion(version) + key := k.keys[name] + if !ok || key == nil || key.macKey == nil || key.versions[ordinal] != versionStateEnabled { + w.WriteHeader(http.StatusNotFound) + return + } + request := decodeJSON(w, r) + if request == nil { + return + } + data, err := base64.StdEncoding.DecodeString(request["data"]) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + mac := hmac.New(sha256.New, append(key.macKey, byte(ordinal))) + mac.Write(data) + writeJSON(w, map[string]any{"name": version, "mac": base64.StdEncoding.EncodeToString(mac.Sum(nil))}) +} + +func (key *fakeKMSKey) primary() int { + primary := 0 + for ordinal, state := range key.versions { + if state == versionStateEnabled && ordinal > primary { + primary = ordinal + } + } + return primary +} + +func splitVersion(resource string) (string, int, bool) { + name, ordinal, found := strings.Cut(resource, "/cryptoKeyVersions/") + if !found { + return "", 0, false + } + parsed, err := strconv.Atoi(ordinal) + if err != nil { + return "", 0, false + } + return name, parsed, true +} + +func decodeJSON(w http.ResponseWriter, r *http.Request) map[string]string { + var request map[string]string + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + w.WriteHeader(http.StatusBadRequest) + return nil + } + return request +} + +func writeJSON(w http.ResponseWriter, payload any) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(payload) +} + +func newTestAEAD(t *testing.T) cipher.AEAD { + t.Helper() + block, err := aes.NewCipher(randomBytes(t, 32)) + if err != nil { + t.Fatalf("aes: %v", err) + } + aead, err := cipher.NewGCM(block) + if err != nil { + t.Fatalf("gcm: %v", err) + } + return aead +} + +func randomBytes(t *testing.T, n int) []byte { + t.Helper() + buf := make([]byte, n) + if _, err := rand.Read(buf); err != nil { + t.Fatalf("read random: %v", err) + } + return buf +} + +func randomBytesN(n int) []byte { + buf := make([]byte, n) + if _, err := rand.Read(buf); err != nil { + panic(fmt.Sprintf("read random: %v", err)) + } + return buf +} + +// testKeyName builds a syntactically valid Cloud KMS resource name. +func testKeyName(key string) string { + return "projects/acme-host/locations/europe-west1/keyRings/accounts/cryptoKeys/" + key +} diff --git a/module/services/accounts/code/pkg/keyservice/keyservice.go b/module/services/accounts/code/pkg/keyservice/keyservice.go new file mode 100644 index 000000000..341dfcde5 --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/keyservice.go @@ -0,0 +1,116 @@ +// Package keyservice is the seam between accounts and whatever holds its keys. +// +// accounts holds exactly two: the Ed25519 signing key behind every access token +// and the published JWKS, and the envelope key that seals stored credentials — +// source tokens, MFA seeds, WebAuthn credentials, webhook secrets — together +// with the keyed hash behind every API key. +// +// Which service holds them is a DEPLOYMENT decision, selected by configuration +// and never inferred. An in-cluster deployment names `vault` and keeps the +// AppRole + Transit binding. A hosted deployment names `kms` and uses the +// cell's cloud key-management service: keys that cannot be exported, reached +// with the workload's own cloud identity, so there is no stateful secrets store +// to run, unseal and back up, and no stored credential to rotate — the +// configuration carries key *names* and nothing else. +// +// The two families are separate interfaces because a backend can hold one key +// and not the other, and because they fail differently: a signing key that +// cannot be reached stops new logins, while an envelope key that cannot be +// reached stops reading credentials that already exist. +package keyservice + +import ( + "context" + "errors" + "fmt" + "strings" +) + +// Backend is the configured key service. It has no usable zero value: an +// unstated backend is refused rather than defaulted, because the two shapes +// have opposite custody models and a deployment that inherited one by accident +// would be reaching a key service nobody chose for it. +type Backend string + +const ( + // BackendVault is HashiCorp Vault: KV v2 for the signing key, Transit for + // the envelope key and the keyed hash, reached with an AppRole credential. + BackendVault Backend = "vault" + // BackendKMS is the deployment's cloud key-management service, reached with + // the workload's cloud identity. + BackendKMS Backend = "kms" +) + +// Backends is every backend a deployment may select, in the order a refusal +// lists them. +var Backends = []Backend{BackendVault, BackendKMS} + +// ParseBackend resolves a configured value, naming what was wrong. +func ParseBackend(value string) (Backend, error) { + switch candidate := Backend(strings.TrimSpace(value)); candidate { + case BackendVault, BackendKMS: + return candidate, nil + case "": + return "", errors.New("no key-service backend is selected") + default: + return "", fmt.Errorf("unsupported key-service backend %q: use %s", value, joinBackends()) + } +} + +func joinBackends() string { + names := make([]string, 0, len(Backends)) + for _, backend := range Backends { + names = append(names, string(backend)) + } + return strings.Join(names, " or ") +} + +// Sealer is one backend's stored-credential family: envelope encryption with +// associated data, and the keyed hash. +// +// Seal and Open exchange the backend's own payload — the part of a stored +// envelope after its tag — rather than the whole envelope. Framing a value and +// routing it back to the backend that sealed it belong to one place (Envelope +// and Cipher); a backend only has to be able to seal and open its own. +type Sealer interface { + // Tag names this backend in every envelope it seals. + Tag() string + // Identity distinguishes this backend from every other one a deployment + // could bind, key included. Two Cloud KMS keys share a tag but not an + // identity, which is what makes a key-to-key cutover expressible. + Identity() string + // Accepts reports whether this backend sealed that envelope — the tag, and + // for a backend whose key is named in configuration, the key as well. + // + // Routing on the tag alone would be wrong: two Cloud KMS keys share the tag + // `gcp-kms`, so a deployment re-keying from one to another would hand each + // ciphertext to whichever backend was asked first, and Cloud KMS answers a + // ciphertext from a foreign key with the same 400 it answers a corrupt one. + Accepts(envelope Envelope) bool + // Seal binds purpose into the ciphertext as associated data, so a payload + // moved between rows no longer opens. It returns the payload only; the + // caller frames it. + Seal(ctx context.Context, purpose, plaintext string) (payload string, err error) + // Open reverses Seal. It refuses a payload sealed under a different + // purpose, and never falls back to returning the ciphertext. + Open(ctx context.Context, purpose, payload string) (plaintext string, err error) + // MAC is the keyed hash behind API-key lookup. It is deterministic: the + // same plaintext under the same key version is always the same string, and + // the stored hash is what a presented key is looked up by. + MAC(ctx context.Context, plaintext string) (string, error) +} + +// statusError preserves a backend's HTTP status without retaining its response +// body. A key service's error body quotes the request — Vault reflects the +// token's own path, Cloud KMS echoes request fields — so only the status +// travels, and callers that need to tell an outage from a refusal read it back +// through HTTPStatusCode. +type statusError struct { + service string + status int +} + +func (e *statusError) Error() string { + return fmt.Sprintf("%s request returned %d", e.service, e.status) +} +func (e *statusError) HTTPStatusCode() int { return e.status } diff --git a/module/services/accounts/code/pkg/keyservice/kms.go b/module/services/accounts/code/pkg/keyservice/kms.go new file mode 100644 index 000000000..28d2477da --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/kms.go @@ -0,0 +1,481 @@ +package keyservice + +// GCP Cloud KMS, the first `kms` backend. +// +// A hosted cell already runs a managed key service, so accounts does not need a +// stateful secrets store to hold two keys. What the configuration carries is key +// NAMES — values, no files, no stored credential — and the workload +// authenticates as itself: on GCP the metadata server issues the access token +// against the pod's bound service account, so nothing is provisioned to the pod +// and there is nothing to rotate. +// +// This backend holds the ENVELOPE key and the keyed hash, not the signing key: +// signing through a non-exportable key needs the Work Context signer and the +// delegation minter to accept a crypto.Signer first, so there is deliberately no +// Sign operation here rather than one nothing can reach (see ReadVaultSigningKey). +// +// Two keys, each configured in the shape its own rotation semantics demand. +// That asymmetry is deliberate, because getting it wrong is silent: +// +// - the ENVELOPE key is named as a cryptoKey. Encryption uses the key's +// primary version and the ciphertext records which version sealed it, so +// rotation never makes an existing ciphertext unreadable. +// - the MAC key is named as a cryptoKeyVERSION. The keyed hash behind API-key +// lookup is what a presented key is looked up by, so it must stay +// byte-identical for the life of the key: moving to another version +// silently stops every API key already stored from matching. Pinning the +// version in configuration makes that a deliberate edit with a stated +// consequence instead of a side effect of rotating a key. (Vault Transit +// has the same hazard and hides it better — `transit/hmac` follows the +// key's latest version, so rotating the Transit key breaks API-key lookup +// there too.) +// +// On "refuses a key that is exportable": Cloud KMS has no export operation, so +// a GCP key cannot be exportable and there is no such state to refuse. What is +// checkable, and is checked at boot, is the key's purpose, its algorithm and +// that the version this backend will use is ENABLED — plus reachability, since +// a key the workload identity cannot read answers 403 and is named as that +// rather than surfacing later as a failed seal. A backend for a cloud that does +// expose key material (AWS KMS distinguishes an EXTERNAL key origin) adds that +// refusal to its own constructor; nothing above this file changes. + +import ( + "bytes" + "context" + "crypto/sha256" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "regexp" + "strconv" + "strings" + "sync" + "time" + + "accounts/pkg/business" +) + +const ( + kmsAPIBase = "https://cloudkms.googleapis.com/v1/" + kmsMetadataBase = "http://metadata.google.internal/computeMetadata/v1/" + + purposeEncryptDecrypt = "ENCRYPT_DECRYPT" + purposeMAC = "MAC" + + algorithmSymmetric = "GOOGLE_SYMMETRIC_ENCRYPTION" + algorithmEd25519 = "EC_SIGN_ED25519" + algorithmHMACSHA256 = "HMAC_SHA256" + + versionStateEnabled = "ENABLED" +) + +var ( + cryptoKeyName = regexp.MustCompile(`^projects/[^/:]+/locations/[^/:]+/keyRings/[^/:]+/cryptoKeys/[^/:]+$`) + cryptoKeyVersionName = regexp.MustCompile(`^projects/[^/:]+/locations/[^/:]+/keyRings/[^/:]+/cryptoKeys/[^/:]+/cryptoKeyVersions/[1-9][0-9]*$`) +) + +// KMSConfig names the keys. Every field is a resource name read from +// configuration as a value. +type KMSConfig struct { + // EnvelopeKey is the symmetric cryptoKey that seals stored credentials. + EnvelopeKey string + // MACKey is the HMAC cryptoKeyVERSION behind API-key lookup. + MACKey string + // apiBase and metadataBase are unexported and set only by this package's + // own tests, so the conformance suite can run the real request and response + // handling against a fake while production has one hard-coded endpoint + // nobody can redirect from configuration. + apiBase string + metadataBase string +} + +// kmsClient is the authenticated transport: one access token from the workload +// identity, refreshed before it expires, and no other credential anywhere. +type kmsClient struct { + http *http.Client + apiBase string + metadataBase string + + mu sync.Mutex + token string + expires time.Time + now func() time.Time +} + +func newKMSClient(config KMSConfig) *kmsClient { + client := &kmsClient{ + http: &http.Client{Timeout: 10 * time.Second}, + apiBase: config.apiBase, + metadataBase: config.metadataBase, + now: time.Now, + } + if client.apiBase == "" { + client.apiBase = kmsAPIBase + } + if client.metadataBase == "" { + client.metadataBase = kmsMetadataBase + } + return client +} + +// accessToken returns the workload identity's current token. +// +// On GCP the identity needs no file: the metadata server answers for the +// service account bound to the pod, over link-local http that never leaves the +// node. The token is held in memory and refreshed a minute before it expires; +// nothing is written to disk and nothing is delivered to the pod. +func (c *kmsClient) accessToken(ctx context.Context) (string, error) { + c.mu.Lock() + defer c.mu.Unlock() + if c.token != "" && c.now().Before(c.expires) { + return c.token, nil + } + req, err := http.NewRequestWithContext(ctx, http.MethodGet, + c.metadataBase+"instance/service-accounts/default/token", nil) + if err != nil { + return "", err + } + // Required by the metadata server, and it is also what makes the request + // un-forgeable by a browser or a confused proxy: the header cannot be set + // cross-origin. + req.Header.Set("Metadata-Flavor", "Google") + resp, err := c.http.Do(req) + if err != nil { + return "", fmt.Errorf("key service: the workload identity token is unavailable from the metadata server: %w", err) + } + defer func() { _ = resp.Body.Close() }() + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("key service: the metadata server refused a workload identity token (HTTP %d); the pod has no bound service account", resp.StatusCode) + } + var payload struct { + AccessToken string `json:"access_token"` + ExpiresIn int `json:"expires_in"` + } + if err := json.NewDecoder(io.LimitReader(resp.Body, 1<<16)).Decode(&payload); err != nil { + return "", fmt.Errorf("key service: parse workload identity token: %w", err) + } + if payload.AccessToken == "" { + return "", errors.New("key service: the metadata server returned no access token") + } + lifetime := time.Duration(payload.ExpiresIn) * time.Second + if lifetime > time.Minute { + lifetime -= time.Minute + } + c.token, c.expires = payload.AccessToken, c.now().Add(lifetime) + return c.token, nil +} + +// call performs one Cloud KMS request. body nil means GET. +func (c *kmsClient) call(ctx context.Context, path string, body any, out any) error { + token, err := c.accessToken(ctx) + if err != nil { + return err + } + method, reader := http.MethodGet, io.Reader(nil) + if body != nil { + encoded, err := json.Marshal(body) + if err != nil { + return err + } + method, reader = http.MethodPost, bytes.NewReader(encoded) + } + req, err := http.NewRequestWithContext(ctx, method, c.apiBase+path, reader) + if err != nil { + return err + } + req.Header.Set("Authorization", "Bearer "+token) + req.Header.Set("Content-Type", "application/json") + resp, err := c.http.Do(req) + if err != nil { + return fmt.Errorf("key service: cloud kms request failed: %w", err) + } + defer func() { _ = resp.Body.Close() }() + if resp.StatusCode >= 400 { + // Cloud KMS error bodies quote the resource and the caller's identity; + // neither is secret, but the body can also echo request fields, so only + // the status travels — as with the Vault backend. + status := &statusError{service: "cloud kms", status: resp.StatusCode} + switch resp.StatusCode { + case http.StatusUnauthorized, http.StatusForbidden: + return fmt.Errorf("key service: cloud kms refused the workload identity on %s (HTTP %d): grant the pod's service account the matching Cloud KMS role on that key: %w", resourceOf(path), resp.StatusCode, status) + default: + return fmt.Errorf("key service: cloud kms returned %d for %s: %w", resp.StatusCode, resourceOf(path), status) + } + } + if out == nil { + return nil + } + return json.NewDecoder(io.LimitReader(resp.Body, 1<<20)).Decode(out) +} + +// resourceOf strips the operation suffix so a refusal names the key rather than +// the verb that happened to reach it. +func resourceOf(path string) string { + if resource, _, found := strings.Cut(path, ":"); found { + return resource + } + return path +} + +type kmsCryptoKey struct { + Purpose string `json:"purpose"` + VersionTemplate struct { + Algorithm string `json:"algorithm"` + } `json:"versionTemplate"` + Primary struct { + Name string `json:"name"` + State string `json:"state"` + } `json:"primary"` +} + +type kmsCryptoKeyVersion struct { + Name string `json:"name"` + State string `json:"state"` + Algorithm string `json:"algorithm"` +} + +func versionOrdinal(name string) int { + ordinal, err := strconv.Atoi(name[strings.LastIndexByte(name, '/')+1:]) + if err != nil { + return 0 + } + return ordinal +} + +// KMSSealer is the Cloud KMS stored-credential family: a symmetric key for +// seal/open, with the purpose carried as Cloud KMS's own additional +// authenticated data, and a pinned HMAC key version for the keyed hash. +type KMSSealer struct { + client *kmsClient + envelopeKey string + macVersion string + fingerprint string +} + +// NewKMSSealer validates both keys against the workload identity before +// returning, so a misnamed key, a key of the wrong purpose or algorithm, and a +// key the pod cannot reach each refuse at boot — while a deployment can still +// be fixed — rather than surfacing on the first MFA enrolment or API-key +// lookup. +func NewKMSSealer(ctx context.Context, config KMSConfig) (*KMSSealer, error) { + if !cryptoKeyName.MatchString(config.EnvelopeKey) { + return nil, fmt.Errorf("key service: KEY_SERVICE_KMS_ENVELOPE_KEY must be a Cloud KMS cryptoKey resource name (projects//locations//keyRings//cryptoKeys/), got %q", config.EnvelopeKey) + } + if !cryptoKeyVersionName.MatchString(config.MACKey) { + return nil, fmt.Errorf("key service: KEY_SERVICE_KMS_MAC_KEY must be a Cloud KMS cryptoKeyVersion resource name (…/cryptoKeys//cryptoKeyVersions/), got %q — the keyed hash behind API-key lookup is pinned to one version because moving it stops every API key already stored from matching", config.MACKey) + } + client := newKMSClient(config) + if err := requireCryptoKey(ctx, client, config.EnvelopeKey, purposeEncryptDecrypt, algorithmSymmetric); err != nil { + return nil, err + } + var macKey kmsCryptoKeyVersion + if err := client.call(ctx, config.MACKey, nil, &macKey); err != nil { + return nil, err + } + if macKey.Algorithm != algorithmHMACSHA256 { + return nil, fmt.Errorf("key service: cloud kms key version %s is %s; the keyed hash requires %s", config.MACKey, macKey.Algorithm, algorithmHMACSHA256) + } + if macKey.State != versionStateEnabled { + return nil, fmt.Errorf("key service: cloud kms key version %s is %s, not %s", config.MACKey, macKey.State, versionStateEnabled) + } + sealer := &KMSSealer{ + client: client, envelopeKey: config.EnvelopeKey, macVersion: config.MACKey, + fingerprint: keyFingerprint(config.EnvelopeKey), + } + // A seal/open round trip at boot, because every static check above passes on + // a key that is perfectly well-formed and simply is not the one that sealed + // this deployment's data. Doing it here makes a wrong KEY_SERVICE_KMS_ENVELOPE_KEY + // a startup refusal, while the deployment can still be fixed, rather than a + // per-credential 400 discovered during a sync. + payload, err := sealer.Seal(ctx, kmsProbePurpose, kmsProbePlaintext) + if err != nil { + return nil, fmt.Errorf("key service: cloud kms key %s cannot seal: %w", config.EnvelopeKey, err) + } + opened, err := sealer.Open(ctx, kmsProbePurpose, payload) + if err != nil { + return nil, fmt.Errorf("key service: cloud kms key %s cannot open what it sealed: %w", config.EnvelopeKey, err) + } + if opened != kmsProbePlaintext { + return nil, fmt.Errorf("key service: cloud kms key %s round-tripped a different value", config.EnvelopeKey) + } + return sealer, nil +} + +// The boot probe. It is sealed and immediately opened, never stored, so the +// value is arbitrary; the purpose is distinct from every real one so the probe +// cannot be confused with a credential. +const ( + kmsProbePurpose = "key-service-boot-probe" + kmsProbePlaintext = "boot-probe" +) + +func requireCryptoKey(ctx context.Context, client *kmsClient, name, purpose, algorithm string) error { + var key kmsCryptoKey + if err := client.call(ctx, name, nil, &key); err != nil { + return err + } + if key.Purpose != purpose { + return fmt.Errorf("key service: cloud kms key %s has purpose %s; %s is required", name, key.Purpose, purpose) + } + if key.VersionTemplate.Algorithm != algorithm { + return fmt.Errorf("key service: cloud kms key %s is %s; %s is required", name, key.VersionTemplate.Algorithm, algorithm) + } + return nil +} + +func (k *KMSSealer) Tag() string { return TagGCPKMS } + +// Identity names the tag and the key, so two Cloud KMS keys are two backends. +func (k *KMSSealer) Identity() string { return TagGCPKMS + ":" + k.fingerprint } + +// Accepts requires the key as well as the tag. +// +// Cloud KMS answers a ciphertext from a FOREIGN key with the same 400 it answers +// a corrupt one, so routing on the tag alone makes a re-key — or a typo in +// KEY_SERVICE_KMS_ENVELOPE_KEY — indistinguishable from a credential that is +// genuinely unreadable, and callers act on that difference: a datasource sync +// turns an unreadable credential into a permanent "reconnect this source" +// instruction. Naming the key in the envelope is what lets the two be told +// apart, and it is what makes a key-to-key cutover expressible at all. +func (k *KMSSealer) Accepts(envelope Envelope) bool { + if envelope.Backend != TagGCPKMS { + return false + } + sealed, err := parseKMSPayload(envelope.Payload) + return err == nil && sealed.key == k.fingerprint +} + +// kmsPayload is this backend's share of the envelope: the key version that +// sealed the value, a fingerprint of the key itself, and the ciphertext. +type kmsPayload struct { + version int + key string + ciphertext string +} + +func parseKMSPayload(payload string) (kmsPayload, error) { + version, rest, found := strings.Cut(payload, ":") + if !found { + return kmsPayload{}, fmt.Errorf("cloud kms payload names no key version: %w", business.ErrInvalidSecretEnvelope) + } + key, ciphertext, found := strings.Cut(rest, ":") + if !found || key == "" || ciphertext == "" { + return kmsPayload{}, fmt.Errorf("cloud kms payload names no key: %w", business.ErrInvalidSecretEnvelope) + } + // The version is written on the seal path, so a payload that does not carry + // a number there was not written by this backend and is refused rather than + // read past: accepting it would make the recorded version decorative. + ordinal, err := strconv.Atoi(version) + if err != nil || ordinal < 1 { + return kmsPayload{}, fmt.Errorf("cloud kms payload has an invalid key version %q: %w", version, business.ErrInvalidSecretEnvelope) + } + return kmsPayload{version: ordinal, key: key, ciphertext: ciphertext}, nil +} + +// keyFingerprint identifies a cryptoKey in an envelope without storing its +// resource name, which would put the project and key-ring layout in every +// credential row. Truncated to 12 base64url characters: it only has to +// distinguish the handful of keys one deployment binds, and it is compared, never +// resolved. +func keyFingerprint(name string) string { + sum := sha256.Sum256([]byte(name)) + return base64.RawURLEncoding.EncodeToString(sum[:9]) +} + +// Seal encrypts under the key's primary version and records that version in the +// payload, so the stored value names both the backend and the key version that +// sealed it. The purpose is Cloud KMS's additional authenticated data: a +// ciphertext moved between rows fails to decrypt at all rather than decrypting +// and being refused afterwards. +func (k *KMSSealer) Seal(ctx context.Context, purpose, plaintext string) (string, error) { + var result struct { + Name string `json:"name"` + Ciphertext string `json:"ciphertext"` + } + if err := k.client.call(ctx, k.envelopeKey+":encrypt", map[string]string{ + "plaintext": base64.StdEncoding.EncodeToString([]byte(plaintext)), + "additionalAuthenticatedData": base64.StdEncoding.EncodeToString([]byte(purpose)), + }, &result); err != nil { + return "", err + } + if result.Ciphertext == "" { + return "", errors.New("key service: cloud kms encrypt returned no ciphertext") + } + ordinal := versionOrdinal(result.Name) + if ordinal == 0 { + return "", fmt.Errorf("key service: cloud kms encrypt named no key version") + } + return strconv.Itoa(ordinal) + ":" + k.fingerprint + ":" + result.Ciphertext, nil +} + +func (k *KMSSealer) Open(ctx context.Context, purpose, payload string) (string, error) { + sealed, err := parseKMSPayload(payload) + if err != nil { + return "", err + } + // A value sealed under a DIFFERENT Cloud KMS key is a configuration answer, + // never a broken credential. Cloud KMS cannot tell us apart from a corrupt + // ciphertext — both are 400 — so the envelope's own key fingerprint is what + // separates them, and this refusal deliberately does NOT wrap + // business.ErrInvalidSecretEnvelope: callers treat that sentinel as + // permanent and tell the user to re-enter the credential, which would turn + // a mistyped key name into destroyed credentials across every tenant. + if sealed.key != k.fingerprint { + return "", fmt.Errorf("key service: this secret was sealed by a different Cloud KMS key (envelope names key %s, %s names key %s): bind the sealing key as the previous key-service backend until nothing references it, rather than re-entering credentials", + sealed.key, KMSEnvelopeKeyKey, k.fingerprint) + } + var result struct { + Plaintext string `json:"plaintext"` + } + if err := k.client.call(ctx, k.envelopeKey+":decrypt", map[string]string{ + "ciphertext": sealed.ciphertext, + "additionalAuthenticatedData": base64.StdEncoding.EncodeToString([]byte(purpose)), + }, &result); err != nil { + // The key is the one that sealed this value, so a 400 here really is a + // failed integrity check: a corrupt ciphertext, or associated data that + // does not match. Those are indistinguishable and both are the + // invalid-envelope answer every caller already handles. + // + // Every other status is an outage or a permission answer and must NOT + // read as an invalid envelope: a caller that disabled a webhook endpoint + // or dropped a source credential because Cloud KMS was briefly + // unavailable would have destroyed something that was never broken. + var status *statusError + if errors.As(err, &status) && status.status == http.StatusBadRequest { + return "", fmt.Errorf("%w: %w", business.ErrInvalidSecretEnvelope, err) + } + return "", err + } + plaintext, err := base64.StdEncoding.DecodeString(result.Plaintext) + if err != nil || len(plaintext) == 0 { + return "", fmt.Errorf("decode cloud kms plaintext: %w", business.ErrInvalidSecretEnvelope) + } + return string(plaintext), nil +} + +func (k *KMSSealer) MAC(ctx context.Context, plaintext string) (string, error) { + var result struct { + MAC string `json:"mac"` + } + if err := k.client.call(ctx, k.macVersion+":macSign", map[string]string{ + "data": base64.StdEncoding.EncodeToString([]byte(plaintext)), + }, &result); err != nil { + return "", err + } + if result.MAC == "" { + return "", errors.New("key service: cloud kms macSign returned no mac") + } + // Framed like an envelope so a hash this backend produced is recognisable + // and names the key version and key behind it. Only hashes written by THIS + // backend are self-describing: the Vault backend returns Vault's own + // `vault:v:` form, so an audit of what is still looked up under Vault + // cannot be done by reading hashes alone — CandidateHashes is what keeps a + // cutover working, not this framing. + return Envelope{ + Backend: TagGCPKMS, + Payload: strconv.Itoa(versionOrdinal(k.macVersion)) + ":" + k.fingerprint + ":" + result.MAC, + }.String(), nil +} diff --git a/module/services/accounts/code/pkg/keyservice/load.go b/module/services/accounts/code/pkg/keyservice/load.go new file mode 100644 index 000000000..30d47c756 --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/load.go @@ -0,0 +1,270 @@ +package keyservice + +import ( + "context" + "crypto/ed25519" + "errors" + "fmt" + "os" + "strings" + + codefly "github.com/codefly-dev/sdk-go" + + "accounts/pkg/vaultconnection" +) + +// ConfigurationGroup is the workspace group that selects the key service. +const ConfigurationGroup = "key-service" + +// The keys the group carries. Values only: a key NAME is not a secret, and the +// point of the `kms` backend is that there is no credential to deliver. +const ( + // BackendKey selects the backend that seals stored credentials and computes + // the keyed hash. Required outside the local environment. + BackendKey = "KEY_SERVICE_BACKEND" + // PreviousBackendKey names the backend a cutover is migrating away from. It + // is accepted on READ only — nothing new is sealed under it — and is + // withdrawn once no stored value references it. + PreviousBackendKey = "KEY_SERVICE_PREVIOUS_BACKEND" + // SigningBackendKey selects the backend that holds the access-token signing + // key. It defaults to BackendKey. + // + // The two families are selected separately because they move separately: an + // envelope key is migrated by re-sealing, which is reversible and invisible + // to users, while replacing the signing key either re-logs everyone in or + // needs both keys published across the cutover. A deployment that has to do + // one of those today and the other next quarter can say so. + SigningBackendKey = "KEY_SERVICE_SIGNING_BACKEND" + + KMSEnvelopeKeyKey = "KEY_SERVICE_KMS_ENVELOPE_KEY" + KMSMACKeyKey = "KEY_SERVICE_KMS_MAC_KEY" +) + +// Binding is the key service this deployment resolved: the cipher every +// stored-credential caller is wired to, and enough of the selection to build +// the signing family and to register a health probe for a backend that needs +// one. +type Binding struct { + // Backend seals; Previous is accepted on read during a cutover, or "". + Backend, Previous Backend + // SigningBackend holds the access-token signing key. + SigningBackend Backend + Cipher *Cipher + + // Vault is the Vault connection this binding opened, or nil when no family + // selected Vault. A deployment on `kms` for both families has none: no + // address, no AppRole credential, and no Vault health probe to register. + Vault *vaultconnection.Connection + // VaultHealth probes the Vault that holds the envelope key, or nil. + VaultHealth func(ctx context.Context) error + + kms KMSConfig +} + +// Selected is what the `key-service` group says, with nothing bound yet. +type Selected struct { + Backend, Previous, SigningBackend Backend +} + +// Selection reads and validates the selection without reaching any key service. +// +// It is separate from Load so the boot gate can run it before the process has +// acquired anything at all: a deployment that named no backend, or named one +// twice, is told so while it can still be fixed rather than after a database +// pool, a cache and a job runtime are already up. +func Selection(ctx context.Context, local bool) (Selected, error) { + backend, err := selectedBackend(ctx, BackendKey, local) + if err != nil { + return Selected{}, err + } + selection := Selected{Backend: backend, SigningBackend: backend} + if named := groupValue(ctx, SigningBackendKey); named != "" { + if selection.SigningBackend, err = ParseBackend(named); err != nil { + return Selected{}, fmt.Errorf("%s: %w", SigningBackendKey, err) + } + } + if selection.SigningBackend == BackendKMS { + // Named here rather than discovered at the first request. Three + // consumers are handed the signing key and sign on their own — the Work + // Context signer and the delegation minter, which take an + // ed25519.PrivateKey in github.com/codefly-dev/sdk-go and + // github.com/codefly-dev/core, and the OAuth state signer's seed — so a + // key that cannot be exported leaves the Work Context authority + // answering every RPC with a configuration error and the delegation + // minter silently falling back to its v1 HMAC. Refusing the selection + // is the honest answer until those accept a crypto.Signer. + return Selected{}, fmt.Errorf("%s=%s is not supported: a Cloud KMS key cannot be exported, and the Work Context signer (github.com/codefly-dev/sdk-go/workcontext), the delegation minter (github.com/codefly-dev/core policy.MintEd25519) and the OAuth state signer are each handed the signing key itself rather than signing through the key service, so each would need to accept a crypto.Signer first. Leave %s unset or %s while %s=%s seals stored credentials; the two keys are selected separately for exactly this reason", + SigningBackendKey, BackendKMS, SigningBackendKey, BackendVault, BackendKey, BackendKMS) + } + if named := groupValue(ctx, PreviousBackendKey); named != "" { + if selection.Previous, err = ParseBackend(named); err != nil { + return Selected{}, fmt.Errorf("%s: %w", PreviousBackendKey, err) + } + if selection.Previous == backend { + return Selected{}, fmt.Errorf("%s and %s are both %q: a cutover has two backends, and naming one twice would make the sweep that re-seals every stored credential a no-op while reading as progress", BackendKey, PreviousBackendKey, backend) + } + } + return selection, nil +} + +// Load resolves the key service from the `key-service` configuration group. +// +// Every refusal names the key that is missing or wrong, and every one of them +// happens here — before the process acquires anything — so a deployment that +// cannot work is rejected while it can still be fixed rather than discovered +// from a crash loop or, worse, from the first MFA enrolment that fails. +func Load(ctx context.Context) (*Binding, error) { + selection, err := Selection(ctx, codefly.IsLocal()) + if err != nil { + return nil, err + } + backend, previous, signing := selection.Backend, selection.Previous, selection.SigningBackend + + binding := &Binding{Backend: backend, Previous: previous, SigningBackend: signing} + if backend == BackendKMS || previous == BackendKMS { + if binding.kms, err = kmsConfig(ctx, backend, previous); err != nil { + return nil, err + } + } + + seal, err := binding.sealer(ctx, backend) + if err != nil { + return nil, err + } + var previousSealer Sealer + if previous != "" { + if previousSealer, err = binding.sealer(ctx, previous); err != nil { + return nil, fmt.Errorf("bind the previous key-service backend %q: %w", previous, err) + } + } + if binding.Cipher, err = NewCipher(seal, previousSealer); err != nil { + return nil, err + } + return binding, nil +} + +// sealer binds one backend, reusing the Vault connection across families so a +// deployment that selected Vault twice logs in once. +func (b *Binding) sealer(ctx context.Context, backend Backend) (Sealer, error) { + switch backend { + case BackendVault: + connection, err := b.vaultConnection(ctx) + if err != nil { + return nil, err + } + sealer := &VaultSealer{address: connection.Address, connection: connection, client: connection.Client} + if b.VaultHealth == nil { + b.VaultHealth = sealer.Health + } + return sealer, nil + case BackendKMS: + return NewKMSSealer(ctx, b.kms) + default: + return nil, fmt.Errorf("unsupported key-service backend %q", backend) + } +} + +func (b *Binding) vaultConnection(ctx context.Context) (*vaultconnection.Connection, error) { + if b.Vault != nil { + return b.Vault, nil + } + connection, err := vaultconnection.Load(ctx) + if err != nil { + return nil, err + } + b.Vault = connection + return connection, nil +} + +// SigningKey returns the Ed25519 signing key from the backend selected for it. +// +// The key service owns this key's CUSTODY — which service holds it, and the +// refusal when that service cannot answer — but not the signing. The material +// stays in this process because three consumers are handed the key and sign on +// their own; ReadVaultSigningKey says which, and Selection refuses a backend +// that cannot export rather than letting them fail one at a time. +// +// ephemeral is set only for the dev/fixture identity provider in a local run, +// where a freshly generated key lets `codefly run service --fixture dev-admin` +// work on a machine with no Vault. Everywhere else a signing key that cannot be +// loaded is a refusal: an ephemeral one would make each replica sign +// differently, break every existing session, and desynchronise the `kid` the +// gateway pinned. +func (b *Binding) SigningKey(ctx context.Context, ephemeral bool) (ed25519.PrivateKey, error) { + if b.SigningBackend != BackendVault { + return nil, fmt.Errorf("unsupported key-service signing backend %q", b.SigningBackend) + } + connection, err := b.vaultConnection(ctx) + if err != nil { + if ephemeral { + return nil, fmt.Errorf("%w: no usable Vault binding: %w", ErrNoSigningKey, err) + } + return nil, fmt.Errorf("load signing key: no usable Vault binding for secret/data/jwt-signing-key: %w", err) + } + private, err := ReadVaultSigningKey(ctx, connection) + if err == nil { + return private, nil + } + if ephemeral { + // The cause travels with the sentinel: a local developer whose Vault is + // misconfigured has to be told WHY it did not answer, or the fallback + // is diagnosed by guessing. + return nil, fmt.Errorf("%w: %w", ErrNoSigningKey, err) + } + return nil, fmt.Errorf("load signing key from Vault at secret/data/jwt-signing-key: %w", err) +} + +// ErrNoSigningKey reports that no key was loaded and the caller was allowed to +// generate one. It wraps the underlying cause, and is returned only where a +// local run already asked for that, so a caller that mints a key on it cannot be +// reached from a deployment. +var ErrNoSigningKey = errors.New("key service: no signing key is bound") + +// GenerateSigningKey mints a keypair for the local dev fixture. +func GenerateSigningKey() (ed25519.PrivateKey, error) { + _, private, err := ed25519.GenerateKey(nil) + return private, err +} + +func selectedBackend(ctx context.Context, key string, local bool) (Backend, error) { + named := groupValue(ctx, key) + if named == "" { + if !local { + return "", fmt.Errorf("%s is required outside the local environment: select %s in the `%s` configuration group. The two backends have opposite custody models — `vault` runs a stateful secrets store the cell credentials and unseals, `kms` uses the cell's cloud key service with non-exportable keys and the workload's own identity — so an unstated one is refused rather than defaulted into either", key, joinBackends(), ConfigurationGroup) + } + return BackendVault, nil + } + backend, err := ParseBackend(named) + if err != nil { + return "", fmt.Errorf("%s: %w", key, err) + } + return backend, nil +} + +func kmsConfig(ctx context.Context, backend, previous Backend) (KMSConfig, error) { + config := KMSConfig{ + EnvelopeKey: groupValue(ctx, KMSEnvelopeKeyKey), + MACKey: groupValue(ctx, KMSMACKeyKey), + } + var missing []string + if (backend == BackendKMS || previous == BackendKMS) && config.EnvelopeKey == "" { + missing = append(missing, KMSEnvelopeKeyKey) + } + if (backend == BackendKMS || previous == BackendKMS) && config.MACKey == "" { + missing = append(missing, KMSMACKeyKey) + } + if len(missing) > 0 { + return KMSConfig{}, fmt.Errorf("the `kms` key-service backend requires %s in the `%s` configuration group: it reads key names and nothing else, so a missing name is the whole binding rather than a default to fall back on", strings.Join(missing, " and "), ConfigurationGroup) + } + return config, nil +} + +// groupValue reads one key of the `key-service` group, falling back to a plain +// process variable exactly as the rest of accounts' workspace reads do. +func groupValue(ctx context.Context, key string) string { + value, err := codefly.For(ctx).WorkspaceValue(ConfigurationGroup, key) + if err != nil || value == "" { + value = os.Getenv(key) + } + return strings.TrimSpace(value) +} diff --git a/module/services/accounts/code/pkg/keyservice/vault.go b/module/services/accounts/code/pkg/keyservice/vault.go new file mode 100644 index 000000000..023666544 --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/vault.go @@ -0,0 +1,245 @@ +package keyservice + +import ( + "context" + "crypto/ed25519" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "strings" + + ed25519minter "accounts/pkg/auth/ed25519" + "accounts/pkg/business" + "accounts/pkg/vaultconnection" +) + +// transitKeyName is the Transit key every purpose is sealed and hashed under. +// It is a single name on purpose: the keyed hash behind API-key lookup must stay +// comparable with every hash already stored, so the key it is computed under +// cannot move. +const transitKeyName = "api-keys" + +// VaultSealer is the Vault Transit backend: the AppRole + Transit binding +// accounts has always used, behind the key-service seam and otherwise +// unchanged. Its payload is the Vault ciphertext, which carries its own +// `vault:v:` key-version prefix, so the envelope adds nothing to it. +type VaultSealer struct { + address string + token string + connection *vaultconnection.Connection + client *http.Client +} + +// NewVaultSealer binds the cell's Vault through the `vault` configuration +// group. +func NewVaultSealer(ctx context.Context) (*VaultSealer, error) { + connection, err := vaultconnection.Load(ctx) + if err != nil { + return nil, err + } + return &VaultSealer{address: connection.Address, connection: connection, client: connection.Client}, nil +} + +// NewVaultSealerDirect binds an explicit address and token, for a local run and +// for tests against a Vault dev server. +func NewVaultSealerDirect(address, token string) *VaultSealer { + return &VaultSealer{address: address, token: token, client: http.DefaultClient} +} + +func (v *VaultSealer) Tag() string { return TagVaultTransit } + +// Identity is the tag: see Accepts. +func (v *VaultSealer) Identity() string { return TagVaultTransit } + +// Accepts needs only the tag: the Transit key is the `api-keys` constant rather +// than a configured name, so one deployment has exactly one Vault envelope key +// and nothing to disambiguate. +func (v *VaultSealer) Accepts(envelope Envelope) bool { return envelope.Backend == TagVaultTransit } + +// Health hits Vault's /v1/sys/health and returns nil only on the canonical +// 200 / 429 / 472 / 473 codes that signal a reachable and un-sealed Vault. Used +// by the /v1/status probe, so it has to be fast enough for the 2s budget. +func (v *VaultSealer) Health(ctx context.Context) error { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, v.address+"/v1/sys/health", nil) + if err != nil { + return err + } + resp, err := v.client.Do(req) + if err != nil { + return err + } + defer func() { _ = resp.Body.Close() }() + // Vault docs: 200 standby/active OK, 429 standby (still up), 472/473 + // disaster-recovery secondary. Anything else is unhealthy. + switch resp.StatusCode { + case http.StatusOK, http.StatusTooManyRequests, 472, 473: + return nil + default: + return fmt.Errorf("vault unhealthy: HTTP %d", resp.StatusCode) + } +} + +func (v *VaultSealer) MAC(ctx context.Context, plaintext string) (string, error) { + body, err := json.Marshal(map[string]string{ + "input": base64.StdEncoding.EncodeToString([]byte(plaintext)), + }) + if err != nil { + return "", err + } + result, err := v.request(ctx, "/v1/transit/hmac/"+transitKeyName, string(body)) + if err != nil { + return "", fmt.Errorf("vault hmac request: %w", err) + } + hmac, ok := result["hmac"].(string) + if !ok || hmac == "" { + return "", errors.New("vault transit response missing hmac") + } + return hmac, nil +} + +func (v *VaultSealer) Seal(ctx context.Context, purpose, plaintext string) (string, error) { + payload, err := json.Marshal(purposeBoundPayload{Purpose: purpose, Value: plaintext}) + if err != nil { + return "", err + } + body, err := json.Marshal(map[string]string{ + "plaintext": base64.StdEncoding.EncodeToString(payload), + }) + if err != nil { + return "", err + } + result, err := v.request(ctx, "/v1/transit/encrypt/"+transitKeyName, string(body)) + if err != nil { + return "", err + } + ciphertext, ok := result["ciphertext"].(string) + if !ok || ciphertext == "" { + return "", errors.New("vault transit response missing ciphertext") + } + return base64.RawURLEncoding.EncodeToString([]byte(ciphertext)), nil +} + +func (v *VaultSealer) Open(ctx context.Context, purpose, payload string) (string, error) { + ciphertext, err := base64.RawURLEncoding.DecodeString(payload) + if err != nil || len(ciphertext) == 0 { + return "", fmt.Errorf("invalid secret envelope: %w", business.ErrInvalidSecretEnvelope) + } + body, err := json.Marshal(map[string]string{"ciphertext": string(ciphertext)}) + if err != nil { + return "", err + } + result, err := v.request(ctx, "/v1/transit/decrypt/"+transitKeyName, string(body)) + if err != nil { + return "", err + } + encoded, ok := result["plaintext"].(string) + if !ok || encoded == "" { + return "", errors.New("vault transit response missing plaintext") + } + plaintext, err := base64.StdEncoding.DecodeString(encoded) + if err != nil { + return "", fmt.Errorf("decode vault plaintext: %w", err) + } + // Vault Transit's associated data is carried inside the plaintext rather + // than beside the ciphertext, so the purpose is checked here. A payload + // moved between rows decrypts and is then refused. + return openPurposeBoundPayload(purpose, plaintext) +} + +func (v *VaultSealer) request(ctx context.Context, path, body string) (map[string]any, error) { + data, err := v.requestOnce(ctx, path, body) + var refused *statusError + if v.connection != nil && errors.As(err, &refused) && refused.status == http.StatusForbidden { + // Vault refused the token itself (revoked, or its lease ended early): + // an AppRole connection logs in again and this call is retried once. A + // second refusal is a policy answer and is returned as is. + v.connection.Invalidate() + return v.requestOnce(ctx, path, body) + } + return data, err +} + +func (v *VaultSealer) requestOnce(ctx context.Context, path, body string) (map[string]any, error) { + req, err := http.NewRequestWithContext(ctx, http.MethodPost, v.address+path, strings.NewReader(body)) + if err != nil { + return nil, err + } + token := v.token + if v.connection != nil { + token, err = v.connection.Token() + if err != nil { + return nil, err + } + } + req.Header.Set("X-Vault-Token", token) + req.Header.Set("Content-Type", "application/json") + + resp, err := v.client.Do(req) + if err != nil { + return nil, err + } + defer func() { _ = resp.Body.Close() }() + + respBody, _ := io.ReadAll(resp.Body) + if resp.StatusCode >= 400 { + return nil, &statusError{service: "vault", status: resp.StatusCode} + } + var envelope struct { + Data map[string]any `json:"data"` + } + if err := json.Unmarshal(respBody, &envelope); err != nil { + return nil, err + } + return envelope.Data, nil +} + +// ReadVaultSigningKey reads the Ed25519 signing keypair from the Vault the +// `vault` group names, and returns the private half. +// +// The key service owns the signing key's CUSTODY — which service holds it, and +// the refusal when that service cannot answer — but not the signing itself: the +// key material stays in this process because three consumers are handed the key +// and sign on their own (the Work Context signer and the delegation minter, +// which take an ed25519.PrivateKey in github.com/codefly-dev/sdk-go and +// github.com/codefly-dev/core, and the OAuth state signer's seed). Signing +// through a key service that never exports the key needs those three to accept a +// crypto.Signer first, which is why no backend here offers a Sign operation: +// an unreachable one would be an interface nothing could satisfy usefully. +// +// Custody of this key is the cell's, never accounts': see module/KEY_ROTATION.md. +func ReadVaultSigningKey(ctx context.Context, connection *vaultconnection.Connection) (ed25519.PrivateKey, error) { + token, err := connection.Token() + if err != nil { + return nil, err + } + // The connection already resolved and enforced the mesh assertion for this + // address; passing it on keeps the loader's own check consistent with the + // one that admitted the connection rather than re-deriving it from + // configuration a second time. + return ed25519minter.LoadKeyFromVault(ctx, ed25519minter.VaultKeyLoaderConfig{ + Address: connection.Address, Token: token, HTTPClient: connection.Client, + MeshProtected: connection.MeshProtected, + }) +} + +// purposeBoundPayload is the plaintext a backend without native associated data +// seals. The purpose travels with the value so a ciphertext copied between rows +// opens and is then refused. +type purposeBoundPayload struct { + Purpose string `json:"purpose"` + Value string `json:"value"` +} + +func openPurposeBoundPayload(purpose string, plaintext []byte) (string, error) { + var payload purposeBoundPayload + if err := json.Unmarshal(plaintext, &payload); err != nil { + return "", fmt.Errorf("decode secret payload: %w", business.ErrInvalidSecretEnvelope) + } + if payload.Purpose != purpose || payload.Value == "" { + return "", fmt.Errorf("secret purpose mismatch: %w", business.ErrInvalidSecretEnvelope) + } + return payload.Value, nil +} diff --git a/module/services/accounts/code/pkg/keyservice/vault_test.go b/module/services/accounts/code/pkg/keyservice/vault_test.go new file mode 100644 index 000000000..43590877c --- /dev/null +++ b/module/services/accounts/code/pkg/keyservice/vault_test.go @@ -0,0 +1,171 @@ +package keyservice + +// The Vault backend's own behaviour: the Transit wire shape, and the AppRole +// re-login that a revoked token triggers. The properties it shares with every +// backend — the round trip, the purpose binding, an outage that is not an +// invalid credential — are asserted once, in the conformance suite. + +import ( + "context" + "encoding/base64" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "sync" + "testing" + + "github.com/stretchr/testify/require" + + "accounts/pkg/business" + "accounts/pkg/vaultconnection" +) + +func TestVaultSealerUsesTheTransitEndpoints(t *testing.T) { + var encryptedPayload string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, "test-token", r.Header.Get("X-Vault-Token")) + var body map[string]string + require.NoError(t, json.NewDecoder(r.Body).Decode(&body)) + w.Header().Set("Content-Type", "application/json") + switch r.URL.Path { + case "/v1/transit/encrypt/api-keys": + encryptedPayload = body["plaintext"] + _, _ = fmt.Fprint(w, `{"data":{"ciphertext":"vault:v7:test-ciphertext"}}`) + case "/v1/transit/decrypt/api-keys": + require.Equal(t, "vault:v7:test-ciphertext", body["ciphertext"]) + _ = json.NewEncoder(w).Encode(map[string]any{"data": map[string]string{"plaintext": encryptedPayload}}) + case "/v1/transit/hmac/api-keys": + _, _ = fmt.Fprint(w, `{"data":{"hmac":"vault:v1:abc123"}}`) + default: + http.NotFound(w, r) + } + })) + defer server.Close() + + cipher, err := NewCipher(NewVaultSealerDirect(server.URL, "test-token"), nil) + require.NoError(t, err) + + stored, err := cipher.EncryptSecret(t.Context(), "mfa-totp", "TOP-SECRET-SEED") + require.NoError(t, err) + require.True(t, strings.HasPrefix(stored, EnvelopePrefix(TagVaultTransit))) + require.NotContains(t, stored, "TOP-SECRET-SEED") + + plaintext, err := cipher.DecryptSecret(t.Context(), "mfa-totp", stored) + require.NoError(t, err) + require.Equal(t, "TOP-SECRET-SEED", plaintext) + + hash, err := cipher.HashKey(t.Context(), "cfly_sk_live_secret") + require.NoError(t, err) + require.Equal(t, "vault:v1:abc123", hash) +} + +// The stored form is unchanged from before the key service existed: a value +// sealed by the pre-seam code must still open, because nothing re-seals it. +func TestVaultSealerOpensThePreSeamStoredForm(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var body map[string]string + require.NoError(t, json.NewDecoder(r.Body).Decode(&body)) + require.Equal(t, "vault:v1:legacy", body["ciphertext"]) + payload, err := json.Marshal(purposeBoundPayload{Purpose: "mfa-totp", Value: "LEGACYSEED"}) + require.NoError(t, err) + writeVaultData(w, map[string]any{"plaintext": base64.StdEncoding.EncodeToString(payload)}) + })) + defer server.Close() + + cipher, err := NewCipher(NewVaultSealerDirect(server.URL, "token"), nil) + require.NoError(t, err) + // Exactly what rows written before this change hold. + stored := "cfs1:vault-transit:" + base64.RawURLEncoding.EncodeToString([]byte("vault:v1:legacy")) + plaintext, err := cipher.DecryptSecret(t.Context(), "mfa-totp", stored) + require.NoError(t, err) + require.Equal(t, "LEGACYSEED", plaintext) +} + +// There is intentionally no local fallback for the keyed hash: a silent +// downgrade to an unkeyed digest would produce a hash that never matches the one +// written for the same key once the key service recovers. +func TestVaultSealerFailsClosedOnTheKeyedHash(t *testing.T) { + for name, handler := range map[string]http.HandlerFunc{ + "vault errors": func(w http.ResponseWriter, _ *http.Request) { + http.Error(w, "sealed", http.StatusInternalServerError) + }, + "vault answers without an hmac": func(w http.ResponseWriter, _ *http.Request) { + writeVaultData(w, map[string]any{}) + }, + } { + t.Run(name, func(t *testing.T) { + server := httptest.NewServer(handler) + defer server.Close() + _, err := NewVaultSealerDirect(server.URL, "token").MAC(t.Context(), "cfly_sk_live_secret") + require.Error(t, err) + }) + } +} + +func TestVaultSealerRefusesAnUndecodablePayload(t *testing.T) { + sealer := NewVaultSealerDirect("http://unused.invalid", "token") + _, err := sealer.Open(t.Context(), "mfa-totp", "not-base64-url!!") + require.ErrorIs(t, err, business.ErrInvalidSecretEnvelope) +} + +// A Transit call whose token Vault has revoked logs in again and is retried +// once, instead of failing every call until the cached token's lease ends. +func TestVaultSealerLogsInAgainWhenVaultRefusesItsToken(t *testing.T) { + var mu sync.Mutex + logins, transit := 0, []string{} + // Plain http on loopback: the binding has no CA to pin anywhere any more, + // so a TLS fixture would exercise a transport the contract does not have. + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + mu.Lock() + defer mu.Unlock() + w.Header().Set("Content-Type", "application/json") + switch { + case r.URL.Path == "/v1/auth/approle/login": + logins++ + _ = json.NewEncoder(w).Encode(map[string]any{"auth": map[string]any{ + "client_token": fmt.Sprintf("token-%d", logins), "lease_duration": 3600, "renewable": true, + }}) + case strings.HasPrefix(r.URL.Path, "/v1/transit/encrypt/"): + token := r.Header.Get("X-Vault-Token") + transit = append(transit, token) + if token == "token-1" { // revoked out from under the client + w.WriteHeader(http.StatusForbidden) + return + } + _, _ = fmt.Fprint(w, `{"data":{"ciphertext":"vault:v1:sealed"}}`) + default: + w.WriteHeader(http.StatusNotFound) + } + })) + defer server.Close() + connection, err := vaultconnection.New(vaultconnection.Config{ + Address: server.URL, + AppRole: &vaultconnection.AppRoleAuth{RoleID: "role-fixture", SecretID: "secret-fixture"}, + Runtime: vaultconnection.RuntimeLocal, + }) + require.NoError(t, err) + sealer := &VaultSealer{address: connection.Address, connection: connection, client: connection.Client} + + _, err = sealer.request(context.Background(), "/v1/transit/encrypt/api-keys", `{"plaintext":"eA=="}`) + require.NoError(t, err) + require.Equal(t, []string{"token-1", "token-2"}, transit) + require.Equal(t, 2, logins) +} + +func TestVaultSealerHealthAcceptsTheUnsealedCodes(t *testing.T) { + for status, healthy := range map[int]bool{200: true, 429: true, 472: true, 473: true, 500: false, 501: false, 503: false} { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, "/v1/sys/health", r.URL.Path) + w.WriteHeader(status) + })) + err := NewVaultSealerDirect(server.URL, "token").Health(t.Context()) + if healthy { + require.NoError(t, err, "HTTP %d signals a reachable, un-sealed Vault", status) + } else { + require.Error(t, err, "HTTP %d is not healthy", status) + } + server.Close() + } +} diff --git a/module/services/accounts/code/work.go b/module/services/accounts/code/work.go index 3006cc8d0..2ae12c53d 100644 --- a/module/services/accounts/code/work.go +++ b/module/services/accounts/code/work.go @@ -21,11 +21,11 @@ import ( "accounts/pkg/githubconnector" "accounts/pkg/infra" "accounts/pkg/jobs" + "accounts/pkg/keyservice" "accounts/pkg/membership" "accounts/pkg/metrics" "accounts/pkg/permissionsplugin" "accounts/pkg/redisstate" - "accounts/pkg/vaultconnection" "context" ed25519core "crypto/ed25519" "encoding/base64" @@ -56,7 +56,7 @@ func doWork(ctx context.Context) (Clean, error) { // a full bring-up before anyone was told — and made the check unreachable // from a test without standing both of those up, so deleting the call // site was invisible. - if err := requireStartupConfiguration(codefly.IsLocal()); err != nil { + if err := requireStartupConfiguration(ctx, codefly.IsLocal()); err != nil { return nil, err } w := wool.Get(ctx).In("doWork") @@ -310,23 +310,27 @@ func doWork(ctx context.Context) (Clean, error) { } } - // Vault is a required security dependency: API-key HMAC and TOTP seed - // encryption must be stable across replicas and fail closed. - vaultClient, err := infra.NewVaultClient(ctx) + // The key service is a required security dependency: the API-key keyed hash + // and every sealed credential must be stable across replicas and fail + // closed. Which service holds the keys — Vault in-cluster, the cell's cloud + // key service on a hosted deployment — is selected in the `key-service` + // configuration group and refused here when it cannot work. + keys, err := keyservice.Load(ctx) if err != nil { - return nil, fmt.Errorf("configure Vault security services: %w", err) + return nil, fmt.Errorf("configure key service: %w", err) } - service.SetHasher(vaultClient) - service.SetMFASecretCipher(vaultClient) - service.SetOrgIdentityProviderCipher(vaultClient) - service.SetConnectorCipher(vaultClient) + cipher := keys.Cipher + service.SetHasher(cipher) + service.SetMFASecretCipher(cipher) + service.SetOrgIdentityProviderCipher(cipher) + service.SetConnectorCipher(cipher) service.SetGitHubConnector(githubconnector.NewConnector( githubconnector.WithBaseURL(os.Getenv("GITHUB_API_BASE_URL")))) - // Datasource connector (issue #274): per-source credentials are Vault-transit - // encrypted, and pulled files are enqueued onto the durable inbox seam the + // Datasource connector (issue #274): per-source credentials are sealed by the + // key service, and pulled files are enqueued onto the durable inbox seam the // documents module consumes. GITHUB_API_BASE_URL overrides api.github.com for // GitHub Enterprise or tests. - service.SetDatasourceConnector(vaultClient, jobStore, os.Getenv("GITHUB_API_BASE_URL")) + service.SetDatasourceConnector(cipher, jobStore, os.Getenv("GITHUB_API_BASE_URL")) // Every provider credential's operations are metered in one window shared by // every replica, so a sync a person starts is served before background work. service.SetDatasourceBudgetStore(store) @@ -347,7 +351,7 @@ func doWork(ctx context.Context) (Clean, error) { workspaceEnv("github-app", "GITHUB_APP_CLIENT_SECRET"), ) webhookPolicy := business.NewWebhookEndpointPolicy() - service.SetWebhookSecurity(vaultClient, webhookPolicy) + service.SetWebhookSecurity(cipher, webhookPolicy) webAuthnRPID, webAuthnDisplayName, webAuthnOrigins, err := configuredWebAuthn() if err != nil { return nil, fmt.Errorf("configure WebAuthn: %w", err) @@ -357,12 +361,12 @@ func doWork(ctx context.Context) (Clean, error) { return nil, err } service.SetWebAuthnEngine(webAuthnEngine) - if migrated, err := store.MigrateLegacyMFASecrets(ctx, vaultClient); err != nil { + if migrated, err := store.MigrateLegacyMFASecrets(ctx, cipher); err != nil { return nil, fmt.Errorf("migrate legacy MFA secrets: %w", err) } else if migrated > 0 { w.Info("encrypted legacy MFA secrets", wool.Field("count", migrated)) } - if migrated, disabled, err := store.MigrateLegacyWebhookSecrets(ctx, vaultClient); err != nil { + if migrated, disabled, err := store.MigrateLegacyWebhookSecrets(ctx, cipher); err != nil { return nil, fmt.Errorf("migrate legacy webhook secrets: %w", err) } else if migrated > 0 { w.Info("encrypted legacy webhook secrets", @@ -387,7 +391,7 @@ func doWork(ctx context.Context) (Clean, error) { if err := requireLocalForDevFixtureProvider(authProvider, codefly.IsLocal()); err != nil { return nil, err } - priv, err := loadSigningKey(ctx, devFixtureAuthProvider(authProvider), codefly.IsLocal()) + priv, err := loadSigningKey(ctx, keys, devFixtureAuthProvider(authProvider), codefly.IsLocal()) if err != nil { return nil, err } @@ -584,7 +588,7 @@ func doWork(ctx context.Context) (Clean, error) { // org falls back to this global default (v, ex). Stacks build lazily on // first use and are cache-invalidated when their configuration changes. service.SetIdentityProviderRegistry( - newIdentityProviderRegistry(store, vaultClient, authProvider, v, ex)) + newIdentityProviderRegistry(store, cipher, authProvider, v, ex)) } // Audit persistence and matching webhook fan-out share one database @@ -663,7 +667,7 @@ func doWork(ctx context.Context) (Clean, error) { // Every outbound path shares the generated generic job runtime. This // separate pool can only read endpoint configuration and project outcomes. - webhookSender := business.NewWebhookSender(vaultClient, webhookPolicy) + webhookSender := business.NewWebhookSender(cipher, webhookPolicy) webhookProjectionPool, err := infra.NewWebhookProjectionPool(ctx) if err != nil { return nil, fmt.Errorf("configure outbound webhook projection database pool: %w", err) @@ -788,10 +792,13 @@ func doWork(ctx context.Context) (Clean, error) { return store.Pool().Ping(ctx) }, }) - if vaultClient != nil { + // A deployment on the cloud key service has no Vault at all, so there is no + // probe to register: registering one that always failed would report a + // dependency this deployment deliberately does not have. + if keys.VaultHealth != nil { adapters.RegisterStatusProbe(adapters.StatusProbe{ Name: "vault", - Check: vaultClient.Health, + Check: keys.VaultHealth, }) } adapters.RegisterHTTPRoute("/v1/status", adapters.NewStatusHTTPHandler(service)) @@ -2167,62 +2174,62 @@ func requireLocalForDevFixtureProvider(authProvider string, isLocal bool) error return nil } -// loadSigningKey returns the Ed25519 private key used to sign access and -// refresh tokens. +// loadSigningKey returns the host's Ed25519 access-token signing key, from +// whichever backend the `key-service` group selected for it. // // The key must persist across restarts and be identical across replicas: it // signs JWTs, seeds the OAuth-state signer, and is the public key the gateway's -// ext_authz check and permissions plugin pin. Production loads it from Vault KV v2 and refuses -// to boot if that load fails — an ephemeral key would make each replica sign +// ext_authz check and permissions plugin pin. A deployed environment refuses to +// boot if the load fails — an ephemeral key would make each replica sign // differently, break existing sessions, and desynchronise the pinned key. This // fails closed rather than fail-open-to-broken. // -// The key's custody is the cell's, never accounts': the platform's -// identity-seeding command writes the keypair to Vault once, create-only, from -// the cell's durable seed, so a re-seed restores the *same* keypair and the -// `kid` the gateway pinned does not move (module/KEY_ROTATION.md, "Custody of -// the signing key"). accounts therefore never generates one outside the local -// environment: a self-minted key would silently diverge from that seed, -// invalidating every live session and leaving two cells signing differently. +// On the `vault` backend the key's custody is the cell's, never accounts': the +// platform's identity-seeding command writes the keypair to Vault once, +// create-only, from the cell's durable seed, so a re-seed restores the *same* +// keypair and the `kid` the gateway pinned does not move +// (module/KEY_ROTATION.md, "Custody of the signing key"). accounts therefore +// never generates one outside the local environment: a self-minted key would +// silently diverge from that seed, invalidating every live session and leaving +// two cells signing differently. // // The refusal quotes VAULT_KEY_CUSTODY from the `vault` configuration group // when the cell sets it, so the operator reading a crash loop sees their own // seeding command rather than a sentence about one. This module never names // that command itself: a module names nothing above it. // +// On the `kms` backend there is no command and no seeding: the key is a Cloud +// KMS key version the cell provisions, and its material never leaves the +// service — which is also why selecting it refuses at the call site above, see +// keyservice.SigningKey.InProcessPrivateKey. +// // allowEphemeral is set only in dev/fixture mode, where a freshly generated key // lets `codefly run service frontend --fixture dev-admin` work on a machine with // no Vault. The fallback logs a warning. isLocal is checked here as well as at // the provider gate: the two conditions are enforced in different functions, and // an argument that spans two functions is one a later edit can quietly break. -func loadSigningKey(ctx context.Context, allowEphemeral, isLocal bool) (ed25519core.PrivateKey, error) { +func loadSigningKey( + ctx context.Context, + keys *keyservice.Binding, + allowEphemeral, isLocal bool, +) (ed25519core.PrivateKey, error) { ephemeral := allowEphemeral && isLocal - connection, connectionErr := vaultconnection.Load(ctx) - if connectionErr == nil { - vaultToken, tokenErr := connection.Token() - if tokenErr != nil { - return nil, tokenErr - } - // The connection already resolved and enforced the mesh assertion for - // this address; passing it on keeps the loader's own check consistent - // with the one that admitted the connection rather than re-deriving it - // from configuration a second time. - priv, err := ed25519minter.LoadKeyFromVault(ctx, ed25519minter.VaultKeyLoaderConfig{ - Address: connection.Address, Token: vaultToken, HTTPClient: connection.Client, - MeshProtected: connection.MeshProtected, - }) - if err == nil { - return priv, nil - } - if !ephemeral { - return nil, fmt.Errorf("load signing key from Vault at secret/data/jwt-signing-key: %w — seed it from the cell's durable identity seed%s; accounts never mints its own outside the local environment", err, keyCustodyHint()) - } - wool.Get(ctx).In("loadSigningKey").Warn("could not load signing key from Vault — falling back to ephemeral", wool.ErrField(err)) - } else if !ephemeral { - return nil, fmt.Errorf("load signing key: no usable Vault binding for secret/data/jwt-signing-key: %w — name the cell's Vault in the `vault` configuration group, then seed the key from the cell's durable identity seed%s", connectionErr, keyCustodyHint()) + key, err := keys.SigningKey(ctx, ephemeral) + switch { + case err == nil: + return key, nil + case errors.Is(err, keyservice.ErrNoSigningKey): + // The cause travels with the sentinel, so a local developer whose Vault + // is misconfigured is told WHY it did not answer rather than being left + // to guess from "no signing key is bound". + wool.Get(ctx).In("loadSigningKey").Warn( + "could not load the signing key — falling back to ephemeral", wool.ErrField(err)) + return keyservice.GenerateSigningKey() + case keys.SigningBackend == keyservice.BackendVault: + return nil, fmt.Errorf("%w — seed it from the cell's durable identity seed%s; accounts never mints its own outside the local environment", err, keyCustodyHint()) + default: + return nil, err } - _, priv, err := ed25519minter.GenerateKey() - return priv, err } // requireStartupConfiguration refuses to start on configuration that cannot @@ -2230,8 +2237,12 @@ func loadSigningKey(ctx context.Context, allowEphemeral, isLocal bool) (ed25519c // configuration requirement is registered, so each is enforced at a moment a // deployment can still be fixed rather than discovered from a crash loop — and // so a test can reach all of them with nothing running. -func requireStartupConfiguration(isLocal bool) error { - return requireKeyCustody(isLocal) +func requireStartupConfiguration(ctx context.Context, isLocal bool) error { + selection, err := keyservice.Selection(ctx, isLocal) + if err != nil { + return err + } + return requireKeyCustody(selection.SigningBackend, isLocal) } // requireKeyCustody refuses to start outside the local environment without the @@ -2249,8 +2260,16 @@ func requireStartupConfiguration(isLocal bool) error { // This module cannot name the command itself: it names nothing above it, and // the verb belongs to the cell. So the composition supplies it and this only // insists that it did. -func requireKeyCustody(isLocal bool) error { - if isLocal || strings.TrimSpace(workspaceEnv("vault", "VAULT_KEY_CUSTODY")) != "" { +func requireKeyCustody(signingBackend keyservice.Backend, isLocal bool) error { + // Only the `vault` backend has a seeding command to name. A Cloud KMS key + // version is provisioned as cloud resources and read by name, so there is + // no key for an operator to write and nothing for this diagnostic to quote; + // insisting on it there would be a configuration requirement that cannot be + // satisfied. + if isLocal || signingBackend != keyservice.BackendVault { + return nil + } + if strings.TrimSpace(workspaceEnv("vault", "VAULT_KEY_CUSTODY")) != "" { return nil } return fmt.Errorf("vault: VAULT_KEY_CUSTODY is required outside the local environment: set it in the `vault` configuration group to the command this cell uses to seed secret/data/jwt-signing-key, so an operator meeting a missing-key refusal is told what to run rather than left to mint a key by hand (module/KEY_ROTATION.md, \"Custody of the signing key\")") diff --git a/module/services/accounts/code/work_auth_test.go b/module/services/accounts/code/work_auth_test.go index 57f6e0d4d..78644f98d 100644 --- a/module/services/accounts/code/work_auth_test.go +++ b/module/services/accounts/code/work_auth_test.go @@ -1,6 +1,7 @@ package main import ( + "accounts/pkg/keyservice" "context" "crypto/sha256" "fmt" @@ -45,6 +46,15 @@ func clearAuthProviderEnvironment(t *testing.T) { // ci run` the group is populated from this module's own local defaults — // including the placeholder AppRole credential in vault.secret.env. Proven by // running this package with every carrier set to garbage. +// vaultSigningBinding is the key-service binding these cases exercise: the +// signing key on Vault, which is the only backend that can hold it. +func vaultSigningBinding() *keyservice.Binding { + return &keyservice.Binding{ + Backend: keyservice.BackendVault, + SigningBackend: keyservice.BackendVault, + } +} + func clearVaultBinding(t *testing.T) { t.Helper() for _, key := range []string{ @@ -55,6 +65,13 @@ func clearVaultBinding(t *testing.T) { t.Setenv("CODEFLY__WORKSPACE_CONFIGURATION__VAULT__"+key, "") t.Setenv("CODEFLY__WORKSPACE_SECRET_CONFIGURATION__VAULT__"+key, "") } + for _, key := range []string{ + "KEY_SERVICE_BACKEND", "KEY_SERVICE_PREVIOUS_BACKEND", "KEY_SERVICE_SIGNING_BACKEND", + "KEY_SERVICE_KMS_ENVELOPE_KEY", "KEY_SERVICE_KMS_MAC_KEY", + } { + t.Setenv(key, "") + t.Setenv("CODEFLY__WORKSPACE_CONFIGURATION__KEY_SERVICE__"+key, "") + } t.Setenv("MESH_PROTECTED", "") t.Setenv("CODEFLY__WORKSPACE_CONFIGURATION__INTERNAL_TRANSPORT__MESH_PROTECTED", "") t.Setenv("CODEFLY__SERVICE_CONFIGURATION__SAAS_STARTER__VAULT___VAULT__ADDRESS", "") @@ -385,14 +402,14 @@ func TestLoadSigningKeyFailsClosedOutsideDevFixture(t *testing.T) { clearAuthProviderEnvironment(t) clearVaultBinding(t) - _, err := loadSigningKey(context.Background(), false, true) + _, err := loadSigningKey(context.Background(), vaultSigningBinding(), false, true) require.Error(t, err) require.Contains(t, err.Error(), "Vault") require.Contains(t, err.Error(), "secret/data/jwt-signing-key") require.Contains(t, err.Error(), "durable identity seed") require.Contains(t, err.Error(), "KEY_ROTATION.md") - priv, err := loadSigningKey(context.Background(), true, true) + priv, err := loadSigningKey(context.Background(), vaultSigningBinding(), true, true) require.NoError(t, err) require.NotEmpty(t, priv) } @@ -415,15 +432,15 @@ func keyCustody(t *testing.T, value string) { func TestKeyCustodyIsRequiredOutsideLocal(t *testing.T) { clearVaultBinding(t) keyCustody(t, "") - err := requireKeyCustody(false) + err := requireKeyCustody(keyservice.BackendVault, false) require.Error(t, err) require.Contains(t, err.Error(), "VAULT_KEY_CUSTODY is required outside the local environment") require.Contains(t, err.Error(), "secret/data/jwt-signing-key") - require.NoError(t, requireKeyCustody(true), "a local run has no cell and no seeding command") + require.NoError(t, requireKeyCustody(keyservice.BackendVault, true), "a local run has no cell and no seeding command") keyCustody(t, "platform-cli seed-identity example-cell") - require.NoError(t, requireKeyCustody(false)) + require.NoError(t, requireKeyCustody(keyservice.BackendVault, false)) } // The cell's own seeding command reaches the operator through the `vault` @@ -435,13 +452,13 @@ func TestSigningKeyRefusalQuotesTheCellsCustodyCommand(t *testing.T) { clearVaultBinding(t) keyCustody(t, " platform-cli seed-identity\n FORGED log line\t ") - _, err := loadSigningKey(context.Background(), false, true) + _, err := loadSigningKey(context.Background(), vaultSigningBinding(), false, true) require.Error(t, err) require.Contains(t, err.Error(), "platform-cli seed-identity FORGED log line ") require.NotContains(t, err.Error(), "\n") keyCustody(t, strings.Repeat("x", 500)) - _, err = loadSigningKey(context.Background(), false, true) + _, err = loadSigningKey(context.Background(), vaultSigningBinding(), false, true) require.Error(t, err) require.Contains(t, err.Error(), strings.Repeat("x", 200)+"…") require.NotContains(t, err.Error(), strings.Repeat("x", 201)) @@ -455,7 +472,7 @@ func TestLoadSigningKeyNeverSelfMintsOutsideLocal(t *testing.T) { clearAuthProviderEnvironment(t) clearVaultBinding(t) - _, err := loadSigningKey(context.Background(), true, false) + _, err := loadSigningKey(context.Background(), vaultSigningBinding(), true, false) require.Error(t, err) require.Contains(t, err.Error(), "durable identity seed") } @@ -550,6 +567,51 @@ func TestConfigureModuleIdentity(t *testing.T) { } } +// keyServiceBackend selects the key-service backend on both carriers, for the +// same reason keyCustody sets both: workspaceEnv prefers the group, and under +// `codefly ci run` the group is populated from this module's own local defaults. +func keyServiceBackend(t *testing.T, backend string) { + t.Helper() + t.Setenv("KEY_SERVICE_BACKEND", backend) + t.Setenv("CODEFLY__WORKSPACE_CONFIGURATION__KEY_SERVICE__KEY_SERVICE_BACKEND", backend) +} + +// A hosted boot that names no key service refuses by name. The two backends have +// opposite custody models — one runs a stateful secrets store the cell unseals +// and credentials, the other uses non-exportable cloud keys and the workload's +// own identity — so inheriting either by default would mean reaching a key +// service nobody chose. Driven through doWork, because a guard that only the +// helper's test reaches is one a later edit can delete from startup silently. +func TestStartupRefusesAHostedBootWithNoKeyServiceBackend(t *testing.T) { + clearAuthProviderEnvironment(t) + clearVaultBinding(t) + t.Setenv("CODEFLY__ENVIRONMENT", "hosted") + keyCustody(t, "platform-cli seed-identity example-cell") + + _, err := doWork(context.Background()) + require.Error(t, err) + require.Contains(t, err.Error(), "KEY_SERVICE_BACKEND is required outside the local environment") + require.Contains(t, err.Error(), "key-service") +} + +// `kms` cannot hold the signing key, and the refusal says so by name rather than +// leaving the Work Context authority to answer every RPC with a configuration +// error and the delegation minter to fall back to its v1 HMAC. +func TestStartupRefusesACloudKMSSigningBackend(t *testing.T) { + clearAuthProviderEnvironment(t) + clearVaultBinding(t) + t.Setenv("CODEFLY__ENVIRONMENT", "hosted") + keyCustody(t, "platform-cli seed-identity example-cell") + keyServiceBackend(t, "vault") + t.Setenv("KEY_SERVICE_SIGNING_BACKEND", "kms") + t.Setenv("CODEFLY__WORKSPACE_CONFIGURATION__KEY_SERVICE__KEY_SERVICE_SIGNING_BACKEND", "kms") + + _, err := doWork(context.Background()) + require.Error(t, err) + require.Contains(t, err.Error(), "KEY_SERVICE_SIGNING_BACKEND=kms is not supported") + require.Contains(t, err.Error(), "crypto.Signer") +} + // The call site, not just the helper. The helper's own test stays green when // somebody deletes the call from startup, which is how a guard becomes // decorative — so this drives doWork itself with hosted carriers and no custody @@ -562,6 +624,11 @@ func TestStartupRefusesAHostedBootWithNoCustodyCommand(t *testing.T) { clearAuthProviderEnvironment(t) clearVaultBinding(t) t.Setenv("CODEFLY__ENVIRONMENT", "hosted") + // A hosted boot with no key-service backend selected refuses on THAT first + // (TestStartupRefusesAHostedBootWithNoKeyServiceBackend covers it), so the + // backend is selected here: otherwise the earlier guard fires and this test + // passes without ever reaching the custody requirement it is about. + keyServiceBackend(t, "vault") _, err := doWork(context.Background()) require.Error(t, err) diff --git a/module/services/accounts/service.codefly.yaml b/module/services/accounts/service.codefly.yaml index 60b27bbaa..5dc83c609 100644 --- a/module/services/accounts/service.codefly.yaml +++ b/module/services/accounts/service.codefly.yaml @@ -35,6 +35,7 @@ workspace-configuration-dependencies: - identity - internal-auth - internal-transport + - key-service - module-capabilities - observability - product-analytics From 8d2fdda07adb527a6afd91ba608399eb6c2734c6 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:09:54 -0400 Subject: [PATCH 02/10] docs(accounts): point the signing-key comment at the symbol that still exists The kms branch of loadSigningKey's doc named keyservice.SigningKey.InProcessPrivateKey, which the removal of the unreachable KMS signing backend deleted. A comment pointing at a symbol that is gone sends the next reader looking for a refusal that now lives in keyservice.Selection. Co-Authored-By: Claude Opus 5 (1M context) --- module/services/accounts/code/work.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/module/services/accounts/code/work.go b/module/services/accounts/code/work.go index 2ae12c53d..f0c9391db 100644 --- a/module/services/accounts/code/work.go +++ b/module/services/accounts/code/work.go @@ -2198,10 +2198,11 @@ func requireLocalForDevFixtureProvider(authProvider string, isLocal bool) error // seeding command rather than a sentence about one. This module never names // that command itself: a module names nothing above it. // -// On the `kms` backend there is no command and no seeding: the key is a Cloud -// KMS key version the cell provisions, and its material never leaves the -// service — which is also why selecting it refuses at the call site above, see -// keyservice.SigningKey.InProcessPrivateKey. +// The `kms` backend cannot hold this key at all, and keyservice.Selection +// refuses it there by name: its material never leaves the service, while the +// Work Context signer, the delegation minter and the OAuth state signer are each +// handed the key itself. So there is no custody command to name on that backend +// because the backend is not reachable for this key — see ReadVaultSigningKey. // // allowEphemeral is set only in dev/fixture mode, where a freshly generated key // lets `codefly run service frontend --fixture dev-admin` work on a machine with From cadef0e653148911e3bc8f71c748d786348c4242 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:26:36 -0400 Subject: [PATCH 03/10] feat(accounts): re-seal every enveloped column under the selected key service (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A cutover has two halves. Reads work from the moment both backends are bound, because every envelope names the backend that sealed it. Withdrawing the outgoing backend is the half that needed a verb: until nothing references it, removing it from the deployment turns every value it sealed into a credential nobody can read. ResealEnvelopes does the two things that are really one — it re-seals what the outgoing backend holds, and it reports what is left. The report is the answer to "is it safe to withdraw the previous backend", and it is the only honest way to ask: a sweep returning only what it changed cannot tell "finished" from "failed on the first row". A row it cannot open is counted rather than swallowed or fatal, so one unreadable value does not hide the state of every other column. Nine enveloped columns across seven tables. The purpose is per row for most of them — it binds a ciphertext to the row it belongs to — so the sweep has to reconstruct exactly the purpose each value was sealed under, which is why every entry names the column its purpose derives from rather than assuming the primary key. webauthn_credentials has no `id` at all; it is keyed by device_id, which a test caught rather than review. Restart-safe and idempotent: a value the selected backend already sealed is skipped with no key-service call, and each write is a compare-and-swap on the exact envelope that was read, so an interrupted run resumes and two replicas cannot lose a row. Key-service calls happen outside the transactions — each is a network round trip, and holding one open across thousands would pin a connection and a snapshot for the length of the sweep. Both halves run on the control plane because credential custody is platform-wide by definition: the sweep covers every tenant's rows, so there is no org or user scope it could run under. The inventory being complete is not something review can see — a purpose nobody re-seals keeps the outgoing backend referenced forever while the sweep still reports success. So TestResealCoversEveryDeclaredPurpose derives the purpose set from pkg/business's own source with go/ast and fails when one is missing, in both directions. Proven to bite: adding an uncovered purpose constant to pkg/business fails it by name. That required declaring MFATOTPPurpose and exporting the two WebAuthn purposes, which existed only as literals and as unexported constants — a purpose a check cannot name is one it cannot enforce. Wired to run only while a previous backend is configured, which is exactly the cutover window; a settled deployment does no work. The remaining columns are named in the warning, not just counted: an operator who withdraws the backend on a partial success makes those values unreadable, and "which rows" is the difference between a retry and an incident. Verified against real Postgres: one seeded row in all nine columns moves, still opens under the purpose it was bound to, and a second run changes nothing; a row sealed by an unbound backend is reported and left untouched. The full ./pkg/infra suite passes, so the sweep's table cleanup does not disturb sibling suites, and the new control-plane call sites are registered in the generated allowlist. Co-Authored-By: Claude Opus 5 (1M context) --- .../accounts/code/pkg/business/mfa.go | 12 +- .../accounts/code/pkg/business/webauthn.go | 18 +- .../infra/keyservice_reseal_inventory_test.go | 123 ++++++++ .../pkg/infra/postgres_keyservice_reseal.go | 249 +++++++++++++++ .../infra/postgres_keyservice_reseal_test.go | 296 ++++++++++++++++++ .../accounts/code/pkg/infra/postgres_mfa.go | 2 +- .../testdata/control_plane_call_sites.txt | 2 + module/services/accounts/code/work.go | 29 ++ 8 files changed, 718 insertions(+), 13 deletions(-) create mode 100644 module/services/accounts/code/pkg/infra/keyservice_reseal_inventory_test.go create mode 100644 module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go create mode 100644 module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go diff --git a/module/services/accounts/code/pkg/business/mfa.go b/module/services/accounts/code/pkg/business/mfa.go index f318d1607..1ee2b1686 100644 --- a/module/services/accounts/code/pkg/business/mfa.go +++ b/module/services/accounts/code/pkg/business/mfa.go @@ -66,6 +66,12 @@ type SecretCipher interface { DecryptSecret(ctx context.Context, purpose, envelope string) (string, error) } +// MFATOTPPurpose binds a TOTP seed's envelope to that purpose. Declared rather +// than written at each call site so the set of purposes is derivable from +// source: the re-seal inventory must cover every one, and a purpose that exists +// only as a literal is one such a check cannot see. +const MFATOTPPurpose = "mfa-totp" + const ( totpSecretBytes = 32 totpPeriod = 30 @@ -121,7 +127,7 @@ func (s *Service) SetupTOTP(ctx context.Context, userID string) (secret string, return "", "", w.Wrapf(err, "cannot generate TOTP secret") } secretB32 := base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(raw) - encryptedSecret, err := s.mfaCipher.EncryptSecret(ctx, "mfa-totp", secretB32) + encryptedSecret, err := s.mfaCipher.EncryptSecret(ctx, MFATOTPPurpose, secretB32) if err != nil { return "", "", w.Wrapf(err, "cannot encrypt TOTP secret") } @@ -186,7 +192,7 @@ func (s *Service) VerifyTOTP(ctx context.Context, userID, code string) error { if device.DeviceType != "totp" || device.VerifiedAt != nil { continue } - secretB32, err := s.mfaCipher.DecryptSecret(ctx, "mfa-totp", device.SecretEncrypted) + secretB32, err := s.mfaCipher.DecryptSecret(ctx, MFATOTPPurpose, device.SecretEncrypted) if err != nil { w.Warn("failed to decrypt TOTP secret for device", wool.Field("device_id", device.ID), wool.ErrField(err)) continue @@ -352,7 +358,7 @@ func validateMFACodeInTx(ctx context.Context, mfaStore MFAStore, cipher SecretCi if device.DeviceType != "totp" || device.VerifiedAt == nil { continue } - secretB32, err := cipher.DecryptSecret(ctx, "mfa-totp", device.SecretEncrypted) + secretB32, err := cipher.DecryptSecret(ctx, MFATOTPPurpose, device.SecretEncrypted) if err != nil { return false, "", w.Wrapf(err, "cannot decrypt TOTP secret") } diff --git a/module/services/accounts/code/pkg/business/webauthn.go b/module/services/accounts/code/pkg/business/webauthn.go index 4e3176370..494e5cace 100644 --- a/module/services/accounts/code/pkg/business/webauthn.go +++ b/module/services/accounts/code/pkg/business/webauthn.go @@ -18,8 +18,8 @@ import ( const ( webAuthnCeremonyTTL = 5 * time.Minute - webAuthnCredentialPurpose = "mfa-webauthn-credential" - webAuthnSessionPurpose = "mfa-webauthn-session" + WebAuthnCredentialPurpose = "mfa-webauthn-credential" + WebAuthnSessionPurpose = "mfa-webauthn-session" ) var ErrWebAuthnCeremonyRejected = errors.New("WebAuthn ceremony rejected") @@ -116,7 +116,7 @@ func (s *Service) BeginWebAuthnRegistration(ctx context.Context, userID string) if expiresAt.IsZero() || expiresAt.After(time.Now().Add(webAuthnCeremonyTTL)) { expiresAt = time.Now().Add(webAuthnCeremonyTTL) } - encrypted, err := s.mfaCipher.EncryptSecret(txCtx, webAuthnSessionPurpose, string(session)) + encrypted, err := s.mfaCipher.EncryptSecret(txCtx, WebAuthnSessionPurpose, string(session)) if err != nil { return w.Wrapf(err, "encrypt WebAuthn registration state") } @@ -160,7 +160,7 @@ func (s *Service) FinishWebAuthnRegistration(ctx context.Context, userID, ceremo if err != nil { return ErrWebAuthnCeremonyRejected } - sessionJSON, err := s.mfaCipher.DecryptSecret(txCtx, webAuthnSessionPurpose, ceremony.SessionDataEncrypted) + sessionJSON, err := s.mfaCipher.DecryptSecret(txCtx, WebAuthnSessionPurpose, ceremony.SessionDataEncrypted) if err != nil { return w.Wrapf(err, "decrypt WebAuthn registration state") } @@ -172,7 +172,7 @@ func (s *Service) FinishWebAuthnRegistration(ctx context.Context, userID, ceremo if err != nil || result == nil || len(result.ID) == 0 || len(result.CredentialJSON) == 0 { return ErrWebAuthnCeremonyRejected } - encrypted, err := s.mfaCipher.EncryptSecret(txCtx, webAuthnCredentialPurpose, string(result.CredentialJSON)) + encrypted, err := s.mfaCipher.EncryptSecret(txCtx, WebAuthnCredentialPurpose, string(result.CredentialJSON)) if err != nil { return w.Wrapf(err, "encrypt WebAuthn credential") } @@ -244,7 +244,7 @@ func (s *Service) BeginWebAuthnMFAChallenge(ctx context.Context, mfaToken string if expiresAt.IsZero() || expiresAt.After(time.Now().Add(webAuthnCeremonyTTL)) { expiresAt = time.Now().Add(webAuthnCeremonyTTL) } - encrypted, err := s.mfaCipher.EncryptSecret(txCtx, webAuthnSessionPurpose, string(session)) + encrypted, err := s.mfaCipher.EncryptSecret(txCtx, WebAuthnSessionPurpose, string(session)) if err != nil { return w.Wrapf(err, "encrypt WebAuthn login state") } @@ -287,7 +287,7 @@ func (s *Service) CompleteWebAuthnMFAChallenge(ctx context.Context, mfaToken, ce if err != nil { return ErrMFAChallengeRejected } - sessionJSON, err := s.mfaCipher.DecryptSecret(txCtx, webAuthnSessionPurpose, ceremony.SessionDataEncrypted) + sessionJSON, err := s.mfaCipher.DecryptSecret(txCtx, WebAuthnSessionPurpose, ceremony.SessionDataEncrypted) if err != nil { return w.Wrapf(err, "decrypt WebAuthn login state") } @@ -309,7 +309,7 @@ func (s *Service) CompleteWebAuthnMFAChallenge(ctx context.Context, mfaToken, ce if matched == nil { return ErrMFAChallengeRejected } - matched.CredentialEncrypted, err = s.mfaCipher.EncryptSecret(txCtx, webAuthnCredentialPurpose, string(result.CredentialJSON)) + matched.CredentialEncrypted, err = s.mfaCipher.EncryptSecret(txCtx, WebAuthnCredentialPurpose, string(result.CredentialJSON)) if err != nil { return w.Wrapf(err, "encrypt updated WebAuthn credential") } @@ -370,7 +370,7 @@ func (s *Service) webAuthnUserAndRecordsInTx(ctx context.Context, store WebAuthn return WebAuthnUser{}, nil, err } for _, record := range records { - plaintext, err := s.mfaCipher.DecryptSecret(ctx, webAuthnCredentialPurpose, record.CredentialEncrypted) + plaintext, err := s.mfaCipher.DecryptSecret(ctx, WebAuthnCredentialPurpose, record.CredentialEncrypted) if err != nil { return WebAuthnUser{}, nil, fmt.Errorf("decrypt WebAuthn credential %s: %w", base64.RawURLEncoding.EncodeToString(record.CredentialID), err) } diff --git a/module/services/accounts/code/pkg/infra/keyservice_reseal_inventory_test.go b/module/services/accounts/code/pkg/infra/keyservice_reseal_inventory_test.go new file mode 100644 index 000000000..2d5b5a857 --- /dev/null +++ b/module/services/accounts/code/pkg/infra/keyservice_reseal_inventory_test.go @@ -0,0 +1,123 @@ +package infra + +// The inventory being complete is not something a review can see. A purpose +// nobody re-seals keeps the outgoing key service referenced forever, while the +// sweep still reports success and the operator withdraws the backend on that +// report — turning every value under that purpose into a credential nothing can +// read. +// +// So the purpose set is DERIVED from pkg/business's own source rather than +// restated here. Enumerating it by hand, or by a grep whose output was read one +// page at a time, is how four of seven purposes once shipped covered. + +import ( + "go/ast" + "go/parser" + "go/token" + "io/fs" + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +// declaredPurposes reads pkg/business and returns every identifier that declares +// a secret purpose: a `const …Purpose = "…"` and a `func …Purpose(string) string` +// alike, exported or not. An unexported one is still a finding — it means a +// purpose exists that this package cannot name, which is itself the bug. +func declaredPurposes(t *testing.T) map[string]string { + t.Helper() + fileSet := token.NewFileSet() + packages, err := parser.ParseDir(fileSet, "../business", func(info fs.FileInfo) bool { + return !strings.HasSuffix(info.Name(), "_test.go") + }, 0) + require.NoError(t, err) + + found := map[string]string{} + for _, pkg := range packages { + for path, file := range pkg.Files { + ast.Inspect(file, func(node ast.Node) bool { + switch declaration := node.(type) { + case *ast.ValueSpec: + for i, name := range declaration.Names { + if !strings.HasSuffix(name.Name, "Purpose") || i >= len(declaration.Values) { + continue + } + if literal, ok := declaration.Values[i].(*ast.BasicLit); ok && literal.Kind == token.STRING { + found[name.Name] = path + } + } + case *ast.FuncDecl: + if declaration.Recv == nil && strings.HasSuffix(declaration.Name.Name, "Purpose") { + found[declaration.Name.Name] = path + } + } + return true + }) + } + } + require.NotEmpty(t, found, "the parser found no purposes at all, so this gate is not checking anything") + return found +} + +// prefixConstants are the per-purpose prefixes each *Purpose function is built +// from. They are declarations ending in `Purpose` too, so the parser finds them; +// they are not purposes in their own right and are covered by the function that +// uses them. +var prefixConstants = map[string]string{ + "webhookSecretPurposePrefix": "WebhookSecretPurpose", + "datasourceConnectorSecretPurposePrefix": "DatasourceConnectorSecretPurpose", + "datasourceWebhookSecretPurposePrefix": "DatasourceWebhookSecretPurpose", + "orgIdentityProviderSecretPurposePrefix": "OrgIdentityProviderSecretPurpose", + "connectorSecretPurposePrefix": "ConnectorSecretPurpose", +} + +func TestResealCoversEveryDeclaredPurpose(t *testing.T) { + // What the inventory actually re-seals, by the identifier each entry's + // purpose function resolves to. Kept beside the inventory so adding a column + // without claiming its purpose fails here. + covered := map[string]string{ + "MFATOTPPurpose": "mfa_devices.secret_encrypted", + "WebAuthnCredentialPurpose": "webauthn_credentials.credential_encrypted", + "WebAuthnSessionPurpose": "webauthn_ceremonies.session_data_encrypted", + "WebhookSecretPurpose": "webhook_subscriptions.secret_encrypted", + "DatasourceConnectorSecretPurpose": "datasource_sources.credential_secret_ref", + "DatasourceWebhookSecretPurpose": "datasource_sources.webhook_secret_ref", + "OrgIdentityProviderSecretPurpose": "org_identity_providers.client_secret_ref", + "ConnectorSecretPurpose": "connector_credentials.secret_encrypted", + } + + for purpose, where := range declaredPurposes(t) { + if canonical, isPrefix := prefixConstants[purpose]; isPrefix { + require.Contains(t, covered, canonical, + "%s builds %s, which no enveloped column re-seals", purpose, canonical) + continue + } + require.Contains(t, covered, purpose, + "%s (declared in %s) is a secret purpose that ResealEnvelopes does not cover: "+ + "values sealed under it would keep the outgoing key service referenced after the "+ + "sweep reported success, and withdrawing that backend would make them unreadable. "+ + "Add the column that holds it to envelopedColumns", purpose, where) + } + + // The inverse: an entry claiming a purpose that no longer exists would make + // the gate above pass while re-sealing nothing. + declared := declaredPurposes(t) + for purpose := range covered { + require.Contains(t, declared, purpose, + "the inventory claims %s, which pkg/business no longer declares", purpose) + } +} + +// Every inventory entry must name a distinct column, or one of them is dead and +// the coverage it appears to give is imaginary. +func TestEnvelopedColumnsAreDistinct(t *testing.T) { + seen := map[string]bool{} + for _, column := range envelopedColumns { + key := column.table + "." + column.column + require.False(t, seen[key], "%s appears twice in the inventory", key) + seen[key] = true + require.NotNil(t, column.purpose, "%s has no purpose", key) + } + require.Len(t, envelopedColumns, 9) +} diff --git a/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go new file mode 100644 index 000000000..7e895b3b4 --- /dev/null +++ b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go @@ -0,0 +1,249 @@ +package infra + +import ( + "context" + "fmt" + "sort" + + "accounts/pkg/business" + "accounts/pkg/keyservice" +) + +// Re-sealing every stored credential under a newly selected key service. +// +// A cutover has two halves. Reads work from the first moment both backends are +// bound, because every envelope names the backend that sealed it. Withdrawing +// the outgoing backend is the half that needs this verb: until nothing +// references it, removing it from the deployment turns every value it sealed +// into a credential nobody can read. +// +// So the verb does two things that are really one: it re-seals what the outgoing +// backend holds, and it reports what is left. The report is the answer to "is it +// safe to remove the previous backend yet", and it is the only honest way to ask +// — a sweep that returned only a count of what it changed cannot distinguish +// "finished" from "failed on the first row". + +// ResealOutcome is what the sweep did to one enveloped column, and what is still +// sealed under something other than the selected backend. +type ResealOutcome struct { + Table, Column string + Resealed int + // Remaining counts rows per backend tag that the selected backend did not + // seal. An empty map is what makes withdrawing the previous backend safe. + Remaining map[string]int +} + +// enveloped is one column holding sealed credentials, and how to rebuild the +// associated data each of its rows was sealed with. +// +// The purpose is per row for most of these: it binds a ciphertext to the row it +// belongs to, so copying one between rows no longer opens. Re-sealing therefore +// has to reconstruct exactly the purpose the value was sealed under, which is +// why each entry names the column the purpose is derived from rather than +// assuming the primary key. +type enveloped struct { + table, column string + // idColumn identifies a row for the compare-and-swap write. Not every table + // has an `id`: webauthn_credentials is keyed by the device it belongs to. + idColumn string + // keyColumn supplies the purpose's binding. Empty where the purpose is a + // constant. + keyColumn string + // where narrows to the rows that actually carry an envelope, beyond the + // not-null and not-empty check every entry gets. + where string + purpose func(key string) string +} + +// envelopedColumns is the inventory. TestResealCoversEveryDeclaredPurpose +// derives the purpose set from pkg/business's own source and fails when one is +// missing here, because this list being complete is not something review can +// see: a purpose nobody re-seals keeps the outgoing backend referenced forever, +// and the sweep still reports success. +var envelopedColumns = []enveloped{ + { + table: "mfa_devices", column: "secret_encrypted", + where: "device_type = 'totp'", + purpose: func(string) string { return business.MFATOTPPurpose }, + }, + { + table: "webauthn_credentials", column: "credential_encrypted", + idColumn: "device_id", + purpose: func(string) string { return business.WebAuthnCredentialPurpose }, + }, + { + // Ceremonies expire within minutes, so this column empties itself. It is + // swept anyway: "nothing references the outgoing backend" has to be true + // of every column, and an operator should not have to know which tables + // drain on their own to read the report. + table: "webauthn_ceremonies", column: "session_data_encrypted", + purpose: func(string) string { return business.WebAuthnSessionPurpose }, + }, + { + table: "webhook_subscriptions", column: "secret_encrypted", + keyColumn: "id", purpose: business.WebhookSecretPurpose, + }, + { + // The rotation overlap's outgoing secret, under the same purpose as the + // current one: both are bound to the subscription, not to the slot. + table: "webhook_subscriptions", column: "previous_secret_encrypted", + keyColumn: "id", purpose: business.WebhookSecretPurpose, + }, + { + table: "datasource_sources", column: "credential_secret_ref", + keyColumn: "id", purpose: business.DatasourceConnectorSecretPurpose, + }, + { + table: "datasource_sources", column: "webhook_secret_ref", + keyColumn: "id", purpose: business.DatasourceWebhookSecretPurpose, + }, + { + // Bound to the org, not the row: one provider per org, and org_id is the + // table's stable identity. + table: "org_identity_providers", column: "client_secret_ref", + keyColumn: "org_id", purpose: business.OrgIdentityProviderSecretPurpose, + }, + { + table: "connector_credentials", column: "secret_encrypted", + keyColumn: "source_id", purpose: business.ConnectorSecretPurpose, + }, +} + +// ResealEnvelopes rewrites every enveloped column under the backend the key +// service currently seals with, and reports what is still sealed under anything +// else. +// +// It is restart-safe and idempotent: a value the selected backend already sealed +// is skipped without a key-service call, and each write is a compare-and-swap on +// the exact envelope that was read, so two replicas running this at once cannot +// lose a row and an interrupted run simply resumes. +// +// Key-service calls happen outside the database transactions. Each one is a +// network round trip to Vault or a cloud key service, and holding a transaction +// open across thousands of them would pin a connection and a snapshot for the +// length of the whole sweep. +func (s *PostgresStore) ResealEnvelopes(ctx context.Context, cipher *keyservice.Cipher) ([]ResealOutcome, error) { + if cipher == nil { + return nil, fmt.Errorf("re-seal requires a key service") + } + outcomes := make([]ResealOutcome, 0, len(envelopedColumns)) + for _, column := range envelopedColumns { + outcome, err := s.resealColumn(ctx, cipher, column) + if err != nil { + return outcomes, fmt.Errorf("re-seal %s.%s: %w", column.table, column.column, err) + } + outcomes = append(outcomes, outcome) + } + return outcomes, nil +} + +type envelopedRow struct { + id, key, stored string +} + +func (s *PostgresStore) resealColumn( + ctx context.Context, + cipher *keyservice.Cipher, + column enveloped, +) (ResealOutcome, error) { + outcome := ResealOutcome{Table: column.table, Column: column.column, Remaining: map[string]int{}} + + keyExpression := "''" + if column.keyColumn != "" { + keyExpression = column.keyColumn + "::text" + } + idColumn := column.idColumn + if idColumn == "" { + idColumn = "id" + } + where := column.column + " IS NOT NULL AND " + column.column + " <> ''" + if column.where != "" { + where += " AND " + column.where + } + // Control plane for both halves. Credential custody is platform-wide by + // definition: the sweep covers every tenant's rows, so there is no org or + // user scope it could run under, and enumerating orgs to re-seal a key would + // be the same authority spelled less directly. These seven tables each carry + // an app_control_plane_explicit_rows policy with SELECT and UPDATE granted + // to that role. No caller-supplied input reaches the predicate: the table, + // column and filter are all from the inventory above. + var rows []envelopedRow + if err := s.WithControlPlane(ctx, func(ctx context.Context) error { + //nolint:gosec // identifiers come from envelopedColumns, never from a caller + result, err := s.getQueryExecutor(ctx).Query(ctx, fmt.Sprintf( + `SELECT %s::text, %s, %s FROM %s WHERE %s`, + idColumn, keyExpression, column.column, column.table, where)) + if err != nil { + return err + } + defer result.Close() + for result.Next() { + var row envelopedRow + if err := result.Scan(&row.id, &row.key, &row.stored); err != nil { + return err + } + rows = append(rows, row) + } + return result.Err() + }); err != nil { + return outcome, err + } + + for _, row := range rows { + // Pre-envelope plaintext belongs to the legacy migrations, which run + // before this and own the base32 and empty-secret cases. Re-sealing one + // here would seal it under the wrong purpose-bound shape. + if !keyservice.IsEnvelopeFraming(row.stored) { + continue + } + purpose := column.purpose(row.key) + resealed, changed, err := cipher.Reseal(ctx, purpose, row.stored) + if err != nil { + // Record what could not be moved rather than stopping: one + // unreadable row must not hide the state of every other column, and + // the remaining count is what the operator acts on. + if envelope, parseErr := keyservice.ParseEnvelope(row.stored); parseErr == nil { + outcome.Remaining[envelope.Backend]++ + } else { + outcome.Remaining["unparseable"]++ + } + continue + } + if !changed { + continue + } + if err := s.WithControlPlane(ctx, func(ctx context.Context) error { + //nolint:gosec // identifiers come from envelopedColumns, never from a caller + tag, err := s.getQueryExecutor(ctx).Exec(ctx, fmt.Sprintf( + `UPDATE %s SET %s = $2 WHERE %s = $1 AND %s = $3`, + column.table, column.column, idColumn, column.column), + row.id, resealed, row.stored) + if err != nil { + return err + } + if tag.RowsAffected() == 1 { + outcome.Resealed++ + } + return nil + }); err != nil { + return outcome, err + } + } + return outcome, nil +} + +// ResealReport renders the outcomes for a log line, newest-first by what is +// still outstanding, so the one number an operator needs — is anything still +// sealed under the outgoing backend — is not buried in a per-table list. +func ResealReport(outcomes []ResealOutcome) (resealed int, remaining map[string]int, detail []string) { + remaining = map[string]int{} + for _, outcome := range outcomes { + resealed += outcome.Resealed + for tag, count := range outcome.Remaining { + remaining[tag] += count + detail = append(detail, fmt.Sprintf("%s.%s=%d under %s", outcome.Table, outcome.Column, count, tag)) + } + } + sort.Strings(detail) + return resealed, remaining, detail +} diff --git a/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go new file mode 100644 index 000000000..1283558e2 --- /dev/null +++ b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go @@ -0,0 +1,296 @@ +//go:build !pure + +package infra_test + +import ( + "context" + "crypto/sha256" + "fmt" + "strings" + "testing" + + "github.com/stretchr/testify/require" + + "accounts/pkg/business" + "accounts/pkg/infra" + "accounts/pkg/infra/storetx" + "accounts/pkg/keyservice" +) + +// The re-seal verb, end to end against a real database, with two real sealing +// backends behind the cipher. +// +// What has to be true for a cutover to be finishable: a value the outgoing +// backend sealed is rewritten under the selected one, the purpose it was bound +// to survives the move (so it still opens afterwards), re-running changes +// nothing, and the report says when nothing references the outgoing backend any +// more. That last part is what an operator acts on when withdrawing it, so a +// sweep that could not distinguish "finished" from "failed on row one" would be +// worse than none. + +// reversibleSealer is a sealing backend with a tag of its own, built on an +// in-process keyed transform. It stands in for the second key service — a cell +// Vault, or a cloud KMS — in a test that must not require either: what is under +// test is the sweep, the purpose reconstruction and the report, none of which +// care which cryptography is behind the seam. The purpose IS bound (it is part +// of the sealed string and checked on open), so a sweep that rebuilt the wrong +// purpose fails here rather than passing quietly. +type reversibleSealer struct{ tag string } + +func (s reversibleSealer) Tag() string { return s.tag } +func (s reversibleSealer) Identity() string { return s.tag } + +func (s reversibleSealer) Accepts(envelope keyservice.Envelope) bool { + return envelope.Backend == s.tag +} + +func (s reversibleSealer) Seal(_ context.Context, purpose, plaintext string) (string, error) { + return purpose + "|" + plaintext, nil +} + +func (s reversibleSealer) Open(_ context.Context, purpose, payload string) (string, error) { + boundPurpose, plaintext, found := strings.Cut(payload, "|") + if !found || boundPurpose != purpose { + return "", business.ErrInvalidSecretEnvelope + } + return plaintext, nil +} + +func (s reversibleSealer) MAC(_ context.Context, plaintext string) (string, error) { + return s.tag + ":" + plaintext, nil +} + +func TestResealEnvelopesMovesEveryColumnAndReportsWhatIsLeft(t *testing.T) { + outgoing := reversibleSealer{tag: "outgoing-key-service"} + selected := reversibleSealer{tag: "selected-key-service"} + + before, err := keyservice.NewCipher(outgoing, nil) + require.NoError(t, err) + cutover, err := keyservice.NewCipher(selected, outgoing) + require.NoError(t, err) + + seeded := seedEveryEnvelopedColumn(t, before) + + outcomes, err := testStore.ResealEnvelopes(testCtx, cutover) + require.NoError(t, err) + require.Len(t, outcomes, 9, "every enveloped column must be reported, including the ones with no rows") + + resealed, remaining, detail := infra.ResealReport(outcomes) + require.Empty(t, remaining, + "nothing may still reference the outgoing backend once the sweep is done — this is the report an operator withdraws it on; detail: %v", detail) + require.GreaterOrEqual(t, resealed, len(seeded), + "every seeded row must have moved") + + // The value still opens, under the SAME purpose, through the cutover cipher + // — so the sweep rebuilt the binding rather than sealing under a new one. + for key, expected := range seeded { + stored := expected.locate(t) + require.True(t, strings.HasPrefix(stored, keyservice.EnvelopePrefix(selected.Tag())), + "%s was not re-sealed under the selected backend: %q", key, stored) + plaintext, err := cutover.DecryptSecret(testCtx, expected.purpose, stored) + require.NoError(t, err, "%s no longer opens under the purpose it was bound to", key) + require.Equal(t, expected.plaintext, plaintext, "%s round-tripped a different value", key) + } + + // Restart safety: a second run is a no-op, so an interrupted cutover resumes + // and two replicas running it cannot fight. + outcomes, err = testStore.ResealEnvelopes(testCtx, cutover) + require.NoError(t, err) + again, remaining, _ := infra.ResealReport(outcomes) + require.Zero(t, again, "re-sealing what is already sealed must change nothing") + require.Empty(t, remaining) +} + +// A row the cipher cannot open must be COUNTED, not swallowed and not fatal: +// the whole point of the report is that an operator learns the outgoing backend +// is still referenced instead of withdrawing it on a success that was partial. +func TestResealEnvelopesReportsWhatItCouldNotMove(t *testing.T) { + selected := reversibleSealer{tag: "selected-key-service"} + // No previous backend bound, so a value sealed by a third one cannot open. + cipher, err := keyservice.NewCipher(selected, nil) + require.NoError(t, err) + + orphan := keyservice.Envelope{Backend: "a-backend-nobody-bound", Payload: "whatever"}.String() + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, `DELETE FROM webauthn_credentials`) + return err + })) + userID := seedUser(t) + deviceID := seedWebAuthnDevice(t, userID, orphan) + + outcomes, err := testStore.ResealEnvelopes(testCtx, cipher) + require.NoError(t, err, "one unreadable row must not abort the sweep over every other column") + + _, remaining, detail := infra.ResealReport(outcomes) + require.Equal(t, 1, remaining["a-backend-nobody-bound"], + "the orphan must be counted so the outgoing backend is not withdrawn on a partial success; detail: %v", detail) + require.Contains(t, strings.Join(detail, " "), "webauthn_credentials.credential_encrypted") + + // Untouched, not mangled. + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + var stored string + require.NoError(t, storetx.Tx(ctx).QueryRow(ctx, + `SELECT credential_encrypted FROM webauthn_credentials WHERE device_id = $1`, deviceID).Scan(&stored)) + require.Equal(t, orphan, stored) + return nil + })) +} + +// sealedRow is what one seeded column holds: the purpose its value was bound to +// and the plaintext behind it, so an assertion can prove BOTH survived the move. +type sealedRow struct { + purpose, plaintext string + // locate reads the stored value back. + locate func(t *testing.T) string +} + +// seedEveryEnvelopedColumn puts one sealed value in each of the nine enveloped +// columns, sealed by the cipher it is given. Raw SQL under the control plane, +// because several of these tables have no business-layer constructor that would +// let a test choose the stored envelope. +func seedEveryEnvelopedColumn(t *testing.T, sealer *keyservice.Cipher) map[string]sealedRow { + t.Helper() + clearEnvelopedTables(t) + + userID := seedUser(t) + orgID := seedOrg(t, userID) + seeded := map[string]sealedRow{} + + seal := func(purpose, plaintext string) string { + t.Helper() + stored, err := sealer.EncryptSecret(testCtx, purpose, plaintext) + require.NoError(t, err) + return stored + } + exec := func(sql string, args ...any) { + t.Helper() + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, sql, args...) + return err + })) + } + record := func(table, column, purpose, plaintext, idColumn, id string) { + seeded[table+"."+column] = sealedRow{ + purpose: purpose, plaintext: plaintext, + locate: func(t *testing.T) string { + t.Helper() + var stored string + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + //nolint:gosec // identifiers are literals from this test + return storetx.Tx(ctx).QueryRow(ctx, + "SELECT "+column+" FROM "+table+" WHERE "+idColumn+" = $1", id).Scan(&stored) + })) + return stored + }, + } + } + + deviceID := business.NewIDString() + exec(`INSERT INTO mfa_devices (id, user_id, device_type, name, secret_encrypted) + VALUES ($1, $2, 'totp', 'Authenticator', $3)`, + deviceID, userID, seal(business.MFATOTPPurpose, "JBSWY3DPEHPK3PXP")) + record("mfa_devices", "secret_encrypted", business.MFATOTPPurpose, "JBSWY3DPEHPK3PXP", "id", deviceID) + + webAuthnDeviceID := business.NewIDString() + exec(`INSERT INTO mfa_devices (id, user_id, device_type, name) VALUES ($1, $2, 'webauthn', 'Key')`, + webAuthnDeviceID, userID) + exec(`INSERT INTO webauthn_credentials (device_id, user_id, credential_id, credential_encrypted) + VALUES ($1, $2, $3, $4)`, + webAuthnDeviceID, userID, []byte("credential-id"), + seal(business.WebAuthnCredentialPurpose, `{"id":"credential"}`)) + record("webauthn_credentials", "credential_encrypted", + business.WebAuthnCredentialPurpose, `{"id":"credential"}`, "device_id", webAuthnDeviceID) + + ceremonyID := business.NewIDString() + exec(`INSERT INTO webauthn_ceremonies (id, token_hash, user_id, ceremony_type, session_data_encrypted, expires_at) + VALUES ($1, $2, $3, 'registration', $4, NOW() + INTERVAL '5 minutes')`, + // The column constrains length(token_hash) = 64. + ceremonyID, fmt.Sprintf("%064x", sha256.Sum256([]byte(ceremonyID))), userID, + seal(business.WebAuthnSessionPurpose, `{"challenge":"abc"}`)) + record("webauthn_ceremonies", "session_data_encrypted", + business.WebAuthnSessionPurpose, `{"challenge":"abc"}`, "id", ceremonyID) + + subscriptionID := business.NewIDString() + exec(`INSERT INTO webhook_subscriptions + (id, org_id, url, secret_encrypted, previous_secret_encrypted, previous_secret_expires_at, active) + VALUES ($1, $2, 'https://example.com/hooks', $3, $4, NOW() + INTERVAL '1 day', true)`, + subscriptionID, orgID, + seal(business.WebhookSecretPurpose(subscriptionID), "whsec_current"), + seal(business.WebhookSecretPurpose(subscriptionID), "whsec_previous")) + record("webhook_subscriptions", "secret_encrypted", + business.WebhookSecretPurpose(subscriptionID), "whsec_current", "id", subscriptionID) + record("webhook_subscriptions", "previous_secret_encrypted", + business.WebhookSecretPurpose(subscriptionID), "whsec_previous", "id", subscriptionID) + + sourceID := business.NewIDString() + // boundary_node_id is a foreign key onto the org's scope tree, so the node + // has to exist before the source can. + nodeID := business.NewIDString() + exec(`INSERT INTO scope_nodes (id, org_id, scope_path, kind, label) + VALUES ($1, $2, $3::ltree, 'collection', 'docs')`, + nodeID, orgID, strings.ReplaceAll(nodeID, "-", "_")) + exec(`INSERT INTO datasource_sources + (id, org_id, provider, repo, credential_secret_ref, webhook_secret_ref, boundary_node_id) + VALUES ($1, $2, 'github', 'acme/widgets', $3, $4, $5)`, + sourceID, orgID, + seal(business.DatasourceConnectorSecretPurpose(sourceID), "ghp_token"), + seal(business.DatasourceWebhookSecretPurpose(sourceID), "whsec_source"), + nodeID) + record("datasource_sources", "credential_secret_ref", + business.DatasourceConnectorSecretPurpose(sourceID), "ghp_token", "id", sourceID) + record("datasource_sources", "webhook_secret_ref", + business.DatasourceWebhookSecretPurpose(sourceID), "whsec_source", "id", sourceID) + + providerID := business.NewIDString() + exec(`INSERT INTO org_identity_providers (id, org_id, kind, display_name, client_secret_ref) + VALUES ($1, $2, 'oidc', 'Example SSO', $3)`, + providerID, orgID, seal(business.OrgIdentityProviderSecretPurpose(orgID), "idp-client-secret")) + record("org_identity_providers", "client_secret_ref", + business.OrgIdentityProviderSecretPurpose(orgID), "idp-client-secret", "id", providerID) + + credentialID := business.NewIDString() + exec(`INSERT INTO connector_credentials (id, org_id, source_id, provider, secret_encrypted) + VALUES ($1, $2, $3, 'github', $4)`, + credentialID, orgID, sourceID, + seal(business.ConnectorSecretPurpose(sourceID), `{"token":"ghp"}`)) + record("connector_credentials", "secret_encrypted", + business.ConnectorSecretPurpose(sourceID), `{"token":"ghp"}`, "id", credentialID) + + require.Len(t, seeded, 9, "every enveloped column must be seeded, or the sweep is only partly exercised") + return seeded +} + +func clearEnvelopedTables(t *testing.T) { + t.Helper() + // scope_nodes is deliberately NOT cleared: other suites in this package own + // rows there, and installations holds a foreign key onto it. + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + for _, table := range []string{ + "connector_credentials", "datasource_sources", "org_identity_providers", + "webhook_subscriptions", "webauthn_ceremonies", "webauthn_credentials", "mfa_devices", + } { + //nolint:gosec // literal table names + if _, err := storetx.Tx(ctx).Exec(ctx, "DELETE FROM "+table); err != nil { + return err + } + } + return nil + })) +} + +func seedWebAuthnDevice(t *testing.T, userID, credentialEnvelope string) string { + t.Helper() + deviceID := business.NewIDString() + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + if _, err := storetx.Tx(ctx).Exec(ctx, + `INSERT INTO mfa_devices (id, user_id, device_type, name) VALUES ($1, $2, 'webauthn', 'Key')`, + deviceID, userID); err != nil { + return err + } + _, err := storetx.Tx(ctx).Exec(ctx, + `INSERT INTO webauthn_credentials (device_id, user_id, credential_id, credential_encrypted) + VALUES ($1, $2, $3, $4)`, deviceID, userID, []byte("credential-"+deviceID), credentialEnvelope) + return err + })) + return deviceID +} diff --git a/module/services/accounts/code/pkg/infra/postgres_mfa.go b/module/services/accounts/code/pkg/infra/postgres_mfa.go index ea7ef7a5a..577bda13b 100644 --- a/module/services/accounts/code/pkg/infra/postgres_mfa.go +++ b/module/services/accounts/code/pkg/infra/postgres_mfa.go @@ -64,7 +64,7 @@ func (s *PostgresStore) MigrateLegacyMFASecrets(ctx context.Context, cipher busi if _, err := base32.StdEncoding.WithPadding(base32.NoPadding).DecodeString(strings.ToUpper(item.plaintext)); err != nil { return migrated, fmt.Errorf("legacy MFA secret %s is not valid base32: %w", item.id, err) } - envelope, err := cipher.EncryptSecret(ctx, "mfa-totp", item.plaintext) + envelope, err := cipher.EncryptSecret(ctx, business.MFATOTPPurpose, item.plaintext) if err != nil { return migrated, fmt.Errorf("encrypt legacy MFA secret %s: %w", item.id, err) } diff --git a/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt b/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt index 7e65a6fa7..b140a7980 100644 --- a/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt +++ b/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt @@ -150,6 +150,8 @@ pkg/infra/postgres_auth_bootstrap.go: (*PostgresStore).WithAuthLookupTx: withCon pkg/infra/postgres_client_authorization.go: (*PostgresStore).ConsumeClientAuthorizationCode: WithControlPlane pkg/infra/postgres_datasource_sources.go: (*PostgresStore).GetDatasourceSourceByID: WithControlPlane pkg/infra/postgres_installations.go: (*PostgresStore).ResolveInstallationAuthority: WithControlPlane +pkg/infra/postgres_keyservice_reseal.go: (*PostgresStore).resealColumn: WithControlPlane +pkg/infra/postgres_keyservice_reseal.go: (*PostgresStore).resealColumn: WithControlPlane pkg/infra/postgres_membership_diagnostic.go: (*PostgresStore).ListMembershipIntegrityFindings: WithControlPlane pkg/infra/postgres_membership_diagnostic.go: (*PostgresStore).RecordMembershipIntegrityFindings: WithControlPlane pkg/infra/postgres_mfa.go: (*PostgresStore).MigrateLegacyMFASecrets: WithControlPlane diff --git a/module/services/accounts/code/work.go b/module/services/accounts/code/work.go index f0c9391db..410f609c8 100644 --- a/module/services/accounts/code/work.go +++ b/module/services/accounts/code/work.go @@ -373,6 +373,35 @@ func doWork(ctx context.Context) (Clean, error) { wool.Field("count", migrated), wool.Field("disabled_empty_secret_endpoints", disabled)) } + // A key-service cutover: re-seal every enveloped column under the selected + // backend, and report what still references the one being migrated away + // from. This runs only while a previous backend is configured, which is + // exactly the cutover window — a settled deployment does no work here. + // + // Reads already work from the moment both backends are bound, because every + // envelope names the backend that sealed it. This exists for the other half: + // withdrawing the outgoing backend is safe only once nothing references it, + // and the remaining count is what an operator reads to know that. The sweep + // is restart-safe and idempotent, so an interrupted run resumes and two + // replicas cannot fight over a row. + if previous := cipher.PreviousTag(); previous != "" { + outcomes, err := store.ResealEnvelopes(ctx, cipher) + resealed, remaining, detail := infra.ResealReport(outcomes) + if err != nil { + return nil, fmt.Errorf("re-seal stored credentials under the selected key service: %w", err) + } + w.Info("re-sealed stored credentials under the selected key service", + wool.Field("resealed", resealed), + wool.Field("previous_backend", previous), + wool.Field("still_referencing_another_backend", len(remaining) > 0)) + if len(remaining) > 0 { + // Named, not merely counted: an operator who withdraws the previous + // backend now makes these unreadable, and "which rows" is the + // difference between a retry and an incident. + w.Warn("stored credentials still reference a key service other than the selected one — do not withdraw it yet", + wool.Field("columns", strings.Join(detail, "; "))) + } + } // Auth pipeline: IdentityResolver + JWTMinter + optional provider // validator/exchanger chain for the OAuth code flow. From 6e246df25b5ece29b3cad60f1995733e464d0acd Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:39:36 -0400 Subject: [PATCH 04/10] docs(accounts): document the key service, and what rotating each key means (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit KEY_ROTATION.md was written when there was one place the keys could live, so it read as though Vault were the only answer and described one rotation. There are now two keys, two backends, and three different procedures, and conflating them is how a rotation takes authentication down. It now opens by separating the two keys, because they rotate differently: the signing key needs a staged overlap so credentials signed by the outgoing key keep verifying until they expire, while the envelope key needs none at all — every stored value records the key version that sealed it. Added: - **The key service**: what each backend is, who operates what, how accounts authenticates, and which key each can hold. States plainly that `kms` cannot hold the signing key yet, names the three consumers that are handed the key instead of signing through the seam, and says a hosted cell therefore still runs Vault for that one key — so nobody reads "no secrets store" as already true for both. - **Rotating the envelope key**, which is a no-op in accounts, and the one thing that cannot be re-keyed: the API-key hash. The plaintext is gone once the key is issued, lookup is BY hash, so moving the MAC key version stops every stored key from matching. That is why KEY_SERVICE_KMS_MAC_KEY names a key VERSION, and the note says Vault Transit hides the same hazard better. - **Moving the envelope key to another key service**: the four-step cutover, with the remaining-count report named as the only safe signal to withdraw the outgoing backend on — a count of what the sweep changed cannot tell "finished" from "failed on the first row" — plus rollback and what to do about a row that could not move. The deployment README's `cell-vault` section said a cell declares it for both keys. It now says a cell on `kms` needs it only for the signing key, and none at all once that key can move. Two references went stale when the transit code moved out of pkg/infra. PLATFORM_REFERENCE.md is corrected. SECURITY_REVIEW.md is NOT: it records findings as they were filed, and CLAIM_INVENTORY.md already sets that precedent for the sidecar.go rename (#541, "labelled, not rewritten"), so the drift is registered there instead, together with the new claim about which service holds each key. Co-Authored-By: Claude Opus 5 (1M context) --- CLAIM_INVENTORY.md | 2 + PLATFORM_REFERENCE.md | 2 +- module/KEY_ROTATION.md | 156 +++++++++++++++++++++++++++++++++--- module/deployment/README.md | 9 +++ 4 files changed, 158 insertions(+), 11 deletions(-) diff --git a/CLAIM_INVENTORY.md b/CLAIM_INVENTORY.md index 182d441b9..873c4a43a 100644 --- a/CLAIM_INVENTORY.md +++ b/CLAIM_INVENTORY.md @@ -59,6 +59,8 @@ must not be inferred from a row here. See | Revocation-store failure denies (503) unless explicitly configured fail-open | PRODUCTION_READY.md § Hot path | `revocationFailsOpen()` reads `SIDECAR_REVOCATION_FAIL_OPEN` from the `security` group; default false | configured | auth-gateway | | Impersonation actor/subject semantics | PRODUCTION_READY.md, PLATFORM_REFERENCE.md §1.6 | `x-acting-as-user-id` is stamped from the `acting` claim; the actor/effective-subject model is under correction | planned | #533 | | The historical `sidecar.go` file names and `LocalValidator` | SECURITY_REVIEW.md, PRODUCTION_READY.md before this change | renamed to `ext_authz.go` by #552; SECURITY_REVIEW.md keeps the old paths because it records findings as they were filed | historical | #541 (labelled, not rewritten) | +| The historical `pkg/infra/vault.go` location | SECURITY_REVIEW.md finding 5 (`HashKey` SHA-256 downgrade) | the transit code moved into `pkg/keyservice` when the key service gained a second backend; the fail-closed behaviour the finding asked for is kept, now in `Cipher.HashKey`. SECURITY_REVIEW.md keeps the old path because it records findings as they were filed | historical | #1013 (labelled, not rewritten) | +| Which service holds accounts' two keys | KEY_ROTATION.md § The key service | `pkg/keyservice`: selected per key family in the `key-service` group; the envelope key runs on `vault` or `kms`, the signing key on `vault` only until the Work Context signer, the delegation minter and the OAuth state signer accept a `crypto.Signer` | implemented (envelope) / blocked upstream (signing) | #1013 | ## Release gates diff --git a/PLATFORM_REFERENCE.md b/PLATFORM_REFERENCE.md index e15e4a97c..8ab9561ec 100644 --- a/PLATFORM_REFERENCE.md +++ b/PLATFORM_REFERENCE.md @@ -136,7 +136,7 @@ Gated by tenant-admin or platform role (`src/components/auth/role-gate.tsx`). | Connector management | 🟡 | SSO connector setup only (`/admin/sso`); no general third-party-connector/manifest framework. | | Per-tenant config | ✅ | `/admin/organizations/settings` (`org_settings`), `/admin/entitlements`. | | Background-agent ops / kill switch | 🟡 | `/admin/platform/jobs` gives payload-free queue/lifecycle + MFA-gated dead-letter replay; `RevokePrincipal` revokes an agent. No dedicated per-tenant agent kill switch — but note the audit's lesson: make any kill switch **per-tenant**, not deployment-global. | -| Partner API keys | 🟡 | Org API keys `cfly_sk_…` (hashed via Vault transit HMAC, scoped, `/admin/api-keys`, `pkg/business/api_keys.go` + `pkg/infra/vault.go`); no separate partner tier and no 404-not-403 concealment of a staff-only surface yet. | +| Partner API keys | 🟡 | Org API keys `cfly_sk_…` (keyed hash from the selected key service, scoped, `/admin/api-keys`, `pkg/business/api_keys.go` + `pkg/keyservice`); no separate partner tier and no 404-not-403 concealment of a staff-only surface yet. | | Audit viewer + compliance export | ✅ | `/admin/audit-log` (`QueryAuditLog`) + on-demand CSV/JSON download (`AuditService/ExportAuditLog`, `pkg/business/audit_export.go`). The former per-org S3 JSONL sink (`AuditExportService`) was removed with the object-storage service. | ### 1.6 Support access / impersonation — ✅ (with a role-model divergence) diff --git a/module/KEY_ROTATION.md b/module/KEY_ROTATION.md index 74dec1fbf..aa3f6f49a 100644 --- a/module/KEY_ROTATION.md +++ b/module/KEY_ROTATION.md @@ -1,9 +1,22 @@ -# Access-token signing-key rotation +# Key rotation -The Ed25519 keypair accounts holds is the trust anchor for every credential the -edge verifies locally: access tokens, Work Context capabilities, and -composed-module registration tokens. This is the runbook for replacing it -without rejecting credentials that are still valid. +accounts holds exactly two keys, and they rotate differently enough that +conflating them is how a rotation takes authentication down: + +- the **Ed25519 signing key**, the trust anchor for every credential the edge + verifies locally — access tokens, Work Context capabilities, and + composed-module registration tokens. Replacing it is a staged overlap, because + credentials signed by the outgoing key must keep verifying until they expire. +- the **envelope key**, which seals every stored credential (source tokens, MFA + seeds, WebAuthn credentials, webhook secrets) and computes the keyed hash + behind every API key. Rotating it is invisible to users, because each + ciphertext records the key version that sealed it — with one exception, the + keyed hash, which cannot be re-keyed at all. + +Which **service** holds them is a deployment decision, selected in the +`key-service` configuration group and never inferred. See "The key service" +below before either runbook: the backend changes who has custody, and for the +envelope key it changes what rotation even means. ## What each side does @@ -40,11 +53,59 @@ limited to one per 5 s across all key ids so untrusted token input cannot drive fetch per request. A key that stops being published stops verifying within one TTL — or within TTL + grace if accounts is unreachable for the whole window. +## The key service + +Two backends, selected per key family in the `key-service` group +(`module/configurations/local/key-service.env` carries the full binding): + +| | `vault` | `kms` | +| --- | --- | --- | +| What it is | a HashiCorp Vault the cell runs: KV v2 for the signing key, Transit for the envelope key and the keyed hash | the cell's cloud key-management service (GCP Cloud KMS first) | +| How accounts authenticates | an AppRole credential the `vault` secret group delivers | the workload's own cloud identity — on GCP the metadata server, against the service account bound to the pod | +| What the configuration carries | an address and a credential | key **names** only: no credential, no file | +| What the cell operates | a stateful store to run, unseal, back up and credential | nothing; keys are cloud resources | +| Can hold the signing key | yes | **no, today** — see below | +| Can hold the envelope key | yes | yes | + +`KEY_SERVICE_BACKEND` selects the backend that seals stored credentials and +computes the keyed hash. `KEY_SERVICE_SIGNING_BACKEND` selects the one holding +the signing key, and defaults to `KEY_SERVICE_BACKEND`. + +**The two families are selected separately because they move separately.** An +envelope key is migrated by re-sealing, which is reversible and invisible to +users. Replacing the signing key either re-logs everyone in or needs both keys +published across the cutover. A deployment doing one of those this quarter and +the other next says so. + +Outside the local environment an unselected backend **refuses to start, by +name**. The two shapes have opposite custody models, so inheriting either by +default would mean reaching a key service nobody chose. + +### Why `kms` cannot hold the signing key yet + +A Cloud KMS key cannot be exported, and three consumers are handed the signing +key rather than signing through the key service: + +| Consumer | Where | +| --- | --- | +| the Work Context signer | `github.com/codefly-dev/sdk-go/workcontext`, `WorkContextSignerOptions.PrivateKey` | +| the delegation minter | `github.com/codefly-dev/core`, `policy.MintEd25519` | +| the OAuth state signer's seed | `pkg/auth/oauth_state.go` | + +Each would have to accept a `crypto.Signer` first. Until then +`KEY_SERVICE_SIGNING_BACKEND=kms` is refused by name at startup rather than +left to surface as a Work Context authority that answers every RPC with a +configuration error and a delegation minter that silently falls back to its v1 +HMAC. **A hosted cell therefore runs `kms` for stored credentials with the +signing key still on `vault`**, so it is not yet free of a secrets store for +both keys. + ## Custody of the signing key -accounts **reads** the keypair; it never **owns** it. The private half lives in -Vault KV v2 at `secret/data/jwt-signing-key`, and putting it there is the -platform's identity-seeding command's job, not this module's: +accounts **reads** the keypair; it never **owns** it. On the `vault` backend — +the only one that can hold this key today — the private half lives in Vault KV +v2 at `secret/data/jwt-signing-key`, and putting it there is the platform's +identity-seeding command's job, not this module's: | | | | --- | --- | @@ -61,7 +122,10 @@ bounded and collapsed to one line, so whoever reads the crash loop sees the command to run rather than a sentence about one. **Outside the local environment it is required**, and accounts refuses to start -without it, by name. A diagnostic that exists only when somebody remembered to +without it, by name — on the `vault` signing backend. A Cloud KMS key version is +provisioned as cloud resources and read by name, so there is no key for an +operator to write and nothing for this diagnostic to quote; insisting on it +there would be a configuration requirement nobody could satisfy. A diagnostic that exists only when somebody remembered to configure it is missing exactly when the incident happens, so the check runs at boot — while a deployment can still be fixed — rather than during a crash loop. A local run has no cell and no seeding command, so it is optional there and the @@ -102,7 +166,7 @@ mount. The plaintext in-cluster address is admitted by the composition's Service address. See [deployment/README.md](./deployment/README.md), "The cell's Vault". -## Rotation +## Rotating the signing key Each step is safe to hold indefinitely; only move on once the previous step has converged. @@ -140,6 +204,78 @@ the gateway never pins a key at boot: a gateway started mid-overlap loads the whole published set and accepts both keys regardless of the order the document lists them in. +## Rotating the envelope key + +Unlike the signing key, this is invisible to users and needs no overlap window: +**every stored value records the key version that sealed it**, so a rotated key +never makes an existing ciphertext unreadable. On `vault`, Transit's own +`vault:v:` prefix carries the version; on `kms`, the stored payload names the +key version and the key. + +Rotate the key in its own service and nothing else is required. Nothing in +accounts needs restarting, and old ciphertexts keep opening under the versions +that sealed them. + +### The one thing that cannot be re-keyed: the API-key hash + +`api_keys.key_hash` is a **keyed hash**, and the plaintext is gone the moment the +key is issued — so there is nothing to re-hash. Lookup is *by* hash, so a key +whose hash was computed under a different key simply is not found, which is +indistinguishable from revoked. + +Two consequences: + +- **Do not move the MAC key version.** `KEY_SERVICE_KMS_MAC_KEY` names a + cryptoKey**Version**, not a key, precisely so this is a deliberate edit with a + stated consequence rather than a side effect of rotating. Vault Transit has + the same hazard and hides it better: `transit/hmac` follows the key's latest + version, so rotating the Transit key breaks API-key lookup there too. +- **Across a backend cutover, keys issued under the outgoing backend keep + working only while it stays bound.** accounts looks a presented key up under + both hashes. Once the previous backend is withdrawn, those keys stop + authenticating and must be re-issued — so either withdraw after the keys have + expired, or re-issue them deliberately. + +## Moving the envelope key to another key service + +The cutover from one backend to another — `vault` to `kms`, or one Cloud KMS key +to another. Each step is safe to hold indefinitely. + +1. **Bind both.** Set `KEY_SERVICE_BACKEND` to the incoming backend and + `KEY_SERVICE_PREVIOUS_BACKEND` to the outgoing one, and restart accounts. + Reads work immediately — every envelope names the backend that sealed it — and + nothing new is sealed under the outgoing one. Naming the same backend twice is + refused: the sweep would be a no-op while reading as progress. +2. **Re-seal.** The startup sweep rewrites every enveloped column under the + incoming backend. It runs only while a previous backend is configured, is + restart-safe and idempotent, and does its key-service calls outside the + database transactions. An interrupted run resumes; two replicas cannot fight + over a row. +3. **Confirm nothing references the outgoing backend.** The sweep logs + `re-sealed stored credentials under the selected key service` with + `still_referencing_another_backend`. While that is true it also logs a warning + naming the exact columns and counts. **This is the only safe signal to act + on** — a count of what the sweep changed cannot tell "finished" from "failed + on the first row", which is why the remaining count is reported separately. +4. **Withdraw.** With nothing remaining, clear + `KEY_SERVICE_PREVIOUS_BACKEND` and restart. Only now remove the outgoing + service's binding — its address and credential, or its key grant. + +**Withdrawing early is the failure this sequence exists to prevent.** A value +still sealed by a backend the deployment no longer binds is refused by name +rather than mis-read, so it fails closed; but the credential is unreadable until +the backend is bound again, and for a webhook signing secret that is +unrecoverable — the consumer shares it, so the host cannot regenerate it. + +**Rollback.** Before step 4, swap the two keys back and restart: the sweep then +re-seals in the other direction. After step 4 the outgoing backend is no longer +bound, so rolling back means binding it again as the previous backend first. + +**If a row cannot be moved**, the sweep counts it and continues rather than +aborting, so one unreadable value does not hide the state of every other column. +Investigate the named column before withdrawing; a row sealed by a *third* +backend nobody binds is reported as `unparseable` or under its own tag. + ## Availability and security tradeoff A gateway that cannot reach the JWKS keeps serving its last good key set for diff --git a/module/deployment/README.md b/module/deployment/README.md index e5a8cc649..7f46a710d 100644 --- a/module/deployment/README.md +++ b/module/deployment/README.md @@ -242,6 +242,15 @@ connector credential, MFA secret and WebAuthn credential. A product must reach that Vault by name rather than inherit whichever one the composition happened to render. +**A cell on a cloud key service needs this only for the signing key.** Selecting +`KEY_SERVICE_BACKEND=kms` in the `key-service` group moves the envelope key and +the keyed hash to the cell's cloud key-management service — non-exportable keys, +reached with the workload's own cloud identity, with key names and no credential +in the configuration. The signing key cannot move there yet, so a hosted cell +still declares this kind for that one key; `module/KEY_ROTATION.md`, "Why `kms` +cannot hold the signing key yet", says what has to change upstream first. When it +does, a cell selecting `kms` for both families declares no `cell-vault` at all. + ```yaml managed-services: vault: From f7eb545ae9f7d0b82dcd07a2bdde314b5af1d785 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:54:44 -0400 Subject: [PATCH 05/10] feat(accounts): a hosted cell can run with no secrets store at all (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The signing key was stuck on Vault because a Cloud KMS key cannot be exported while three consumers are HANDED the key rather than being given a signer to call. That is a dependency-injection problem in sdk-go and core, and fixing it there is the right fix — but it is not the only way to reach the actual goal, which was "no stateful secrets store to run, unseal, back up and credential, and no stored credential to rotate". So the signing key now has three homes, and `kms-wrapped` is a third backend rather than a fallback inside `kms`: vault the keypair in Vault KV v2, read at boot kms-wrapped a ciphertext in KEY_SERVICE_SIGNING_KEY_WRAPPED that only the cell's Cloud KMS key can turn back into a key — no secrets store kms the key never leaves Cloud KMS; still refused by name A hosted cell on `kms` + `kms-wrapped` runs no Vault at all. The wrapped value is a configuration VALUE, not a secret: it is inert without the Cloud KMS key named in KEY_SERVICE_KMS_SIGNING_WRAP_KEY and the workload identity that reaches it, so nothing stored is a credential on its own and there is nothing to rotate. It is a separate backend because it is a WEAKER property and an operator has to choose it knowingly: the unwrapped key lives in process memory, so it is non-exportable at rest and not in use. Collapsing it into `kms` would make the weaker shape the one a deployment lands in by accident — the same mistake as a tri-state riding in on a sentinel. Three details that are load-bearing rather than incidental: - The wrapping key is NOT the envelope key. Destroying an envelope-key version would otherwise take away the host's ability to boot, and the two rotate on unrelated schedules. - The wrapped key is bound to its own associated data, `signing-key-wrap`, so a stored credential's ciphertext cannot be presented as a signing key and a wrapped signing key cannot be opened through the stored-credential path. Both directions are tested. - The wrap key goes through the same validation as the envelope key, boot probe included, because every static check passes on a key that is well-formed and simply is not this deployment's. The `kms` refusal now names `kms-wrapped` as the shape that works today, and says the upstream change is an injected crypto.Signer rather than leaving the reader to infer it. Co-Authored-By: Claude Opus 5 (1M context) --- module/KEY_ROTATION.md | 50 +++++++-- module/configurations/local/key-service.env | 53 +++++++-- .../code/pkg/keyservice/conformance_test.go | 104 ++++++++++++++++++ .../code/pkg/keyservice/keyservice.go | 16 ++- .../accounts/code/pkg/keyservice/kms.go | 96 ++++++++++++++-- .../accounts/code/pkg/keyservice/load.go | 52 +++++++-- .../services/accounts/code/work_auth_test.go | 5 +- 7 files changed, 339 insertions(+), 37 deletions(-) diff --git a/module/KEY_ROTATION.md b/module/KEY_ROTATION.md index aa3f6f49a..d42f8ecd4 100644 --- a/module/KEY_ROTATION.md +++ b/module/KEY_ROTATION.md @@ -64,7 +64,7 @@ Two backends, selected per key family in the `key-service` group | How accounts authenticates | an AppRole credential the `vault` secret group delivers | the workload's own cloud identity — on GCP the metadata server, against the service account bound to the pod | | What the configuration carries | an address and a credential | key **names** only: no credential, no file | | What the cell operates | a stateful store to run, unseal, back up and credential | nothing; keys are cloud resources | -| Can hold the signing key | yes | **no, today** — see below | +| Can hold the signing key | yes | **wrapped, yes; natively, not yet** — see below | | Can hold the envelope key | yes | yes | `KEY_SERVICE_BACKEND` selects the backend that seals stored credentials and @@ -81,7 +81,36 @@ Outside the local environment an unselected backend **refuses to start, by name**. The two shapes have opposite custody models, so inheriting either by default would mean reaching a key service nobody chose. -### Why `kms` cannot hold the signing key yet +### The signing key's three homes + +| `KEY_SERVICE_SIGNING_BACKEND` | Where the key is | Secrets store | Key material in process | +| --- | --- | --- | --- | +| `vault` | Vault KV v2, read at boot | yes — a Vault to run, unseal, back up, credential | yes | +| `kms-wrapped` | a ciphertext in `KEY_SERVICE_SIGNING_KEY_WRAPPED`, unwrapped at boot by a Cloud KMS key | **none** | yes | +| `kms` | inside Cloud KMS; every signature is a request | **none** | **no** | + +`kms-wrapped` is what lets a hosted cell run with **no secrets store at all** +today. The wrapped value is a ciphertext carried as a configuration value, inert +without the Cloud KMS key named in `KEY_SERVICE_KMS_SIGNING_WRAP_KEY` and the +workload identity that reaches it — so nothing stored is a credential on its own, +and there is no store to operate. What it does not give you is non-exportability +*in use*: the unwrapped key lives in process memory, so it is non-exportable at +rest only. That is a weaker property than `kms`, which is why it is a backend of +its own rather than a fallback inside `kms` — an operator chooses it knowingly +instead of landing on it by default. + +The wrapping key is deliberately **not** the envelope key: destroying an +envelope-key version would otherwise take away the host's ability to boot, and +the two rotate on unrelated schedules. + +The wrapped value is the host's identity, so it must be identical across every +replica and every restart — the `kid` the gateway pinned moves if it changes. +Producing it is the cell's provisioning, from the cell's durable seed, exactly as +seeding Vault is on the `vault` backend; this module names no command of its own. +accounts refuses a value wrapped by a different key, of the wrong size, or not in +the envelope framing, each by name. + +### Why `kms` cannot hold the signing key natively yet A Cloud KMS key cannot be exported, and three consumers are handed the signing key rather than signing through the key service: @@ -92,13 +121,16 @@ key rather than signing through the key service: | the delegation minter | `github.com/codefly-dev/core`, `policy.MintEd25519` | | the OAuth state signer's seed | `pkg/auth/oauth_state.go` | -Each would have to accept a `crypto.Signer` first. Until then -`KEY_SERVICE_SIGNING_BACKEND=kms` is refused by name at startup rather than -left to surface as a Work Context authority that answers every RPC with a -configuration error and a delegation minter that silently falls back to its v1 -HMAC. **A hosted cell therefore runs `kms` for stored credentials with the -signing key still on `vault`**, so it is not yet free of a secrets store for -both keys. +This is a dependency-injection problem, not a cryptography one: each of those +constructors takes the key *material* where it should take an injected signer. +Once they accept a `crypto.Signer`, accounts hands them the key service and the +key never leaves Cloud KMS. + +Until then `KEY_SERVICE_SIGNING_BACKEND=kms` is refused by name at startup, +rather than left to surface as a Work Context authority that answers every RPC +with a configuration error and a delegation minter that silently falls back to +its v1 HMAC. The refusal names `kms-wrapped` as the shape that runs with no +secrets store today. ## Custody of the signing key diff --git a/module/configurations/local/key-service.env b/module/configurations/local/key-service.env index 7d4d86df5..dab838149 100644 --- a/module/configurations/local/key-service.env +++ b/module/configurations/local/key-service.env @@ -34,13 +34,27 @@ # users, while replacing the signing key either re-logs everyone in or needs both # keys published across the cutover. # -# `kms` is NOT yet selectable for the signing key, and accounts refuses it by -# name. A Cloud KMS key cannot be exported, and three consumers are handed the -# signing key rather than signing through the key service: the Work Context -# signer (github.com/codefly-dev/sdk-go/workcontext), the delegation minter -# (github.com/codefly-dev/core policy.MintEd25519) and the OAuth state signer's -# seed. Those have to accept a crypto.Signer first. A hosted cell therefore runs -# KEY_SERVICE_BACKEND=kms with the signing key still on `vault`. +# The signing key has THREE possible homes, and the difference is a security +# property an operator chooses knowingly rather than one that arrives by default: +# +# vault the keypair lives in Vault KV v2 and accounts reads it at boot. +# kms-wrapped the key is a ciphertext in KEY_SERVICE_SIGNING_KEY_WRAPPED below +# that only the cell's Cloud KMS key can turn back into a key. +# NO SECRETS STORE: nothing to run, unseal, back up or credential, +# and the stored value is inert without that key and the workload +# identity that reaches it. The unwrapped key does live in process +# memory, so this is non-exportable AT REST, not in use. +# kms the key never leaves Cloud KMS and every signature is a request. +# REFUSED BY NAME today: three consumers are HANDED the signing key +# rather than being given a signer to call — the Work Context +# signer (github.com/codefly-dev/sdk-go/workcontext), the +# delegation minter (github.com/codefly-dev/core +# policy.MintEd25519) and the OAuth state signer's seed — so each +# has to accept an injected crypto.Signer first. +# +# A hosted cell that wants no Vault at all runs KEY_SERVICE_BACKEND=kms with +# KEY_SERVICE_SIGNING_BACKEND=kms-wrapped today, and moves to `kms` once those +# three take an injected signer. KEY_SERVICE_BACKEND=vault KEY_SERVICE_PREVIOUS_BACKEND= KEY_SERVICE_SIGNING_BACKEND= @@ -79,3 +93,28 @@ KEY_SERVICE_SIGNING_BACKEND= # first MFA enrolment or API-key lookup. KEY_SERVICE_KMS_ENVELOPE_KEY= KEY_SERVICE_KMS_MAC_KEY= + +# The `kms-wrapped` signing backend. A key of its own rather than the envelope +# key: destroying an envelope-key version would otherwise take away this host's +# ability to boot, and the two rotate on unrelated schedules. +# +# KEY_SERVICE_KMS_SIGNING_WRAP_KEY a cryptoKey, purpose ENCRYPT_DECRYPT, +# algorithm GOOGLE_SYMMETRIC_ENCRYPTION +# KEY_SERVICE_SIGNING_KEY_WRAPPED the wrapped key, as a VALUE: the base64 +# Ed25519 seed sealed by the key above under +# the associated data `signing-key-wrap`, in +# the stored envelope framing +# (cfs1:gcp-kms:::) +# +# The wrapped value is a ciphertext, not a credential: it is useless without the +# Cloud KMS key and the workload identity that reaches it, which is why it rides +# in this group as a value rather than as a secret or a mounted file. +# +# It must be the SAME value for every replica and across restarts — it is the +# host's identity, and the `kid` the gateway pinned moves if it changes. Producing +# it is the cell's provisioning, from the cell's durable seed, exactly as seeding +# Vault is on the `vault` backend: this module names no command of its own. +# accounts refuses a value wrapped by a different key, of the wrong size, or not +# in the envelope framing, each by name. +KEY_SERVICE_KMS_SIGNING_WRAP_KEY= +KEY_SERVICE_SIGNING_KEY_WRAPPED= diff --git a/module/services/accounts/code/pkg/keyservice/conformance_test.go b/module/services/accounts/code/pkg/keyservice/conformance_test.go index a24572c42..932d03e89 100644 --- a/module/services/accounts/code/pkg/keyservice/conformance_test.go +++ b/module/services/accounts/code/pkg/keyservice/conformance_test.go @@ -7,6 +7,8 @@ package keyservice // cannot be read after a cutover. import ( + "crypto/ed25519" + "encoding/base64" "errors" "net/http" "strings" @@ -518,3 +520,105 @@ func TestIsEnvelopeFramingAcceptsFramingsThisBuildCannotOpen(t *testing.T) { require.False(t, IsEnvelopeFraming(plaintext), "%q is not an application envelope", plaintext) } } + +// The `kms-wrapped` signing backend: a hosted cell runs with no secrets store at +// all, because the signing key is a ciphertext in configuration that only the +// cell's Cloud KMS key and its workload identity can turn back into a key. +func TestKMSWrappedSigningKeyRoundTrips(t *testing.T) { + fake := newFakeKMS(t) + config := fake.config() + config.SigningWrapKey = fake.addSymmetricKey(t, testKeyName("signing-wrap")) + + wrap, err := NewKMSKeyWrap(t.Context(), config) + require.NoError(t, err) + + seed := make([]byte, ed25519.SeedSize) + for i := range seed { + seed[i] = byte(i + 1) + } + wrapped := wrapSigningSeed(t, wrap, seed) + + private, err := wrap.UnwrapSigningKey(t.Context(), wrapped) + require.NoError(t, err) + require.Equal(t, ed25519.NewKeyFromSeed(seed), private) + + // The same ciphertext must always yield the same key: every replica and + // every restart has to sign identically, and the `kid` the gateway pinned + // cannot move. + again, err := wrap.UnwrapSigningKey(t.Context(), wrapped) + require.NoError(t, err) + require.Equal(t, private, again) +} + +// A wrapped key is not interchangeable with a sealed credential: the associated +// data differs, so a stored credential's ciphertext cannot be presented as a +// signing key. +func TestKMSWrappedSigningKeyIsBoundToItsOwnPurpose(t *testing.T) { + fake := newFakeKMS(t) + config := fake.config() + config.SigningWrapKey = fake.addSymmetricKey(t, testKeyName("signing-wrap")) + wrap, err := NewKMSKeyWrap(t.Context(), config) + require.NoError(t, err) + + // Sealed under a stored-credential purpose on the very same key. + payload, err := wrap.wrap.Seal(t.Context(), "mfa-totp", + base64.StdEncoding.EncodeToString(make([]byte, ed25519.SeedSize))) + require.NoError(t, err) + + _, err = wrap.UnwrapSigningKey(t.Context(), + Envelope{Backend: TagGCPKMS, Payload: payload}.String()) + require.Error(t, err, "a credential sealed under another purpose must not unwrap as a signing key") +} + +func TestKMSWrappedSigningKeyRefusesByName(t *testing.T) { + fake := newFakeKMS(t) + config := fake.config() + config.SigningWrapKey = fake.addSymmetricKey(t, testKeyName("signing-wrap")) + wrap, err := NewKMSKeyWrap(t.Context(), config) + require.NoError(t, err) + + t.Run("a value that is not an envelope", func(t *testing.T) { + _, err := wrap.UnwrapSigningKey(t.Context(), "just-a-base64-seed") + require.Error(t, err) + require.Contains(t, err.Error(), SigningKeyWrappedKey) + require.Contains(t, err.Error(), KMSSigningWrapKeyKey, "the refusal must say how to produce the value") + }) + + t.Run("wrapped by a different key", func(t *testing.T) { + other := fake.config() + other.SigningWrapKey = fake.addSymmetricKey(t, testKeyName("someone-elses-wrap")) + otherWrap, err := NewKMSKeyWrap(t.Context(), other) + require.NoError(t, err) + foreign := wrapSigningSeed(t, otherWrap, make([]byte, ed25519.SeedSize)) + + _, err = wrap.UnwrapSigningKey(t.Context(), foreign) + require.Error(t, err) + require.Contains(t, err.Error(), "wrapped by a different Cloud KMS key") + }) + + t.Run("the wrapped value is the wrong size", func(t *testing.T) { + short := wrapSigningSeed(t, wrap, []byte("too-short")) + _, err := wrap.UnwrapSigningKey(t.Context(), short) + require.Error(t, err) + require.Contains(t, err.Error(), "Ed25519 seed") + }) + + t.Run("the wrap key is not a resource name", func(t *testing.T) { + bad := fake.config() + bad.SigningWrapKey = "signing-wrap" + _, err := NewKMSKeyWrap(t.Context(), bad) + require.Error(t, err) + require.Contains(t, err.Error(), KMSSigningWrapKeyKey) + }) +} + +// wrapSigningSeed produces what the cell's provisioning would: the base64 seed, +// sealed by the wrapping key under the signing-key purpose, in the stored +// envelope framing. +func wrapSigningSeed(t *testing.T, wrap *KMSKeyWrap, seed []byte) string { + t.Helper() + payload, err := wrap.wrap.Seal(t.Context(), signingKeyWrapPurpose, + base64.StdEncoding.EncodeToString(seed)) + require.NoError(t, err) + return Envelope{Backend: TagGCPKMS, Payload: payload}.String() +} diff --git a/module/services/accounts/code/pkg/keyservice/keyservice.go b/module/services/accounts/code/pkg/keyservice/keyservice.go index 341dfcde5..13fade11f 100644 --- a/module/services/accounts/code/pkg/keyservice/keyservice.go +++ b/module/services/accounts/code/pkg/keyservice/keyservice.go @@ -37,18 +37,28 @@ const ( // the envelope key and the keyed hash, reached with an AppRole credential. BackendVault Backend = "vault" // BackendKMS is the deployment's cloud key-management service, reached with - // the workload's cloud identity. + // the workload's cloud identity. The key is never exportable: every + // operation is a request. BackendKMS Backend = "kms" + // BackendKMSWrapped holds a key as a ciphertext the cloud key service can + // unwrap, rather than as a key the service operates on. + // + // It is a SEPARATE backend rather than a fallback inside BackendKMS because + // it is a weaker property and an operator must choose it knowingly: the + // unwrapped key exists in process memory, so it is non-exportable at rest + // and not non-exportable in use. Collapsing the two would make the weaker + // one the state a deployment lands in by accident. + BackendKMSWrapped Backend = "kms-wrapped" ) // Backends is every backend a deployment may select, in the order a refusal // lists them. -var Backends = []Backend{BackendVault, BackendKMS} +var Backends = []Backend{BackendVault, BackendKMS, BackendKMSWrapped} // ParseBackend resolves a configured value, naming what was wrong. func ParseBackend(value string) (Backend, error) { switch candidate := Backend(strings.TrimSpace(value)); candidate { - case BackendVault, BackendKMS: + case BackendVault, BackendKMS, BackendKMSWrapped: return candidate, nil case "": return "", errors.New("no key-service backend is selected") diff --git a/module/services/accounts/code/pkg/keyservice/kms.go b/module/services/accounts/code/pkg/keyservice/kms.go index 28d2477da..f653b4c42 100644 --- a/module/services/accounts/code/pkg/keyservice/kms.go +++ b/module/services/accounts/code/pkg/keyservice/kms.go @@ -42,6 +42,7 @@ package keyservice import ( "bytes" "context" + "crypto/ed25519" "crypto/sha256" "encoding/base64" "encoding/json" @@ -84,6 +85,11 @@ type KMSConfig struct { EnvelopeKey string // MACKey is the HMAC cryptoKeyVERSION behind API-key lookup. MACKey string + // SigningWrapKey is the symmetric cryptoKey that unwraps the Ed25519 signing + // key. A key of its own rather than the envelope key: destroying an envelope + // key version would otherwise take the host's ability to boot with it, and + // the two rotate on unrelated schedules. + SigningWrapKey string // apiBase and metadataBase are unexported and set only by this package's // own tests, so the conformance suite can run the real request and response // handling against a fake while production has one hard-coded endpoint @@ -268,7 +274,8 @@ func NewKMSSealer(ctx context.Context, config KMSConfig) (*KMSSealer, error) { return nil, fmt.Errorf("key service: KEY_SERVICE_KMS_MAC_KEY must be a Cloud KMS cryptoKeyVersion resource name (…/cryptoKeys//cryptoKeyVersions/), got %q — the keyed hash behind API-key lookup is pinned to one version because moving it stops every API key already stored from matching", config.MACKey) } client := newKMSClient(config) - if err := requireCryptoKey(ctx, client, config.EnvelopeKey, purposeEncryptDecrypt, algorithmSymmetric); err != nil { + sealer, err := newKMSEnvelope(ctx, client, config.EnvelopeKey) + if err != nil { return nil, err } var macKey kmsCryptoKeyVersion @@ -281,25 +288,33 @@ func NewKMSSealer(ctx context.Context, config KMSConfig) (*KMSSealer, error) { if macKey.State != versionStateEnabled { return nil, fmt.Errorf("key service: cloud kms key version %s is %s, not %s", config.MACKey, macKey.State, versionStateEnabled) } - sealer := &KMSSealer{ - client: client, envelopeKey: config.EnvelopeKey, macVersion: config.MACKey, - fingerprint: keyFingerprint(config.EnvelopeKey), + sealer.macVersion = config.MACKey + return sealer, nil +} + +// newKMSEnvelope validates a symmetric key and proves it works, returning a +// sealer with no MAC key bound. Shared by the envelope key and the key-wrapping +// key, because both need exactly these checks. +func newKMSEnvelope(ctx context.Context, client *kmsClient, keyName string) (*KMSSealer, error) { + if err := requireCryptoKey(ctx, client, keyName, purposeEncryptDecrypt, algorithmSymmetric); err != nil { + return nil, err } + sealer := &KMSSealer{client: client, envelopeKey: keyName, fingerprint: keyFingerprint(keyName)} // A seal/open round trip at boot, because every static check above passes on // a key that is perfectly well-formed and simply is not the one that sealed - // this deployment's data. Doing it here makes a wrong KEY_SERVICE_KMS_ENVELOPE_KEY - // a startup refusal, while the deployment can still be fixed, rather than a + // this deployment's data. Doing it here makes a wrong key name a startup + // refusal, while the deployment can still be fixed, rather than a // per-credential 400 discovered during a sync. payload, err := sealer.Seal(ctx, kmsProbePurpose, kmsProbePlaintext) if err != nil { - return nil, fmt.Errorf("key service: cloud kms key %s cannot seal: %w", config.EnvelopeKey, err) + return nil, fmt.Errorf("key service: cloud kms key %s cannot seal: %w", keyName, err) } opened, err := sealer.Open(ctx, kmsProbePurpose, payload) if err != nil { - return nil, fmt.Errorf("key service: cloud kms key %s cannot open what it sealed: %w", config.EnvelopeKey, err) + return nil, fmt.Errorf("key service: cloud kms key %s cannot open what it sealed: %w", keyName, err) } if opened != kmsProbePlaintext { - return nil, fmt.Errorf("key service: cloud kms key %s round-tripped a different value", config.EnvelopeKey) + return nil, fmt.Errorf("key service: cloud kms key %s round-tripped a different value", keyName) } return sealer, nil } @@ -479,3 +494,66 @@ func (k *KMSSealer) MAC(ctx context.Context, plaintext string) (string, error) { Payload: strconv.Itoa(versionOrdinal(k.macVersion)) + ":" + k.fingerprint + ":" + result.MAC, }.String(), nil } + +// The associated data every wrapped signing key is bound to. A wrapped key is +// not interchangeable with a sealed credential: binding the purpose means a +// stored credential's ciphertext cannot be presented as a signing key, and a +// wrapped signing key cannot be opened through the stored-credential path. +const signingKeyWrapPurpose = "signing-key-wrap" + +// KMSKeyWrap is a Cloud KMS symmetric key used only to unwrap the Ed25519 +// signing key. +// +// This is the weaker of the two `kms` shapes and exists because the key material +// is still needed in process: the Work Context signer, the delegation minter and +// the OAuth state signer are each HANDED the key rather than being given a +// signer to call, so until they accept an injected signer the key cannot stay +// inside the key service. What this does buy is the rest of the goal — no +// secrets store to run, unseal, back up and credential, and nothing stored that +// is a credential on its own: the wrapped key is inert without the Cloud KMS key +// and the workload identity that reaches it. +type KMSKeyWrap struct { + wrap *KMSSealer + // name is kept for refusals, which have to say WHICH key could not unwrap. + name string +} + +// NewKMSKeyWrap validates the wrapping key the same way the envelope key is +// validated, including the boot round trip. +func NewKMSKeyWrap(ctx context.Context, config KMSConfig) (*KMSKeyWrap, error) { + if !cryptoKeyName.MatchString(config.SigningWrapKey) { + return nil, fmt.Errorf("key service: %s must be a Cloud KMS cryptoKey resource name (projects//locations//keyRings//cryptoKeys/), got %q", KMSSigningWrapKeyKey, config.SigningWrapKey) + } + wrap, err := newKMSEnvelope(ctx, newKMSClient(config), config.SigningWrapKey) + if err != nil { + return nil, err + } + return &KMSKeyWrap{wrap: wrap, name: config.SigningWrapKey}, nil +} + +// UnwrapSigningKey turns the configured ciphertext into the Ed25519 private key. +// +// The wrapped value is an envelope in the same framing as a stored credential, +// so it records the Cloud KMS key that produced it and a value wrapped by a +// different key is refused by name rather than read as corrupt. +func (w *KMSKeyWrap) UnwrapSigningKey(ctx context.Context, wrapped string) (ed25519.PrivateKey, error) { + envelope, err := ParseEnvelope(strings.TrimSpace(wrapped)) + if err != nil { + return nil, fmt.Errorf("%s is not a key-service envelope: %w — wrap the Ed25519 seed with the Cloud KMS key named in %s, under the associated data %q", SigningKeyWrappedKey, err, KMSSigningWrapKeyKey, signingKeyWrapPurpose) + } + if !w.wrap.Accepts(envelope) { + return nil, fmt.Errorf("%s was wrapped by a different Cloud KMS key than %s names (%s): bind the key that wrapped it, or re-wrap the seed with this one", SigningKeyWrappedKey, KMSSigningWrapKeyKey, w.name) + } + encoded, err := w.wrap.Open(ctx, signingKeyWrapPurpose, envelope.Payload) + if err != nil { + return nil, fmt.Errorf("unwrap the signing key with cloud kms key %s: %w", w.name, err) + } + seed, err := base64.StdEncoding.DecodeString(strings.TrimSpace(encoded)) + if err != nil { + return nil, fmt.Errorf("key service: the unwrapped signing key is not base64: %w", err) + } + if len(seed) != ed25519.SeedSize { + return nil, fmt.Errorf("key service: the unwrapped signing key is %d bytes, want an %d-byte Ed25519 seed", len(seed), ed25519.SeedSize) + } + return ed25519.NewKeyFromSeed(seed), nil +} diff --git a/module/services/accounts/code/pkg/keyservice/load.go b/module/services/accounts/code/pkg/keyservice/load.go index 30d47c756..a0c173557 100644 --- a/module/services/accounts/code/pkg/keyservice/load.go +++ b/module/services/accounts/code/pkg/keyservice/load.go @@ -38,6 +38,15 @@ const ( KMSEnvelopeKeyKey = "KEY_SERVICE_KMS_ENVELOPE_KEY" KMSMACKeyKey = "KEY_SERVICE_KMS_MAC_KEY" + // KMSSigningWrapKeyKey names the symmetric key that unwraps the signing key + // on the `kms-wrapped` signing backend. + KMSSigningWrapKeyKey = "KEY_SERVICE_KMS_SIGNING_WRAP_KEY" + // SigningKeyWrappedKey carries the wrapped signing key itself, as a VALUE. + // It is a ciphertext, inert without the Cloud KMS key above and the workload + // identity that reaches it, so it is not a credential delivered to the pod — + // which is the whole point: no secrets store, and nothing stored that is a + // secret on its own. + SigningKeyWrappedKey = "KEY_SERVICE_SIGNING_KEY_WRAPPED" ) // Binding is the key service this deployment resolved: the cipher every @@ -59,6 +68,10 @@ type Binding struct { VaultHealth func(ctx context.Context) error kms KMSConfig + // wrappedSigningKey is the configured ciphertext, read once at selection so + // a missing one refuses with every other configuration problem rather than + // after a key service has already been reached. + wrappedSigningKey string } // Selected is what the `key-service` group says, with nothing bound yet. @@ -93,8 +106,8 @@ func Selection(ctx context.Context, local bool) (Selected, error) { // answering every RPC with a configuration error and the delegation // minter silently falling back to its v1 HMAC. Refusing the selection // is the honest answer until those accept a crypto.Signer. - return Selected{}, fmt.Errorf("%s=%s is not supported: a Cloud KMS key cannot be exported, and the Work Context signer (github.com/codefly-dev/sdk-go/workcontext), the delegation minter (github.com/codefly-dev/core policy.MintEd25519) and the OAuth state signer are each handed the signing key itself rather than signing through the key service, so each would need to accept a crypto.Signer first. Leave %s unset or %s while %s=%s seals stored credentials; the two keys are selected separately for exactly this reason", - SigningBackendKey, BackendKMS, SigningBackendKey, BackendVault, BackendKey, BackendKMS) + return Selected{}, fmt.Errorf("%s=%s is not supported yet: a Cloud KMS key cannot be exported, and the Work Context signer (github.com/codefly-dev/sdk-go/workcontext), the delegation minter (github.com/codefly-dev/core policy.MintEd25519) and the OAuth state signer are each HANDED the signing key rather than being given a signer to call, so each has to accept an injected crypto.Signer first. Use %s=%s to run with no secrets store today — the key is wrapped by a Cloud KMS key and unwrapped at boot, which is non-exportable at rest rather than in use — or %s=%s to keep it in Vault", + SigningBackendKey, BackendKMS, SigningBackendKey, BackendKMSWrapped, SigningBackendKey, BackendVault) } if named := groupValue(ctx, PreviousBackendKey); named != "" { if selection.Previous, err = ParseBackend(named); err != nil { @@ -120,9 +133,12 @@ func Load(ctx context.Context) (*Binding, error) { } backend, previous, signing := selection.Backend, selection.Previous, selection.SigningBackend - binding := &Binding{Backend: backend, Previous: previous, SigningBackend: signing} - if backend == BackendKMS || previous == BackendKMS { - if binding.kms, err = kmsConfig(ctx, backend, previous); err != nil { + binding := &Binding{ + Backend: backend, Previous: previous, SigningBackend: signing, + wrappedSigningKey: groupValue(ctx, SigningKeyWrappedKey), + } + if backend == BackendKMS || previous == BackendKMS || signing == BackendKMSWrapped { + if binding.kms, err = kmsConfig(ctx, backend, previous, signing); err != nil { return nil, err } } @@ -191,6 +207,17 @@ func (b *Binding) vaultConnection(ctx context.Context) (*vaultconnection.Connect // differently, break every existing session, and desynchronise the `kid` the // gateway pinned. func (b *Binding) SigningKey(ctx context.Context, ephemeral bool) (ed25519.PrivateKey, error) { + if b.SigningBackend == BackendKMSWrapped { + wrap, err := NewKMSKeyWrap(ctx, b.kms) + if err != nil { + return nil, err + } + // No ephemeral fallback here even locally: the wrapped key and the key + // that unwraps it are both configuration, so a failure is a + // configuration answer the operator can act on, not an absent dependency + // a developer machine might legitimately lack. + return wrap.UnwrapSigningKey(ctx, b.wrappedSigningKey) + } if b.SigningBackend != BackendVault { return nil, fmt.Errorf("unsupported key-service signing backend %q", b.SigningBackend) } @@ -241,12 +268,21 @@ func selectedBackend(ctx context.Context, key string, local bool) (Backend, erro return backend, nil } -func kmsConfig(ctx context.Context, backend, previous Backend) (KMSConfig, error) { +func kmsConfig(ctx context.Context, backend, previous, signing Backend) (KMSConfig, error) { config := KMSConfig{ - EnvelopeKey: groupValue(ctx, KMSEnvelopeKeyKey), - MACKey: groupValue(ctx, KMSMACKeyKey), + EnvelopeKey: groupValue(ctx, KMSEnvelopeKeyKey), + MACKey: groupValue(ctx, KMSMACKeyKey), + SigningWrapKey: groupValue(ctx, KMSSigningWrapKeyKey), } var missing []string + if signing == BackendKMSWrapped { + if config.SigningWrapKey == "" { + missing = append(missing, KMSSigningWrapKeyKey) + } + if strings.TrimSpace(groupValue(ctx, SigningKeyWrappedKey)) == "" { + missing = append(missing, SigningKeyWrappedKey) + } + } if (backend == BackendKMS || previous == BackendKMS) && config.EnvelopeKey == "" { missing = append(missing, KMSEnvelopeKeyKey) } diff --git a/module/services/accounts/code/work_auth_test.go b/module/services/accounts/code/work_auth_test.go index 78644f98d..3aa533940 100644 --- a/module/services/accounts/code/work_auth_test.go +++ b/module/services/accounts/code/work_auth_test.go @@ -68,6 +68,7 @@ func clearVaultBinding(t *testing.T) { for _, key := range []string{ "KEY_SERVICE_BACKEND", "KEY_SERVICE_PREVIOUS_BACKEND", "KEY_SERVICE_SIGNING_BACKEND", "KEY_SERVICE_KMS_ENVELOPE_KEY", "KEY_SERVICE_KMS_MAC_KEY", + "KEY_SERVICE_KMS_SIGNING_WRAP_KEY", "KEY_SERVICE_SIGNING_KEY_WRAPPED", } { t.Setenv(key, "") t.Setenv("CODEFLY__WORKSPACE_CONFIGURATION__KEY_SERVICE__"+key, "") @@ -608,8 +609,10 @@ func TestStartupRefusesACloudKMSSigningBackend(t *testing.T) { _, err := doWork(context.Background()) require.Error(t, err) - require.Contains(t, err.Error(), "KEY_SERVICE_SIGNING_BACKEND=kms is not supported") + require.Contains(t, err.Error(), "KEY_SERVICE_SIGNING_BACKEND=kms is not supported yet") require.Contains(t, err.Error(), "crypto.Signer") + require.Contains(t, err.Error(), "kms-wrapped", + "the refusal must name the shape that DOES run with no secrets store today") } // The call site, not just the helper. The helper's own test stays green when From 63ba12cc14523aabbf34e417fd255cb7b54097dd Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:21:41 -0400 Subject: [PATCH 06/10] docs(accounts): label the cloud driver in accounts as a stopgap (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A service should not name a cloud vendor, and this one does: pkg/keyservice/kms.go hardcodes the Cloud KMS endpoint and the metadata server, and carries Google's resource-name grammar, purposes and algorithms. Everywhere else in this host "where a dependency lives" is resolved by the platform — accounts declares it needs a `vault` and reads its address through the projection, never hardcoding one — so this is both a service naming what sits above it and hardcoding what the system should resolve. It is here because there is nothing to resolve yet. Codefly can express `kind: cell-vault` but has no equivalent for a key service, so there is no projection for accounts to read and no agent that owns the driver the way service-vault owns Vault's. AGENTS.md's answer where the right fix lives in another repo is a precise issue against the owner plus an explicitly labelled stopgap, never an unlabelled one — so this labels it, in the file and in KEY_ROTATION.md, and the gap is codefly-dev/cli#924. The label also says what must not happen next: do not add a second cloud's driver here. Adding one would make this the place cloud drivers live, which is the state the comment exists to prevent. Everything above the seam — the envelope framing, the purpose binding, the cutover, the re-seal sweep — is vendor-neutral already, so when the dependency kind exists the driver moves below and nothing above it changes. Co-Authored-By: Claude Opus 5 (1M context) --- module/KEY_ROTATION.md | 10 ++++++++ .../accounts/code/pkg/keyservice/kms.go | 22 ++++++++++++++++++ target/.rustc_info.json | 1 + target/CACHEDIR.TAG | 3 +++ target/debug/.cargo-artifact-lock | 0 target/debug/.cargo-build-lock | 0 target/debug/.cargo-lock | 0 .../dep-test-bin-demo-svc | Bin 0 -> 31 bytes .../invoked.timestamp | 1 + .../test-bin-demo-svc | 1 + .../test-bin-demo-svc.json | 1 + target/debug/deps/demo_svc-d29fe6cd5b78f23a | Bin 0 -> 1048888 bytes target/debug/deps/demo_svc-d29fe6cd5b78f23a.d | 5 ++++ ...23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o | Bin 0 -> 52736 bytes 14 files changed, 44 insertions(+) create mode 100644 target/.rustc_info.json create mode 100644 target/CACHEDIR.TAG create mode 100644 target/debug/.cargo-artifact-lock create mode 100644 target/debug/.cargo-build-lock create mode 100644 target/debug/.cargo-lock create mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc create mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp create mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc create mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json create mode 100755 target/debug/deps/demo_svc-d29fe6cd5b78f23a create mode 100644 target/debug/deps/demo_svc-d29fe6cd5b78f23a.d create mode 100644 target/debug/deps/demo_svc-d29fe6cd5b78f23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o diff --git a/module/KEY_ROTATION.md b/module/KEY_ROTATION.md index d42f8ecd4..6c8a33f00 100644 --- a/module/KEY_ROTATION.md +++ b/module/KEY_ROTATION.md @@ -55,6 +55,16 @@ TTL — or within TTL + grace if accounts is unreachable for the whole window. ## The key service +> **Where the cloud driver lives is a labelled stopgap.** accounts holds the GCP +> Cloud KMS driver itself — the endpoint, the metadata server, Google's +> resource-name grammar — because Codefly can express "this cell runs a Vault" +> (`kind: cell-vault`) but has no equivalent for "this cell has a key service", +> so there is no projection to read and no agent that owns the driver the way +> `service-vault` owns Vault's. Filed as codefly-dev/cli#924. Everything above +> the seam is already vendor-neutral, so when that kind exists the driver moves +> below it and nothing here changes. + + Two backends, selected per key family in the `key-service` group (`module/configurations/local/key-service.env` carries the full binding): diff --git a/module/services/accounts/code/pkg/keyservice/kms.go b/module/services/accounts/code/pkg/keyservice/kms.go index f653b4c42..df381ea5b 100644 --- a/module/services/accounts/code/pkg/keyservice/kms.go +++ b/module/services/accounts/code/pkg/keyservice/kms.go @@ -2,6 +2,28 @@ package keyservice // GCP Cloud KMS, the first `kms` backend. // +// LABELLED STOPGAP — this file names a cloud vendor, and a service should not. +// +// Everywhere else in this host, "where a dependency lives" is resolved by the +// platform: accounts declares that it needs a `vault` and reads its address +// through the Codefly projection, so it never hardcodes one. This file breaks +// that rule on purpose and visibly: the Cloud KMS endpoint and the metadata +// server are hardcoded below, and the resource-name grammar, purposes and +// algorithms are Google's. Adding AWS or Azure therefore means editing accounts, +// which is the opposite of what a key-service seam is for. +// +// It is here because there is nothing to resolve yet. Codefly can express "this +// cell runs a Vault" (`kind: cell-vault`, module/deployment/README.md) but has no +// equivalent for "this cell has a key service", so there is no projection for +// accounts to read and no agent that owns the driver — the way `service-vault` +// owns Vault's. The gap is filed against the CLI, and when a key-service +// dependency kind exists this driver moves below the seam and nothing above it +// changes: the envelope framing, the purpose binding, the cutover and the +// re-seal sweep are all vendor-neutral already. +// +// Do not add a second cloud's driver here. Adding one would make this the place +// cloud drivers live, which is the state this comment exists to prevent. +// // A hosted cell already runs a managed key service, so accounts does not need a // stateful secrets store to hold two keys. What the configuration carries is key // NAMES — values, no files, no stored credential — and the workload diff --git a/target/.rustc_info.json b/target/.rustc_info.json new file mode 100644 index 000000000..e60d3f7e6 --- /dev/null +++ b/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":13560138388994086388,"outputs":{"9966638224964292233":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/antoine/.rustup/toolchains/1.99.0-aarch64-apple-darwin\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"aes\"\ntarget_feature=\"crc\"\ntarget_feature=\"dit\"\ntarget_feature=\"dotprod\"\ntarget_feature=\"dpb\"\ntarget_feature=\"dpb2\"\ntarget_feature=\"fcma\"\ntarget_feature=\"fhm\"\ntarget_feature=\"flagm\"\ntarget_feature=\"fp16\"\ntarget_feature=\"frintts\"\ntarget_feature=\"jsconv\"\ntarget_feature=\"lor\"\ntarget_feature=\"lse\"\ntarget_feature=\"neon\"\ntarget_feature=\"paca\"\ntarget_feature=\"pacg\"\ntarget_feature=\"pan\"\ntarget_feature=\"pmuv3\"\ntarget_feature=\"ras\"\ntarget_feature=\"rcpc\"\ntarget_feature=\"rcpc2\"\ntarget_feature=\"rdm\"\ntarget_feature=\"sb\"\ntarget_feature=\"sha2\"\ntarget_feature=\"sha3\"\ntarget_feature=\"ssbs\"\ntarget_feature=\"vh\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_primitive_alignment=\"128\"\ntarget_has_atomic_primitive_alignment=\"16\"\ntarget_has_atomic_primitive_alignment=\"32\"\ntarget_has_atomic_primitive_alignment=\"64\"\ntarget_has_atomic_primitive_alignment=\"8\"\ntarget_has_atomic_primitive_alignment=\"ptr\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""},"10622334480967957264":{"success":true,"status":"","code":0,"stdout":"rustc 1.99.0 (b940084d7 2026-09-28)\nbinary: rustc\ncommit-hash: b940084d7eb6a299eb4bfeb8e34901bc051e7ac4\ncommit-date: 2026-09-28\nhost: aarch64-apple-darwin\nrelease: 1.99.0\nLLVM version: 23.1.1\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/target/CACHEDIR.TAG b/target/CACHEDIR.TAG new file mode 100644 index 000000000..20d7c319c --- /dev/null +++ b/target/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/target/debug/.cargo-artifact-lock b/target/debug/.cargo-artifact-lock new file mode 100644 index 000000000..e69de29bb diff --git a/target/debug/.cargo-build-lock b/target/debug/.cargo-build-lock new file mode 100644 index 000000000..e69de29bb diff --git a/target/debug/.cargo-lock b/target/debug/.cargo-lock new file mode 100644 index 000000000..e69de29bb diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc new file mode 100644 index 0000000000000000000000000000000000000000..5c54f74a99114dbe9324f717bdccb4490efa0e4f GIT binary patch literal 31 hcmZQ%U|{&q$Ot4ExPiF1C|N%@F*8rEs2C)~002r{1w8-& literal 0 HcmV?d00001 diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp new file mode 100644 index 000000000..e00328da5 --- /dev/null +++ b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc new file mode 100644 index 000000000..6dd253afb --- /dev/null +++ b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc @@ -0,0 +1 @@ +1a9a993f72d99f75 \ No newline at end of file diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json new file mode 100644 index 000000000..6d018c830 --- /dev/null +++ b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json @@ -0,0 +1 @@ +{"rustc":17356518491003051113,"features":"[]","declared_features":"[]","target":16148229898596868819,"profile":3980689809636898329,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/deps/demo_svc-d29fe6cd5b78f23a b/target/debug/deps/demo_svc-d29fe6cd5b78f23a new file mode 100755 index 0000000000000000000000000000000000000000..0f12807bb07d2b21d23f8c225e016331fc88e184 GIT binary patch literal 1048888 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%0Ax8ixe6{zHt&iH5kTLJ7MN`7XAqA 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%0DxSetq2__PWopHMV? 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.cp}y)f-_<2EzBhaU8Ek}Vz= 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 literal 0 HcmV?d00001 diff --git a/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d b/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d new file mode 100644 index 000000000..d13993f0d --- /dev/null +++ b/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d @@ -0,0 +1,5 @@ +/Users/antoine/.lazybox/v2/github-codefly-dev-module-saas-starter/issue-1013-accounts-keys-behind-a-key-service-a-cloud/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d: src/main.rs + +/Users/antoine/.lazybox/v2/github-codefly-dev-module-saas-starter/issue-1013-accounts-keys-behind-a-key-service-a-cloud/target/debug/deps/demo_svc-d29fe6cd5b78f23a: src/main.rs + +src/main.rs: diff --git a/target/debug/deps/demo_svc-d29fe6cd5b78f23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o b/target/debug/deps/demo_svc-d29fe6cd5b78f23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o new file mode 100644 index 0000000000000000000000000000000000000000..ccef6f3bb3623951d19a0873a8b3a62d755f5964 GIT binary patch literal 52736 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%0A|P-P7}0wyMvy> zLxfCLDr*EeTq0!_Vx!z+<^s8+q-sCWd|sZA-(eE-z~56(I+?7Ml29VN0i+BxQ|&SL-2&Z{YddHuz0|G>`cE5bejx$KkqGmSqN^XF3hIOpRB`+Ku#}IWb!2LjPY*!kwn7JR|`ZQpVW+O99 zFP^`Fs@&5a4~TB*lPY8QGWzD*GH2n*S;klhg1kbUS=9GPAgr67+clH$o>W( z>UTeZN~oX5j}33s0V;^o;PSPoZPd#uZA$y!o@<|s+6Rm7yumg4Cqm?U4qfQW)z~w_76*Q9(N~LN=xeo72NJP zilfGyP%t#!jzSAKyllSramX<4_iW4Tl~6;CGPI>^MlW@GMP(G(4K%XgWwsu#Bi=Dj zUTm|!iDT7{5Vr?ltNIdA?*eQd8#fS`$bHfTJaV_pNmBH+-_*4nN;+))Z7iveS4M8B zr6Id*gKayYcAp}}=`|xc3i_|bkD3(KHWADndFHvpY##*q zz*hSW;t>*m1586^fR+N9c#vN6D&ogJ7nT^-z#^>>6FR1bi-8g$9aF=PaL7^5sezr( zpmrjaNO1=6!|Q@8fal2^M${)L|9qHb-xG#B&t*Jwk;l1OWeA?vM&FL9|3O5`%ZU$h z9l(`C?y+U52}V=^H|Y8SV(*bBJFRoNxAuqlyxv%A$^o%ELst`n(%ruWk6X^kQG?OW zUy<>ELDkw2D2t|IB5E4;>30EQ?d}$rAX`dC?QTRP*>C1fsz_U55%SxrevYW%X-2~J zDA&BubW@K$&_q!Kw&_gl>-qyy=HMiZZ5h0Z ziMBj|M_SmHF&Q@2v5l&iuq`{>3^mzAF^{uH+F-M^&TEvvt zdFeJ-Ku~YVETZOvXAk-2%WJd|`PRTH{sf5mR$lH4@`cKjmgN2^T1Z4qK|AjN#5`eR zlZUv2ZKN1s9@C(meHv<+Hj`C##}xr>@UYgHZ7>@#cmcMmdoXux26VaA&OwB0kZyU~ z!QJHsd7l9(o1Btgye~7{jv0uekP0Oc)^D~;ipJ&N{%1}=XIIH?v3yBEN~DW>NQG32=(QRKM|IB`N4Pr|Pq zPBNA1e8^@Gp8DI@bL?;cb=hyDR17y@Th&vDx(yKhYa2%@>g0WJxFmVjj~VzfnhH{B z6@4}%Utg5L$-^D}oV4&hZy<6!B|e0V?&$qeP`|feJP9Zw`ggY8=j9^xb3{js3a%yz_pH)V++YF=Ov_cJ7y>iI_}VSG3yPIiM4HMd2RH+7?r8&xO!siHMgW zF@W~Vws1uM*47)_eeaEI@5B#Ksc|}$5lGGBh4|x$PkcTsG1lqsoVX(_GA7y9b?iDz zB>N}k$M(3fXAsHzm<%urM&d+DB+i9ROx5xEh(MWx*o)PO2d-VAaM3luiCw~&JHO?? zoq{dp!!&cIW}X0ykeH4_`34q)2Y}}93;v?%hzGvxGT=mqg$aEvVqZ3RfxD=WW*Q32 zyj*?c9Rza<)z-WR%mQMuEm_v0blw0;=!|Fvd(H@~Hk0wgiw>6nCwn;bagXgs zDl#S$5uq!+)rg%dS#b4y4TvH|hy*L;Mse-gbv@#^d9`t5Vv6DI)WsOf zlK80yXG5AumD>t=+LXUXrHhTgwkp1^!+T$BSzN*9g=x$ZMfDi_AbE)zWDPgv3>))WC70td5gsr9VVd>&xHTc)yaqD$Vc)74n zz*5YR{T_&rMTKS0u*n6~%PH`AGsg`eBIUqNiQ63^b9`auc=BvHcFGM>XKqihf8xp| zvU&NpjUwc(B}QIZ>cR08^SB&M*#{%Y=OzbREz0anejLjTY40N;;$}1Z=PepCIQoS= zFa9G|afa-7B5-AokO{5ljBH*zYok_j6l0So8!r1Ahm}cW^Q~!hr=Zhlc{3s68HW8J z7H#{V`SUq`MtEVw3?l)ysuPIfs@^qTU4y*I-8KFIM_C3p1Ogj7FSh6-u4s`d8&NV- zY%o*oJJw9S%Jiz*C<}QTI{}v6HGY734n7VEIA`r~Cx#e`0Z(fg$jr1g z9OkyJ@qe*{#-_HZMG^g?AFzu1c|n) z$(R=>0J_RkDa@B{-t#c2EseZ5sVFhw8=VvLGjc9ME}kTIwTTp-#@KDyr(4*G>}>4r zI4nDlfkEI{+UNP|m^0E~xsA{X!po?`NM*?WH3(%6-5-}1SI;u+J9F5ZqrSBv<=+ES zV>kw|RgK^jW!&_>;Hbfll3H~&w)||39BEI;g$wkKHB!?jY*edHtxe8dQ@!lYm_2eE z+V2gt#Wp0wJY`G6g~9j5=ZNUWtpCKpFk{QpYYePL{SsqvO@Msg*|Wj-h8ThfEDrg6 zlv0fC2cAAoDya7j-{GX+i%5@-gfQmCHfGD*>4;C9i=S~i(ZNKu3o80C;t>*^m}-l3 zIy#36CL(i9Cr-h*cg#EpM4XT_Wu>06b@3n~I5Udu$>?%*a*xMrHXw1x;K67-x4lYE zHMm&C!GFHISS8ZB!{#E+HEAPY2S^RwL5$=6PG046i|lcn*g9Vd^>IckPi80P4Z|KD zL$HHk`jwf)+Ywt3?RCd}2E=R1IDO_dLiQo{`n)bK4-?`}m<&DQ>{xFkuO}|nJWLke z8zFo+Xokrt7vsq3PAdk|YI1qP8kbguD9EPf9C3*9@|yPbI;)p=G=63hyfyKjNl;%q z+Ll3HyxXk_Ig-_=cMIMRS3J0&Cp$<8v&vq@WF`kOELR2&a|TX*3_BER^&8GVM{{gw z#i=5~`Inu8{}`;B;Tw(39qAygzquhduVX3h&~JGD9y;F-&2K(9eIP>ng_jrp5Oqj1 zb#y?FnD;d{hwCyu$lA+)MFjrW!sJiYd^02PH|hAJ8k;U#vP0*7EmTT|)iO-dxKLxh z8_sZt#!VWl*wC-}j7@lcUPNWMLgTUs`8VkJ@bb3l`0X0+j*$PG4yqgxt#BWW3pLiM zK@^F9Tm=42I)1ap=AGhgn%<%DZjFNl>4O70{tYvo6FWk(#)=C4mR7P{QmYuO6y(}#wbIhpHg$<*c@Y*?r_4#2gIA_z;6=(M{_`6uD$6ERmoX+aW6YSGjO-k5 zR*Kh~iZ>n0{DN;13cR}`qkuB3sgLsT-{J58nQBkPe!HAF0b@jj#DkiX_n)3 z%ds_YrX@bhay-UzoNYPIu^gwiDA-zZs_Z5S~W&szJI{gAA(%8CDH4tQurkHOR1PkYUvz!>U1sRf7zx1{qcjGOZe9S~bYDYLIEw zAk(Trrd5MXs|J}?4Kl47WLh=IvTBfJ)ga5NK~}n`Ev~L8T}=Od6XZK))A4GcXvh|m zuM{)<;=!7&g zVdF*eFtacm;oZZk;(EL#DD+!o3#yYAAD~VFRay6i;{)~N`Be$YOBVV)xn#gXftvN zyhB#{#gNP8>v&^5S@VTFg1!@G&6+UJH+$NTCi~{hn>pF%6Yye)S3N7>1+A*MZZR5u zW_fXSeNEM*;`-uoL)bz15fk~YpV?2AmbMy!@XeYwW66bqG~bN+iGfAaYHMb#xMb1t zsTcb)m?IrlGo$|eEMJakHGy=z={kK;R+?}6qEz4Hi2?uAE2me^o;`Q*lm)(QbM+En z8kdtj(vu2RE^o*l>&eNUkD~}$jP<0>7lHaR5m+8TGuD*)18Cgpie&=s3nGDVDF$Qn%b(Q>Iq#BH5JTYMCm9sZn2ZHZ@eL2>2@( z=#FBoBlJ^R9lI*smu+@cYARn!E~^M&0$E;pwyrXn#-YOKFjjk+e8*boS7G^DwNDK+ zjKc9snTdhQnbpQfjV0ucqR~dGaHj3-Y=zl1-!wl&;^w>CB>EFg~DQj(2fkm ztm36-&rwlbjbWwOrtx@O+mc}kS2p;?B@)T$*w@C8RC~7iJnfy%F@c30K8WC{MAbadRGZF{{o*+PV7T0!^rIHfS4pO@3Q6O z1gh0lEtQ+An`%nXjM^}wEY%;=q!neUUYX^eoSIryT5B$RhPBYpAMPE=rKAz78ukmJ6PI_)7c>E2@2g z@*2Fy9!wmEYGVlv4q(-p;T7TpniI^EmhC&6$SIQ>B5SH9YqhkrHkmPcFv=M*HPtfK zvP};Pk)~%eJ;I$6O2O4SIOrej*9mKnZuOm*#0(JUYNa&yl4FFuS-zHI+1&n@N1WPC zjy6a0NSw~-{l*U|J{^^eTrv{RQs{7=q2Ofd2h9j9I8y7f*vRw1_Zls!UUU`oJV$40 zj&qip3d?NMZdjdcv!m3I8H24FPeRKlpTn5sDMm!8sX1-9qKVvPZ7@qS#Z@#>22b|V z!3loh)n0BMWow?LQYc-s&MZ$$lhUylK}{`=aU%6&+uTx}GHiym;iRsJ*r?bKVv`=) z5USym(Q;deEj4B#Y(XQbVWtZxj@cN@dL~F+rK8T;?>PUP8}R7~qxI0%Ge&JrPb52-T)L;;0X8nSxtgOkH}fHDe;QqRE7BPFn4@ypdYP z-1F)AQ0_=423pt8xX3gWp*1;6gzWif! zcA2xL7S|u(oQOW5#FXlbsgH;Ri5I98o1R4n5}H?182;}zWjT%HwJ&C z;RMC9O~ta5VhxjXf~sYyYaEdp8J@i4h>4J%&U8A-I~!BLmmyiyN|=fPpk~t?x#G6I zynz9@DAgqqX8nA@|@~NIM!oZE2nITjmQil!z8YU3ow?NQ5@l=d7wM z%vm@eRa$3I>qu>&PrLQLS7px4RT*V*ZT6=;uS>-e+0v(&d1WQ&WQ=Q;8UPmtG9zpd z%{{A{fUT!Y?cXZ4+P3QYXk=b8Q5~Q*&#lLex-6J!xh%*%08YgtwVg^8B^8)HaaxAv zk`sKJEv8nSbg-pnwDdO?d0WtuPc6Z?euUdt^~Jo9B)B!EqdiU^k&Bkw95YXN>9fn* zT|W2BYUir2$;(Z&x}v4Lq?u~8aUF(AqtC$_rGKa_X%tgIhUV=`)LMWp}CG5I^Qf%^yj7eWoa{ z%bWfjebS|$DgmeY5yqK$B9FwQUWMCxbbw8D9dY8ogGMt-Mif}qv-q{-I;qGV{u2|xZsl4cRR;j7l87C!1vM39S zc~?OeHC~j6;>g3oI;~_kR999k_E#>){U?2JZsoFzO9HruvS2|Z#msa8pQ^a8aF$ND zjH*axeXeOhN^k2fkwta}h8J$@R+M3DiaRFK!M42q8L0-5_%XRHqvKoAa-|AZvCXj? zd4>Nz#*OWUGMqNcz`ejaKhK>@mg5u*+bw;dZg?_F>m|{=Iu<(D*;$yYCk<&-kVF!k!I0QzaTs0PB&6HZLkW}d8(cn@^Xe$MfUq#eb>6RCbI8;U~N@d znc1uGU_mWzpXj14k!>4(Il{cF+n{&kb3*RwvsCs-l?|R1x40>TQ*qo;`QfM7kxJu~ z@c-u|KavKa`kEJ0a&zUSk)RiEc{!!krHbHX3hJ-6vS-;@w%m()e|STlpY5|;Q;DSV zzp1Uc3;vJkdCuFKXia&Cm{-(k5&Dj7TXSKgJG9@gP3PbSvgHy`Bjq_V7a+ds<}NGj~-E1nO2Gayi9r5ew8SztEt6>3?Ck=kT+a$zF1yUhR4f% z>Il!4>7&fxrA>VoUv8mz7uNc?l0NgsdW8*>d8>XrHo&|cIh)UZ;3j`SsGh?n6_3Fr z^BIj{0v_Xw@qmfsq*`0*eX&f_Zm@?vH{%&A+B=eYcJOZ@6_Ej%h$79J^|nVYD6>|dlEnd2H0 zwlOLbZ&Ub}l^5eaIG%RJQxyy9xz`bOc+5f_RRtC*ZP5|@M1Z>U%MBc##`VcPBkv~Y zqp7neOyyJXQvf#t^b`Gf@d&Rtz^4ZTpGxQJG^F^#4xeu3lfrz%jjvttl>ofaAn*o) zz*{u}FI@<{4kY+4Azm;LLjdH#I}RcRkP65Ii~-~V&I9BFCIJcn(*YL(W&&mbW&`*N z0A(;-g5%2p^8v+xQh*;&4pZn*#9pTsrP zO*J0r-s{#2yWD%^vK8_BCgo53$;XMGukW|>c_$#m1|C^u-I;4xXCd@w%gncmCbC>)>5u+~TdKk38L9EFAmNm%n;_amW8Q z7GC9w${c@SVBckld(U*g{%$hw6efnPW%E@0xO}pp2!qe~NFYDiPbkB-W z1IiYz$hl?q`e9E;W%f95Wr62VrSaE?Z~mgo3u~eeuS{KZ)pb`s+4qtAE3Ww>_VbbT zYfs+wQK@VC{Od+OeRYie>g%@m@6mnFmRTzneEs=jjfXFP{;`a|oWA#|Zwgl&PV@ew z@#FK>Zrr@`iM?m8@9@;OBR@L!mt9G_KX|n2ng4q8{@6Y5em-~mq3XxFd0v0cdHIcr zuimw8;PPt@{%YJ8BRgI5_lNesbNJ2IqEEke-n_)UNq_0R{ep>i{N~5=JMN1AEMxxB z%gUddGw15`+*{u7JLH;weBt`npROtW$>}2xcZ+LSFlF8RJzJj&3@rHjy6uM+t^4R# zf4OStjIOUg`{tV0zSy?7>C1Z?cYJ#F$1i>@X7=uK^0&|ZvBzH%7L5M<{^(EoZ~x_8 zgZz)@-}>`;nfulyJ{;Znqq&z{GS^vs=aXBvHoWw+nZ~WZzWQgccX``W{qWX6%KbMy zHtX2%x%ppS^>Ne(%ZE%`alCk%yW_ldNUu48<~`$XzwzG7AHTS9#qn);{edso?+3gA;Oh`{ z#N)ug;wup&0pkFLfFb~2t6vM)3fKRT|;10kJ zz_WnY00#kI0KNmn;`N0-fRTW40KR6yS0d^GeD#5^JMa~U{eU+BO@LznP5=o255Nn^ z2h0Q%0crtj0hC)_ioYNWL?i;1THL zn)H>N_z~!jk7ZNtRazfQheh~Od4)e@I-o085eT|UE)Ss{Olm2ZI zeh}yum~7V%yaS+PdC zzM@O|F)o-0^b0_GvX=QLPwR3&K^%GH_d|i`?}qfpx(vQAOWLd(J=c+TaSS8Szb5I+ zw2t(cLi$-v(=9dWPc_ZA60P(D{S|H66`kRF2Z6pINt^aYx1^-aF+-0aq-moJ z^omV7U)PsDYH2%}sOMO%Bb}a;=S|%P^nODg59ofHhmKyzvt8RY{qK;b{~-pt( z8G5cI{h79NIszkoK-Y_2AW46y+l`J_NSpn_cfCn>(&L6sYe^r}{m9qTX$u@@(@CTt5IsV3Y6wNt^fzCmgexn}4 z^fW~JXSz?M?=a9#tv|hPGTm%*`W_~2&OLNQN7|gH>6M7|3%U>KU7fUPOZ1(~Hsbg; zZHHcrta<1GiL|K`{UDS6!igUQIyoV2)`1@8N#CN=>Dr6*Uv(Yn2Y|F`7ku5Bv^n1B z2F%LOk0p>c*AO~vC(XH>fzIhjn|8_ftVz>vD+7JVk~SS@80cfx*}9(4#}#?ZxtPA0 zNSkv!-G7nhn#n+)45Vqd4D^aj+8pzA&P>|0b$Z<+ZO(6WFG|{+XX#C{Et|hRtgY#; znfX@2E*a=~o3uH%(1{*tb1tImNYb^s?dj2wb+?WQ`n_hHbv~g7Eyh{r4|=htEOS1f z`)JapE_9;FI)u;d^t44jbIqXBDbnUV#C{@e?oa52fwVcM=m(gz*?;t@N7@_{{Hg(I z)83>D642)UfxgC=Zq9RbsY%*wlYV+knEMa&e3v{7dZ@}gJm2N{p2@>0Ij0RC=41P@ zJva=or461BbK8R^kzevdcL^>VsIvUxABVjMFaUsROK-|BXZboj%k|Gv zHP6wdUr+CJWA$zQohNSNIULX3X5`=6_`;<{cRcp5Bmem4of~6#p6S@UF=kHM_}XuV zE#A)axJwo`3_p2A%Bml~^v}+(Z-+it@5wuYJcAzH7_+Qlal*(`Hzx7CcQwk7IzF!B z^z1=zJKjs_dGv2tFFrJ8-8;iib|_!Ge4ZHiune#fa0g%q;Ay}C!25t^zzKlcfqgh28NlyfOa<_>BlUm{ zfUSV-fIWbh0B-}10=@w_(AoG@mly=d2Jp3addn&Y@YQ;{U%Lmu?+rW);5l9s;241C zc+%M$`qK$LF4gNaeJ0Wt2g1%7=(m*g;~2LL{B#Cso)R106h(FU~^>>i~=z%`fM|GM$$$ zG07th9EdKiNayRa=-!d^99=h#QPT9U!Z1PCb(^j$&j*?QFfapM8j{|o`TOg6nCEj0 z^!U&8`!&D02fAFhEghsX{bmkC1b*Lz^by@wZ{e7927rOz4 zpZcWl)^4?KD=~5I=^&Jd3nm^hrPVjenKdQs=08#3m(Q`gsA6NVvfHb9G#V~6VoJfESjW90gQWEoF0f;uve-NI^8 z9IMYIo-){dG;cN`nn$h;gMeYWVkm&+jRctMLl%y60b>DqfboFy0QrCkfQf*~fN6l~ zfI`59fSG`c0hHszd|bEeo$LOQck8b7y%Q?ee|XW>6|WzAHL9rLowACL#vYwH{mMI+ zZ)&_5bMxo-Pkj5SYsWhh8*j>;bMYTn|7_t66{`+>^31`z|N7?f5kEd}!=D0;nW>Yb z7QJ^{<15$R?3%r7W6ad23U7P8lc(c%hjY6fcuu|gaD&D#}d{Kx3GuY2~g z7Z;t{oA}*rHS@&B_47o<=ey$P%^rLAFGu|N7cc#5*DqHcyW_T;^5wH;Og$BQ<<-^x zy(b#4o3-NVRX@Lb>(27J`<^a?%`63654aaVk5w-M-UWOL_zn;c`x*uq2e=4O0%!ni z1l$dH4DdXFYt1JBH|7g`r%{Xs&~f4%z(N2$FWw0F8DJma_kd3TrvM#cY#snVNJ!`0 z^8l5AH2{9e>mdLgdc6wx6W}X=1IF1MFdUEvmB9PA%GkJeG2;kb%3h@cK~()crBD;j$dIJ z1dLFH=3o@PxFVK;UWpjR?>6bdNyp@jqNj4r#m{&#syURAzMvUJXWu#_J*P8@S2lDM z8;?=+ey*eFkepHUIYivpsXD9u0@RLnzn+gi*Ey2kuyo#uL5w-{Ys>qg)gfS8e= zw9#DKwBl|E&{6b1MXtjk@%(5Vqxelb&Bad`vGre8jlfR`=@fdOBy+MS7)3{4jN(_s zG#58$%>RsPu?b2HA_N_ZlbOD-G&4O5GK$Wgb&csAj8XiMkLIE;Oh$F_1f%GxpHcFY z62J&N%V8AVH)>fIYA*V=)UxOXkzDj2s-q6-rs9|ObkyhIAQwMWH3%5tZB&F&^gpS& z=w_c$bds-2q|<*!@#A|sBb`+;itg_;7hOp+ie4$TEa@l_QFJk(E;<5d6dkJRj0xJ>4}#WFxtfcfJayFbx>f1*TWdd8 zXQZ5M536-9r8IAq`l3#bIYyQO9Es|Jjst2Ql*e%BavYe*LTmoloz z6BN%6O)`ofVbLY>V+5cCebXa~F6ea%ebAGcPTO?BhqQV;4>2{?1=H`Nj^ZZ|nepKe z*OxkqzEcMw34xzVW5HWh#$KV;yI6~)lYhxwB!Iq)@ALtH({Sv`Xh$H^T;nTBTdv zUV^1nI?t{d-dCtqdKs*Wp;4h$=}qTIzXC&(L93~IL&fp8NT(O6s8;g#>vVp25}{Rk zGR6eMT!mVt^R6jFr26p=DZ>{EwaRbxEe)1d>DDiWw3WU+MhW&P)GGf=Iz5top3v!o zBILJzHw!GSAIU#9DlKB%3xbDOW2n6vn9kPNzeIMO~g^2_8^#J zTuh4FW}6z@H{qwYd+qjnVv|6{i9d1PljE-tc(=-OM$ZQ@{J0`BOSHW*HmOKvF`HfL zMcZDc^A+J(hDmWV&3yK$u}L#^NvsF;nX379yRjUv$zK?ofB_aF0l%yO=XP4bxKkiQW8yEVU_Z(8u9kQV%n;9slx znO_Er{5fI#kAi>Z_uxMWevjtY^HU3bW`@a+#ppeDTGe+_8~Q{SnHeU>;C z{g5z8n+Wtzn4}Ga{FUI}tob*Del-yiH|@_z?@q51XvNB)pLWi9m?iP87QcdC8b!_T#2o8~V+CM z-30zx&9CP>>JzkUdw$5UssFR!&)58x`fd)j59$lbY@aW{pP>0?YIPt#I6jw|qZ4V^ z{);{i*#EbxzUDju{sah=>g7w3A3XWUWk84|z z<{#9Ce2nuJ^66mJ`#t!-1HaJxEKdeYd&7Q%`fxsEu&tO`C}+y3yMJ@)%$Wqvm)VH- z0QMk)L9b=P{h*Gp&YQ+en|0!3J6r)+rdhwhF@t+yFmGs{vcDa)-)FF{IpkgtU+MZb zt|Pu?gYVhMEu1YydK*m%dKdMVWEH37grx@aD*sersb=1YLaAWTol#ikplCW@3QLoZ<*F)HR+Rc9 zrs6$Sx?O0ai9!c^kr+a6ptjMNp$5Ry+>s<8>0DXyAh^zr3xiy@WH9ct+Z=XhhiGG; zaok~Zb~k?4xX)oYI~Y&c*MW8$udiC?GXAt`pRsPOHcK92(I~pf#>s zJGqQM2=_Q=$FC&qNN~ovj9)qSNwHtXBCj*n_;mo>cdRUMrW(zT0!JrjFPHK1N~U!% zo^q%(N36?uq!W(ct#*%d8M`~JgF>B*t#t*m+Sjixa88LvL7iO%&cXurhs(IySck;< zF~+xz1&%JL>hFww&Xj0(y>ozToiih*z=4~jF5}dSea>#o>r}Cbd&=3#j7R}nBH8|G z+vjv5))li(<-2zEK4*VMxW_t^W2QU%<5IV4AH=(2ra91CuSTzPbaQr%Hm+adKI-U< zzW!&2eJ*291AcxV4I6o~!9EBEZ)?$wX#6ME97krTY5WRp%O?GUZ68KMdbDxahISoaBvKCGTv`Qjf|((pyJPBBtY};L;W_UG_F(C?SQ5=HreEulY_fun?R^AzUi_L z=G{5kXsU!ky9!{jyXrMUPbg;RNHy6Qz9%$sC$c8aQQ-^NGsU`b3N{s#8 zNp~`yFGv0UxElI&qXix7vCi3Pjmx-YA*C6AC5ibIB)HjDHdZV;#@GZU*pcfiIZTaA zdxp)?)0qWZpxBGr=!%|*i$&X>6S9`wT*g*R%*Gd(s6#a#V7$u74AzH) z0tnw~gDvip1T7OXdZH@zTGT&RQ>8eJmRHg9xKU<2j?vPGEp@#e78vbJFg9UC^~GTL z6y4n03D)&1jys%Sy|&9frz<*U11BHj@0FP8qmOf<#}vb92sV1n>U}ZBDQKXg_PJu@ z1cX$}A?K@o_E>&-aZ@brg5fLL8-S4^@u_y4!;E?#I0gCNRydE&{Bg&26rKCyZpC62V9J{Vj7x;0Jir5h`vCWcoE{42@hKb+=r1&GRygmd#R`ALf~bE_@O1F;f+Ft6 z6!K0maNaTC*@)*kEH0)O^2sFNylud^5jScXFiurQ)dJ)8z^Fn^PXfl}>`@-zIl#@> zJK=EDQDAoY9$=i?j@k{3E8&HYDx9|g_)^64ngvdGN0kHPc28lM!g=4JFqr13-M}!Z zQJaAA#K5SHz%Yrz4GQOZfYF7cc-;w2I%*U4ZK&F)jld99xIy7Oo&#Qj4e?xs=kxrV zdSVPnKIllC$B(Aqd^3&&aWmvj0Dc2FANXltJlPOOz3`Mn+z#Mzz;^(r0Z#=U3+x5X z17@S81Mh}>#@_*qCne&FfGK|}FrKE1^8#l9!=^b7<2)Mo0LHzSxZy)(y<97Y$bN7Y zX`HX|K#k)xUOZUw?H;7?5{)m_c!b8CHU4^_;ya-6;~KBgxIp92pcty;dPL)|VVtC2 z)%Y=uZ`Qa$<0%@~!g$F)U1R;UlIyQ9TE@St@$(u#s`2d_uh94kjdL|#jt*u1$r|_9 z_!CSXQm)1iX+4ITH~K;yhLM{#w*Y%%=crBM``>r1_$Hs&^SZm zt{Q&{gJb%gm~@E?H6E(5Q{zK00;WH&@y|5AR^w`o<262r!A1TV8b@pVTMRD7uhaN^ zjsJzg#`r&I{G`SKjW5#pT?|6<6=*zAWn#vYAju+_Vd`=DnkL3P z9OuzAF`7D#>jwFWQ$g?7G%?omxXqd-#uN}&q-kRGahzAv#26xRLes=pSK{74e@K0S zQDodUO%uZu<7zccj3FJDuW4e;t#JvOCdOPE*M!EUJYvqPoX1HMV`$>0g`$Zu6ys)U zni!@W=g~AVhF)AV`iuFAv2TidTGPZ>|Kc`kn)m|HGc`@juEI1W^Akg4+`mw7U{?VP z$AKA+QJ95(lj-1n7LCBbr@feN-cS33rZ=GwhW}#cA$^Y`#eBD-^L743RG#vYkHJIv zXmIl*YJ9kb>GzNaVGSDt$J>#QVT_i)U#Azbv&aw3U}Iz9xEaRDK)sm0A95J}j`@n| z+$1mz)#*h#eV5jc_aGQDF+VXs?S|p!I3{i0Z?)@m^Zs(8PH%E4{;z?_Z{A=2K-cFb zU7t&J`|Z~9Kjol;em%5)@6vcd7XdSHUqyN5{p6WUM;*GN-VBp;{c1ITwwAY1(_iZP zn)hR0VS7QxnHUrdeB*)TZPWZO>hjF{uan4+IuvRCT`V6wPiua@O~UjtoqnIz=MA0C zw|k+#!@S?zlj+cDyw;y@`?7xK{oq@uKhho0i{T}fkG?TKzIPwn-$HlP{7D$p4E0P$ z{_iwBll23g!wnfis+RYtw$CrLz3SVC^8AMSnD=*iAD1*S!wBX_-oSjlwoFVb`k>ks-VO(!uO`ZeqJD%JHd>5p`M{-M(!*8Sy$9EQKMJmlv%V5lLD z{yCu2U(w~gsLT5`<)i#Wt?v_*4|;*7`2?`lKDv;$^#6^_4_jV2L6sLp8am}~Ry5z9 zjYHdewknzrRwbeR#sL_(?1{Nt-FH4abxgS=lOkH9j%46h1n9 zxZdBcj7mg^eXevR7r{*{T{EZSwnRFecf!L`j&IB)^)(x&gvvXML!f}qbg~m-Z|yJ2 z^sAbhhVLkqRpOf~{IrzLac=jSscGs%Bg(sNsGzgz)zVcF`ck?!W=}?Nl4JTd*1g@f zZ|t0q*Jo&hZ*sv@ltMqqt88X{-Ez}I96VU!TL=rv=jPPRyR3N5gk`?Wg%wqm6%?<% zb+>Y1Xt9`d?E!Z|aYd!Stdid&3iqZJYPqus(w1wQUi&g>yDKfOrdLX3v?^zW)|T$3 zWmC@${HJ|?1$(fyCDO3<_i`dArnGLaQ^)ptkEY%IAPZ^t=Q32KF__w%rv5V?0d*Pw zvwmHJ6=`FJ{Li=qmDBnEoKH}-TC}0P)eq*m-RqvM9W0(Ef3O!zsQG`zHNC9r|Bz=s z_QwCNYd%%G|1-Yeq&ojIz8xVt==(c-@%aya_A0m@hL_Rm>lJ62Hv;VXB#FpGF^5b;%6{TuF&>rWQ z=1%zEbT=tgYfpJCceww7QqS%GGgw7_Va3vwXW5B|X~~S0^;NYwq7qKb@f=%mMpki2 z+8A$IPHOQOd?P!pBx6ikX?E$DlAO$vlAQF>_#pEI6DPvsV5z^h-X}lfimybsH~05o zg-|G#-EPtNY;?P|Xg@1Bp~aYXi^i9%+pR_WS-}Y{vf3>gAJ=ZT7VT#RC$z|Hw`hFt zyWLu}pB0?YBBR}+@d@&FYtepIa6*gpc8kVW(c7&>`&q#WEz(+zNPLjJy`_B*R(xo_ n-BP7usqN=)KWpmuV3k^U+pPt@FW>G8wx2b%{j6Sf3GM#@J!2J2 literal 0 HcmV?d00001 From 94408d89fc8b9e3e3d7019741eb2eb49e479eaff Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:54:45 -0400 Subject: [PATCH 07/10] feat(store): record which key seals an organization's credentials (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The foundation for a per-organization envelope key. No behaviour reads this yet; the schema lands first because its semantics are the irreversible part. Default is still no row: an organization without one is sealed under the deployment's own key, which is the "the customer does not care" case and stays the default. A row is an override. Four decisions are in the schema rather than in code that could forget them: - key_ref is OPAQUE. It is whatever the bound key service calls a key, handed over unparsed. Parsing it would put one vendor's grammar in the database, which is the mistake the key-service seam exists to avoid (codefly-dev/cli#924). - customer_held marks a key this deployment does not control. The re-seal sweep must refuse such an organization: re-sealing its credentials under a key we hold would undo the only property a customer-held key provides, while reporting success. - revoked_at is recorded rather than inferred, because the two indistinguishable failures have opposite meanings. A destroyed key is just a key service saying "cannot decrypt", which this host already classifies as a credential the user should re-enter — so without this column, crypto-shredding would tell every affected customer to reconnect their sources, for data destroyed on their own instruction. - A revocation is terminal and key_ref is immutable, enforced by a trigger below every writer. Un-revoking would assert that credentials under a destroyed key are readable again; repointing the row would leave it naming a key that sealed none of the data, since every envelope records the key that sealed it. A tenant reads its own binding and writes none — one that could write a binding could point its credentials at another organization's key. SELECT also goes to app_job_worker and app_webhook_worker, because the delivery paths open sealed credentials outside any tenant transaction and so must resolve the key too; webhook_subscriptions grants those two for the same reason, and a binding readable by fewer roles than the secret it unlocks fails at delivery rather than at boot. Verified against real Postgres: FORCE RLS, the four SELECT grants, a tenant refused INSERT/UPDATE/DELETE, and both trigger refusals. Co-Authored-By: Claude Opus 5 (1M context) --- .../pkg/infra/org_key_bindings_schema_test.go | 84 +++++++++++++++++ .../migrations/20_org_key_bindings.down.sql | 10 ++ .../migrations/20_org_key_bindings.up.sql | 93 +++++++++++++++++++ 3 files changed, 187 insertions(+) create mode 100644 module/services/accounts/code/pkg/infra/org_key_bindings_schema_test.go create mode 100644 module/services/store/migrations/20_org_key_bindings.down.sql create mode 100644 module/services/store/migrations/20_org_key_bindings.up.sql diff --git a/module/services/accounts/code/pkg/infra/org_key_bindings_schema_test.go b/module/services/accounts/code/pkg/infra/org_key_bindings_schema_test.go new file mode 100644 index 000000000..816105e25 --- /dev/null +++ b/module/services/accounts/code/pkg/infra/org_key_bindings_schema_test.go @@ -0,0 +1,84 @@ +//go:build !pure + +package infra_test + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + "accounts/pkg/infra/storetx" +) + +// Migration 20 has to be present and shaped as the resolver expects before any +// of it is wired, because a missing grant or policy here fails at delivery time +// — when a webhook worker opens a sealed secret outside any tenant transaction — +// rather than at boot. +func TestOrgKeyBindingsSchema(t *testing.T) { + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + tx := storetx.Tx(ctx) + + var forced bool + require.NoError(t, tx.QueryRow(ctx, + `SELECT relforcerowsecurity FROM pg_class WHERE oid = 'public.org_key_bindings'::regclass`).Scan(&forced)) + require.True(t, forced, "a table holding which key seals a tenant's data must force row security") + + // Every role that opens a sealed credential must be able to resolve the + // key that opens it. webhook_subscriptions grants SELECT to the two + // worker roles for the same reason. + for _, role := range []string{"app_tenant", "app_control_plane", "app_job_worker", "app_webhook_worker"} { + var granted bool + require.NoError(t, tx.QueryRow(ctx, + `SELECT has_table_privilege($1, 'public.org_key_bindings', 'SELECT')`, role).Scan(&granted)) + require.True(t, granted, "%s opens sealed credentials, so it must read the key binding", role) + } + + // A tenant may read its own binding and write none: a tenant that could + // write one could point its credentials at another organization's key. + for _, privilege := range []string{"INSERT", "UPDATE", "DELETE"} { + var granted bool + require.NoError(t, tx.QueryRow(ctx, + `SELECT has_table_privilege('app_tenant', 'public.org_key_bindings', $1)`, privilege).Scan(&granted)) + require.False(t, granted, "a tenant must not %s its own key binding", privilege) + } + return nil + })) +} + +// A revocation is terminal and the key a binding names is immutable. Both are +// enforced below every writer rather than remembered by one. +func TestOrgKeyBindingRevocationIsTerminalAndKeyRefImmutable(t *testing.T) { + orgID := seedOrg(t, seedUser(t)) + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + tx := storetx.Tx(ctx) + _, err := tx.Exec(ctx, + `INSERT INTO org_key_bindings (org_id, key_ref, customer_held) VALUES ($1, $2, true)`, + orgID, "platform-provisioned-key-ref") + return err + })) + + // Repointing the binding would leave it describing a key that sealed none of + // the data, because every stored envelope records the key that sealed it. + err := testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, + `UPDATE org_key_bindings SET key_ref = 'a-different-key' WHERE org_id = $1`, orgID) + return err + }) + require.ErrorContains(t, err, "key_ref is immutable") + + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, + `UPDATE org_key_bindings SET revoked_at = NOW(), revoked_reason = 'customer instruction' WHERE org_id = $1`, orgID) + return err + })) + + // Un-revoking would assert that credentials sealed under a destroyed key are + // readable again, which no edit to this row can make true. + err = testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + _, err := storetx.Tx(ctx).Exec(ctx, + `UPDATE org_key_bindings SET revoked_at = NULL, revoked_reason = NULL WHERE org_id = $1`, orgID) + return err + }) + require.ErrorContains(t, err, "revocation is terminal") +} diff --git a/module/services/store/migrations/20_org_key_bindings.down.sql b/module/services/store/migrations/20_org_key_bindings.down.sql new file mode 100644 index 000000000..c6b4262c0 --- /dev/null +++ b/module/services/store/migrations/20_org_key_bindings.down.sql @@ -0,0 +1,10 @@ +-- Dropping the table would silently re-point every organization that had a +-- binding at the deployment's own key, while its credentials stay sealed under +-- the key the binding named — unreadable, with nothing left to say why. +DO $$ BEGIN + IF EXISTS (SELECT 1 FROM public.org_key_bindings) THEN + RAISE EXCEPTION 'cannot remove organization key bindings while any organization is bound to its own key'; + END IF; +END $$; +DROP TABLE public.org_key_bindings; +DROP FUNCTION public.org_key_binding_revocation_is_terminal(); diff --git a/module/services/store/migrations/20_org_key_bindings.up.sql b/module/services/store/migrations/20_org_key_bindings.up.sql new file mode 100644 index 000000000..4fa3cb7b0 --- /dev/null +++ b/module/services/store/migrations/20_org_key_bindings.up.sql @@ -0,0 +1,93 @@ +-- Which key seals an organization's stored credentials (#1013). +-- +-- Default: none. An organization with no row here is sealed under the +-- deployment's own key, which is the "the customer does not care" case and stays +-- the default forever. A row is an OVERRIDE: this organization's credentials are +-- sealed under the key it names instead. +-- +-- key_ref is OPAQUE to this host. It is whatever the key service the deployment +-- binds calls a key, and accounts hands it to that service without parsing it: +-- a Vault transit key name, a cloud KMS resource name, anything a later backend +-- uses. Parsing it here would put one vendor's grammar in the database, which is +-- the mistake the key-service seam exists to avoid (codefly-dev/cli#924). +-- +-- accounts never PROVISIONS a key. The platform creates it and records the +-- binding; accounts reads the binding and refuses an organization whose key it +-- cannot reach. Same contract as the signing key's custody: the cell provisions, +-- this host reads. +CREATE TABLE public.org_key_bindings ( + org_id uuid PRIMARY KEY REFERENCES public.organizations(id) ON DELETE CASCADE, + key_ref text NOT NULL CHECK (length(btrim(key_ref)) BETWEEN 1 AND 512), + -- Whether the key is held by the customer rather than by this deployment. + -- The re-seal sweep REFUSES such an organization: re-sealing its credentials + -- under a key this deployment controls would undo the only property a + -- customer-held key provides, and it would do so while reporting success. + customer_held boolean NOT NULL DEFAULT false, + bound_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP, + -- Set when the key is gone: destroyed by this deployment on request, or + -- revoked by the customer. Every credential sealed under it is unreadable from + -- that moment, which is the point. + -- + -- It is recorded rather than inferred because the two indistinguishable + -- failures have opposite meanings. Without this column a deliberately + -- destroyed key is just a key service answering "cannot decrypt", which this + -- host already classifies as a credential the user should re-enter — so + -- crypto-shredding would tell every affected customer to reconnect their + -- sources, for data that was destroyed on their own instruction. + revoked_at timestamptz, + revoked_reason text CHECK (revoked_reason IS NULL OR length(btrim(revoked_reason)) BETWEEN 1 AND 512), + CHECK ((revoked_at IS NULL) = (revoked_reason IS NULL)) +); +ALTER TABLE public.org_key_bindings ENABLE ROW LEVEL SECURITY; +ALTER TABLE public.org_key_bindings FORCE ROW LEVEL SECURITY; + +-- A tenant READS its own binding and may not write one: which key seals an +-- organization's data is the platform's provisioning, not a tenant-editable +-- setting. A tenant that could write one could point its own credentials at +-- another organization's key. +CREATE POLICY org_key_bindings_tenant ON public.org_key_bindings + FOR SELECT TO app_tenant + USING (org_id = NULLIF(current_setting('app.current_org_id', true), '')::uuid); +GRANT SELECT ON public.org_key_bindings TO app_tenant; + +CREATE POLICY app_control_plane_explicit_rows ON public.org_key_bindings TO app_control_plane + USING (CURRENT_USER = 'app_control_plane'::name) + WITH CHECK (CURRENT_USER = 'app_control_plane'::name); +GRANT SELECT, INSERT, DELETE, UPDATE ON public.org_key_bindings TO app_control_plane; + +-- The delivery paths open a sealed credential outside any tenant transaction, so +-- they have to resolve the organization's key too. webhook_subscriptions grants +-- SELECT to both of these for exactly the same reason; a binding readable by +-- fewer roles than the secret it unlocks fails at delivery time, not at boot. +CREATE POLICY app_job_worker_explicit_rows ON public.org_key_bindings TO app_job_worker + USING (CURRENT_USER = 'app_job_worker'::name) + WITH CHECK (CURRENT_USER = 'app_job_worker'::name); +GRANT SELECT ON public.org_key_bindings TO app_job_worker; + +CREATE POLICY app_webhook_worker_explicit_rows ON public.org_key_bindings TO app_webhook_worker + USING (CURRENT_USER = 'app_webhook_worker'::name) + WITH CHECK (CURRENT_USER = 'app_webhook_worker'::name); +GRANT SELECT ON public.org_key_bindings TO app_webhook_worker; + +-- A revocation is terminal. Un-revoking would assert that credentials sealed +-- under a destroyed key are readable again, which no edit to this row can make +-- true, and it would let a holder of the application login quietly undo a +-- customer's instruction to destroy their data. +CREATE FUNCTION public.org_key_binding_revocation_is_terminal() RETURNS trigger LANGUAGE plpgsql + SET search_path = pg_catalog, public, pg_temp AS $$ +BEGIN + IF OLD.revoked_at IS NOT NULL AND NEW.revoked_at IS DISTINCT FROM OLD.revoked_at THEN + RAISE EXCEPTION 'org key binding revocation is terminal'; + END IF; + -- The key a binding names may not change either: every stored envelope records + -- the key that sealed it, so repointing the row would not re-seal anything and + -- would leave the binding describing a key that sealed none of the data. + IF NEW.key_ref IS DISTINCT FROM OLD.key_ref THEN + RAISE EXCEPTION 'org key binding key_ref is immutable; re-seal under a new binding instead'; + END IF; + RETURN NEW; +END; +$$; +CREATE TRIGGER org_key_binding_revocation_is_terminal BEFORE UPDATE ON public.org_key_bindings + FOR EACH ROW EXECUTE FUNCTION public.org_key_binding_revocation_is_terminal(); +REVOKE ALL ON FUNCTION public.org_key_binding_revocation_is_terminal() FROM PUBLIC; From 9a9c0bd3b9fa144d6f46690e7814a0e6ce6a31d2 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:04:08 -0400 Subject: [PATCH 08/10] feat(accounts): refuse to re-seal an organization whose key we do not control (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The crypto-shredding invariant, which is the whole point of a per-organization key. Without it the sweep would re-seal a customer-held organization's credentials under a key this deployment holds — undoing the single property that key exists to provide, while reporting a successful migration. For a revoked key it would attempt a decrypt that cannot succeed, and the datasource failure path turns that into telling the customer to reconnect a source whose data they instructed us to destroy. So the sweep reads org_key_bindings and leaves such an organization alone. Two details that are not incidental: - Protected rows are counted SEPARATELY from Remaining. Remaining means "still to do"; these are never to be done. Counting them together would make a finished cutover read as permanently unfinished, and an operator chasing the number to zero would eventually force it. - The inventory gains an orgColumn, empty where a value is not an organization's. A user's MFA seed and WebAuthn credential belong to a person who may be in many organizations, so "whose key" has no answer for them and they stay on the deployment's own key. The test asserts both halves: the six organization-scoped columns are untouched, the three user-scoped ones still move. Proven behaviourally, not just structurally: with the protected set forced empty, the test fails on the untouched assertion for both a customer-held and a revoked binding. Three hidden gates fired and are satisfied rather than bypassed. The new control-plane call site is in the generated allowlist. org_key_bindings is classified in relationcatalog and in the app_tenant privilege table (read-only to request traffic). And app_webhook_worker's projection-only authority now includes it, because that role reads a subscription's sealed secret and so must resolve the key that opens it — a binding readable by fewer roles than the secret it unlocks fails at delivery rather than at boot. Also removes 1.1MB of stray Rust build output under target/ that a `git add -A` in this branch committed by mistake (no Cargo project lives here), and gitignores it so it cannot recur. Co-Authored-By: Claude Opus 5 (1M context) --- .gitignore | 5 + .../pkg/infra/postgres_keyservice_reseal.go | 91 ++++++++++++-- .../infra/postgres_keyservice_reseal_test.go | 111 ++++++++++++++++++ .../pkg/infra/postgres_role_hardening_test.go | 10 ++ .../testdata/control_plane_call_sites.txt | 1 + .../code/pkg/relationcatalog/catalog.go | 6 +- target/.rustc_info.json | 1 - target/CACHEDIR.TAG | 3 - target/debug/.cargo-artifact-lock | 0 target/debug/.cargo-build-lock | 0 target/debug/.cargo-lock | 0 .../dep-test-bin-demo-svc | Bin 31 -> 0 bytes .../invoked.timestamp | 1 - .../test-bin-demo-svc | 1 - .../test-bin-demo-svc.json | 1 - target/debug/deps/demo_svc-d29fe6cd5b78f23a | Bin 1048888 -> 0 bytes target/debug/deps/demo_svc-d29fe6cd5b78f23a.d | 5 - ...23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o | Bin 52736 -> 0 bytes 18 files changed, 213 insertions(+), 23 deletions(-) delete mode 100644 target/.rustc_info.json delete mode 100644 target/CACHEDIR.TAG delete mode 100644 target/debug/.cargo-artifact-lock delete mode 100644 target/debug/.cargo-build-lock delete mode 100644 target/debug/.cargo-lock delete mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc delete mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp delete mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc delete mode 100644 target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json delete mode 100755 target/debug/deps/demo_svc-d29fe6cd5b78f23a delete mode 100644 target/debug/deps/demo_svc-d29fe6cd5b78f23a.d delete mode 100644 target/debug/deps/demo_svc-d29fe6cd5b78f23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o diff --git a/.gitignore b/.gitignore index f49d97580..ab0e56701 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,8 @@ module/services/*/nix/ go.work* # Built agent binary (rebuilt by `codefly agent build`). module-saas-starter + +# Stray Rust build output. No Cargo project lives in this repository; a +# `target/` here is a scratch build some tool left behind, and 1.1MB of it was +# committed once by a `git add -A` (removed in the commit that added this line). +/target/ diff --git a/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go index 7e895b3b4..f34605fdb 100644 --- a/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go +++ b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal.go @@ -31,6 +31,14 @@ type ResealOutcome struct { // Remaining counts rows per backend tag that the selected backend did not // seal. An empty map is what makes withdrawing the previous backend safe. Remaining map[string]int + // Protected counts rows the sweep deliberately did not touch because the + // organization's key is not this deployment's to re-seal with. + // + // They are NOT Remaining: remaining means "still to do", and these are never + // to be done. Counting them together would make a finished cutover look + // unfinished forever, and an operator chasing the number to zero would + // eventually be tempted to force it. + Protected int } // enveloped is one column holding sealed credentials, and how to rebuild the @@ -46,6 +54,12 @@ type enveloped struct { // idColumn identifies a row for the compare-and-swap write. Not every table // has an `id`: webauthn_credentials is keyed by the device it belongs to. idColumn string + // orgColumn names the organization a row's credential belongs to, where it + // has one. Empty means the value is not an organization's: a user's MFA seed + // and WebAuthn credential belong to a person who may be in many + // organizations, so "whose key" has no answer for them and they stay on the + // deployment's own key. + orgColumn string // keyColumn supplies the purpose's binding. Empty where the purpose is a // constant. keyColumn string @@ -80,31 +94,31 @@ var envelopedColumns = []enveloped{ purpose: func(string) string { return business.WebAuthnSessionPurpose }, }, { - table: "webhook_subscriptions", column: "secret_encrypted", + table: "webhook_subscriptions", column: "secret_encrypted", orgColumn: "org_id", keyColumn: "id", purpose: business.WebhookSecretPurpose, }, { // The rotation overlap's outgoing secret, under the same purpose as the // current one: both are bound to the subscription, not to the slot. - table: "webhook_subscriptions", column: "previous_secret_encrypted", + table: "webhook_subscriptions", column: "previous_secret_encrypted", orgColumn: "org_id", keyColumn: "id", purpose: business.WebhookSecretPurpose, }, { - table: "datasource_sources", column: "credential_secret_ref", + table: "datasource_sources", column: "credential_secret_ref", orgColumn: "org_id", keyColumn: "id", purpose: business.DatasourceConnectorSecretPurpose, }, { - table: "datasource_sources", column: "webhook_secret_ref", + table: "datasource_sources", column: "webhook_secret_ref", orgColumn: "org_id", keyColumn: "id", purpose: business.DatasourceWebhookSecretPurpose, }, { // Bound to the org, not the row: one provider per org, and org_id is the // table's stable identity. - table: "org_identity_providers", column: "client_secret_ref", + table: "org_identity_providers", column: "client_secret_ref", orgColumn: "org_id", keyColumn: "org_id", purpose: business.OrgIdentityProviderSecretPurpose, }, { - table: "connector_credentials", column: "secret_encrypted", + table: "connector_credentials", column: "secret_encrypted", orgColumn: "org_id", keyColumn: "source_id", purpose: business.ConnectorSecretPurpose, }, } @@ -138,7 +152,7 @@ func (s *PostgresStore) ResealEnvelopes(ctx context.Context, cipher *keyservice. } type envelopedRow struct { - id, key, stored string + id, key, stored, org string } func (s *PostgresStore) resealColumn( @@ -152,6 +166,10 @@ func (s *PostgresStore) resealColumn( if column.keyColumn != "" { keyExpression = column.keyColumn + "::text" } + orgExpression := "''" + if column.orgColumn != "" { + orgExpression = column.orgColumn + "::text" + } idColumn := column.idColumn if idColumn == "" { idColumn = "id" @@ -171,15 +189,15 @@ func (s *PostgresStore) resealColumn( if err := s.WithControlPlane(ctx, func(ctx context.Context) error { //nolint:gosec // identifiers come from envelopedColumns, never from a caller result, err := s.getQueryExecutor(ctx).Query(ctx, fmt.Sprintf( - `SELECT %s::text, %s, %s FROM %s WHERE %s`, - idColumn, keyExpression, column.column, column.table, where)) + `SELECT %s::text, %s, %s, %s FROM %s WHERE %s`, + idColumn, keyExpression, orgExpression, column.column, column.table, where)) if err != nil { return err } defer result.Close() for result.Next() { var row envelopedRow - if err := result.Scan(&row.id, &row.key, &row.stored); err != nil { + if err := result.Scan(&row.id, &row.key, &row.org, &row.stored); err != nil { return err } rows = append(rows, row) @@ -189,6 +207,11 @@ func (s *PostgresStore) resealColumn( return outcome, err } + protectedOrgs, err := s.organizationsWithForeignKeys(ctx) + if err != nil { + return outcome, err + } + for _, row := range rows { // Pre-envelope plaintext belongs to the legacy migrations, which run // before this and own the base32 and empty-secret cases. Re-sealing one @@ -196,6 +219,19 @@ func (s *PostgresStore) resealColumn( if !keyservice.IsEnvelopeFraming(row.stored) { continue } + // The organization's key is not this deployment's to re-seal with. + // + // For a customer-held key, re-sealing under a key we control would undo + // the single property that key exists to provide, and would do it while + // reporting a successful migration. For a revoked one there is nothing + // to re-seal: the credential is unreadable by design, and attempting it + // would surface as "this credential cannot be decrypted" — which the + // datasource failure path turns into telling the customer to reconnect + // a source whose data they instructed us to destroy. + if row.org != "" && protectedOrgs[row.org] { + outcome.Protected++ + continue + } purpose := column.purpose(row.key) resealed, changed, err := cipher.Reseal(ctx, purpose, row.stored) if err != nil { @@ -232,6 +268,37 @@ func (s *PostgresStore) resealColumn( return outcome, nil } +// organizationsWithForeignKeys is every organization whose envelope key this +// deployment may not re-seal with: one that holds its own key, and one whose key +// is gone. +// +// Read once per column rather than per row, and under the control plane for the +// same reason the sweep itself is: the question spans every tenant. +func (s *PostgresStore) organizationsWithForeignKeys(ctx context.Context) (map[string]bool, error) { + protected := map[string]bool{} + if err := s.WithControlPlane(ctx, func(ctx context.Context) error { + rows, err := s.getQueryExecutor(ctx).Query(ctx, ` + SELECT org_id::text + FROM org_key_bindings + WHERE customer_held OR revoked_at IS NOT NULL`) + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + var orgID string + if err := rows.Scan(&orgID); err != nil { + return err + } + protected[orgID] = true + } + return rows.Err() + }); err != nil { + return nil, err + } + return protected, nil +} + // ResealReport renders the outcomes for a log line, newest-first by what is // still outstanding, so the one number an operator needs — is anything still // sealed under the outgoing backend — is not buried in a per-table list. @@ -239,6 +306,10 @@ func ResealReport(outcomes []ResealOutcome) (resealed int, remaining map[string] remaining = map[string]int{} for _, outcome := range outcomes { resealed += outcome.Resealed + if outcome.Protected > 0 { + detail = append(detail, fmt.Sprintf("%s.%s=%d left alone (the organization holds its own key, or revoked it)", + outcome.Table, outcome.Column, outcome.Protected)) + } for tag, count := range outcome.Remaining { remaining[tag] += count detail = append(detail, fmt.Sprintf("%s.%s=%d under %s", outcome.Table, outcome.Column, count, tag)) diff --git a/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go index 1283558e2..b9335af24 100644 --- a/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go +++ b/module/services/accounts/code/pkg/infra/postgres_keyservice_reseal_test.go @@ -140,6 +140,9 @@ func TestResealEnvelopesReportsWhatItCouldNotMove(t *testing.T) { // and the plaintext behind it, so an assertion can prove BOTH survived the move. type sealedRow struct { purpose, plaintext string + // sealed is the stored value as seeded, so an assertion can prove a + // protected row is untouched byte for byte. + sealed string // locate reads the stored value back. locate func(t *testing.T) string } @@ -257,6 +260,13 @@ func seedEveryEnvelopedColumn(t *testing.T, sealer *keyservice.Cipher) map[strin business.ConnectorSecretPurpose(sourceID), `{"token":"ghp"}`, "id", credentialID) require.Len(t, seeded, 9, "every enveloped column must be seeded, or the sweep is only partly exercised") + // Read each stored value back, so a later assertion can prove an untouched + // row is untouched byte for byte without assuming the sealer is + // deterministic. + for key, row := range seeded { + row.sealed = row.locate(t) + seeded[key] = row + } return seeded } @@ -294,3 +304,104 @@ func seedWebAuthnDevice(t *testing.T, userID, credentialEnvelope string) string })) return deviceID } + +// The crypto-shredding invariant, which is the whole point of a per-organization +// key: the sweep must LEAVE ALONE an organization whose key this deployment does +// not control. +// +// Without this the sweep would re-seal a customer-held organization's +// credentials under a key we hold — undoing the single property that key exists +// to provide, and reporting a successful migration while doing it. For a revoked +// key it would attempt a decrypt that cannot succeed, which the datasource +// failure path turns into telling the customer to reconnect a source whose data +// they instructed us to destroy. +func TestResealEnvelopesLeavesAloneAnOrganizationWhoseKeyWeDoNotControl(t *testing.T) { + for name, bind := range map[string]string{ + "the organization holds its own key": `INSERT INTO org_key_bindings (org_id, key_ref, customer_held) + VALUES ($1, 'customer-held-key', true)`, + "the organization revoked its key": `INSERT INTO org_key_bindings (org_id, key_ref, customer_held, revoked_at, revoked_reason) + VALUES ($1, 'destroyed-key', false, NOW(), 'customer instruction')`, + } { + t.Run(name, func(t *testing.T) { + outgoing := reversibleSealer{tag: "outgoing-key-service"} + selected := reversibleSealer{tag: "selected-key-service"} + before, err := keyservice.NewCipher(outgoing, nil) + require.NoError(t, err) + cutover, err := keyservice.NewCipher(selected, outgoing) + require.NoError(t, err) + + seeded := seedEveryEnvelopedColumn(t, before) + + // Bind every organization the fixture created. The fixture seeds one + // org, so this covers each organization-scoped column. + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + rows, err := storetx.Tx(ctx).Query(ctx, `SELECT DISTINCT org_id::text FROM webhook_subscriptions`) + require.NoError(t, err) + var orgs []string + for rows.Next() { + var orgID string + require.NoError(t, rows.Scan(&orgID)) + orgs = append(orgs, orgID) + } + rows.Close() + require.NotEmpty(t, orgs) + for _, orgID := range orgs { + if _, err := storetx.Tx(ctx).Exec(ctx, bind, orgID); err != nil { + return err + } + } + return nil + })) + + outcomes, err := testStore.ResealEnvelopes(testCtx, cutover) + require.NoError(t, err) + + protected := 0 + for _, outcome := range outcomes { + protected += outcome.Protected + } + require.Positive(t, protected, + "the organization's columns must be reported as left alone, not silently skipped") + + // Every organization-scoped value is untouched: still sealed by the + // outgoing backend, byte for byte. + for key, expected := range seeded { + stored := expected.locate(t) + if orgScopedEnvelopedColumn(key) { + require.Equal(t, expected.sealed, stored, + "%s belongs to an organization whose key we do not control and must be untouched", key) + continue + } + // A user's MFA seed and WebAuthn credential are not any one + // organization's, so they move as usual. + require.True(t, strings.HasPrefix(stored, keyservice.EnvelopePrefix(selected.Tag())), + "%s is not organization-scoped and must still be re-sealed", key) + } + + // And the report must not count them as outstanding work: an + // operator chasing Remaining to zero would never finish, and would + // eventually force it. + _, remaining, detail := infra.ResealReport(outcomes) + require.Empty(t, remaining, + "a protected organization is never 'still to do'; detail: %v", detail) + require.Contains(t, strings.Join(detail, " "), "left alone") + }) + } +} + +// orgScopedEnvelopedColumn reports whether a seeded column belongs to an +// organization. Kept beside the assertion rather than derived, so adding an +// organization-scoped column without deciding this fails the test above. +func orgScopedEnvelopedColumn(tableAndColumn string) bool { + switch tableAndColumn { + case "webhook_subscriptions.secret_encrypted", + "webhook_subscriptions.previous_secret_encrypted", + "datasource_sources.credential_secret_ref", + "datasource_sources.webhook_secret_ref", + "org_identity_providers.client_secret_ref", + "connector_credentials.secret_encrypted": + return true + default: + return false + } +} diff --git a/module/services/accounts/code/pkg/infra/postgres_role_hardening_test.go b/module/services/accounts/code/pkg/infra/postgres_role_hardening_test.go index f3aaff9c8..4736a0bf8 100644 --- a/module/services/accounts/code/pkg/infra/postgres_role_hardening_test.go +++ b/module/services/accounts/code/pkg/infra/postgres_role_hardening_test.go @@ -80,6 +80,7 @@ var appTenantRelationPrivileges = map[string]relationPrivileges{ "invitations": {selectRows: true, insertRows: true, updateRows: true}, "membership_integrity_findings": {}, // operator repair evidence; no request-traffic authority at all "org_generic_settings": {selectRows: true, insertRows: true, updateRows: true}, + "org_key_bindings": {selectRows: true}, // platform provisioning; a tenant reads its own binding and writes none "org_identity_providers": {selectRows: true, insertRows: true, updateRows: true}, "org_settings": {selectRows: true, insertRows: true, updateRows: true}, "organization_activations": {selectRows: true, insertRows: true, updateRows: true}, @@ -485,6 +486,15 @@ func TestWebhookProjectionRoleHasProjectionOnlyAuthority(t *testing.T) { expected := map[string]relationPrivileges{ "webhook_subscriptions": {selectRows: true}, "webhook_deliveries": {selectRows: true}, + // The projection reads a subscription's sealed signing secret, so it + // must also resolve which key opens it. A binding readable by fewer + // roles than the secret it unlocks fails at delivery time rather than at + // boot, and this role already reads the secret itself above. + // + // Still read-only, and still only these three relations: the role cannot + // write a binding, so it cannot point a subscription at another + // organization's key. + "org_key_bindings": {selectRows: true}, } require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { tx := storetx.Tx(ctx) diff --git a/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt b/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt index b140a7980..6f84ba01d 100644 --- a/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt +++ b/module/services/accounts/code/pkg/infra/testdata/control_plane_call_sites.txt @@ -150,6 +150,7 @@ pkg/infra/postgres_auth_bootstrap.go: (*PostgresStore).WithAuthLookupTx: withCon pkg/infra/postgres_client_authorization.go: (*PostgresStore).ConsumeClientAuthorizationCode: WithControlPlane pkg/infra/postgres_datasource_sources.go: (*PostgresStore).GetDatasourceSourceByID: WithControlPlane pkg/infra/postgres_installations.go: (*PostgresStore).ResolveInstallationAuthority: WithControlPlane +pkg/infra/postgres_keyservice_reseal.go: (*PostgresStore).organizationsWithForeignKeys: WithControlPlane pkg/infra/postgres_keyservice_reseal.go: (*PostgresStore).resealColumn: WithControlPlane pkg/infra/postgres_keyservice_reseal.go: (*PostgresStore).resealColumn: WithControlPlane pkg/infra/postgres_membership_diagnostic.go: (*PostgresStore).ListMembershipIntegrityFindings: WithControlPlane diff --git a/module/services/accounts/code/pkg/relationcatalog/catalog.go b/module/services/accounts/code/pkg/relationcatalog/catalog.go index 647da7387..420e7c09b 100644 --- a/module/services/accounts/code/pkg/relationcatalog/catalog.go +++ b/module/services/accounts/code/pkg/relationcatalog/catalog.go @@ -158,7 +158,11 @@ var authorities = map[string]Authority{ Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id", Notes: "Operator repair evidence for administrative continuity; request traffic holds no grant, so every read runs under the control-plane role.", }, - "org_generic_settings": {Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id"}, + "org_generic_settings": {Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id"}, + "org_key_bindings": { + Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id", + Notes: "Which key seals this organization's stored credentials. Read-only to request traffic: a tenant that could write one could point its credentials at another organization's key, so the binding is platform provisioning. The delivery roles also read it, because they open sealed credentials outside any tenant transaction.", + }, "org_identity_providers": {Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id"}, "org_settings": {Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id"}, "organization_activations": {Scope: ScopeTenant, PolicyShape: ShapeDirect, ScopeColumn: "org_id"}, diff --git a/target/.rustc_info.json b/target/.rustc_info.json deleted file mode 100644 index e60d3f7e6..000000000 --- a/target/.rustc_info.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc_fingerprint":13560138388994086388,"outputs":{"9966638224964292233":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/antoine/.rustup/toolchains/1.99.0-aarch64-apple-darwin\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"aes\"\ntarget_feature=\"crc\"\ntarget_feature=\"dit\"\ntarget_feature=\"dotprod\"\ntarget_feature=\"dpb\"\ntarget_feature=\"dpb2\"\ntarget_feature=\"fcma\"\ntarget_feature=\"fhm\"\ntarget_feature=\"flagm\"\ntarget_feature=\"fp16\"\ntarget_feature=\"frintts\"\ntarget_feature=\"jsconv\"\ntarget_feature=\"lor\"\ntarget_feature=\"lse\"\ntarget_feature=\"neon\"\ntarget_feature=\"paca\"\ntarget_feature=\"pacg\"\ntarget_feature=\"pan\"\ntarget_feature=\"pmuv3\"\ntarget_feature=\"ras\"\ntarget_feature=\"rcpc\"\ntarget_feature=\"rcpc2\"\ntarget_feature=\"rdm\"\ntarget_feature=\"sb\"\ntarget_feature=\"sha2\"\ntarget_feature=\"sha3\"\ntarget_feature=\"ssbs\"\ntarget_feature=\"vh\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_primitive_alignment=\"128\"\ntarget_has_atomic_primitive_alignment=\"16\"\ntarget_has_atomic_primitive_alignment=\"32\"\ntarget_has_atomic_primitive_alignment=\"64\"\ntarget_has_atomic_primitive_alignment=\"8\"\ntarget_has_atomic_primitive_alignment=\"ptr\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""},"10622334480967957264":{"success":true,"status":"","code":0,"stdout":"rustc 1.99.0 (b940084d7 2026-09-28)\nbinary: rustc\ncommit-hash: b940084d7eb6a299eb4bfeb8e34901bc051e7ac4\ncommit-date: 2026-09-28\nhost: aarch64-apple-darwin\nrelease: 1.99.0\nLLVM version: 23.1.1\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/target/CACHEDIR.TAG b/target/CACHEDIR.TAG deleted file mode 100644 index 20d7c319c..000000000 --- a/target/CACHEDIR.TAG +++ /dev/null @@ -1,3 +0,0 @@ -Signature: 8a477f597d28d172789f06886806bc55 -# This file is a cache directory tag created by cargo. -# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/target/debug/.cargo-artifact-lock b/target/debug/.cargo-artifact-lock deleted file mode 100644 index e69de29bb..000000000 diff --git a/target/debug/.cargo-build-lock b/target/debug/.cargo-build-lock deleted file mode 100644 index e69de29bb..000000000 diff --git a/target/debug/.cargo-lock b/target/debug/.cargo-lock deleted file mode 100644 index e69de29bb..000000000 diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc deleted file mode 100644 index 5c54f74a99114dbe9324f717bdccb4490efa0e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 hcmZQ%U|{&q$Ot4ExPiF1C|N%@F*8rEs2C)~002r{1w8-& diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp deleted file mode 100644 index e00328da5..000000000 --- a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc deleted file mode 100644 index 6dd253afb..000000000 --- a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc +++ /dev/null @@ -1 +0,0 @@ -1a9a993f72d99f75 \ No newline at end of file diff --git a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json b/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json deleted file mode 100644 index 6d018c830..000000000 --- a/target/debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/test-bin-demo-svc.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":17356518491003051113,"features":"[]","declared_features":"[]","target":16148229898596868819,"profile":3980689809636898329,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/demo-svc-d29fe6cd5b78f23a/dep-test-bin-demo-svc","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/deps/demo_svc-d29fe6cd5b78f23a b/target/debug/deps/demo_svc-d29fe6cd5b78f23a deleted file mode 100755 index 0f12807bb07d2b21d23f8c225e016331fc88e184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048888 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%0Ax8ixe6{zHt&iH5kTLJ7MN`7XAqA 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%0DxSetq2__PWopHMV? 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.cp}y)f-_<2EzBhaU8Ek}Vz= zxbpLh428?A&NjEwJlg%}-2Ci5gS!1g0+v>2x6A+ASJQT}-Oik>(&o{nYgu>v4Fl&~ zn)@MmLT&5yL^oH?xyFR|r-x3$$$fJh&Hs9G<%BlZ7t|ZJY{C*JejC+>^_wT{dD1@i zqLB^1=BWddE4+VA_;pO(JaSf@H~TC3+4?kZZE>T)=d4%LJky8Fo1W+0XLIi-b}N#q z*ZchFtfkaB=vzeo)Q>J=*D5aq=FAfB%N{s)ZS=F?UX5H6c;6DfxjpYzb;XzO=a;>x zC!6hY(QM+XS6^0`8wxlJ%+K@@PS|f8Y#(lHxXt=*YUr3Qk)U#nFq*5GV% zqic0uHTle!J2!3Aj31L0XSZkg_6M`hg$*<3~67I~dID2}=fYYlN zHaPzFdc7f{ujva%1YVSI&HG2??)TnW(fyNyiOu(#Est3QoX)vyR@2{a?25FSd6oKi z8}MM&%LbI>v<(_4I!y}7ExU}07EEi@ks9`$R z=irBm0mh28H=LzI^PDFKZBNVV`7q^zY22l_6SH5$r7b(Ld7Zt(<~NS}Y$vbI>eaT9 zY1ogeb5?!tHsnASFY`s` zSJW~2JYw9qIQY--H><2iY$w#VB&zxPzSvRmtnu;oqmB^=7MY_ulx zsbhnjcdfQ3WgeS@I_({udE!<=?)N8`8$EgMxqsTNPLtQS+^su08gGBwY~g`pt8yb3mUR zQ5RX=E_qh0@FskxuwLjLUWeheYJQ7(6MFmdwx`<+GKV>>+qALS%!b=mE@SQ9dmuUZ zS@?t+4^kbQHE3^?(;cS}M9aRk`}%@W+F@zt0pdu438hMEH;;g6%J7?5dh7!_4hJKjm$AR3;s+zh+;9mbW__E>K0Atp5=;Z&%Zn%~NIy!$d5(NsIA| zc5ewzl{lX4X<)PA+mV-{fget*n;CCz5&vVd>FK(nIy*NloGp>3bgg=PaD0Qqrz>SP z=XJ2!QA5>#RR{lr7P61V+q+)tfBRUYueU1i%1mu%b^Cgk!5crg&${LJ{B`g*YuhGv zp_YR;PTBhT`SgnY*KB$#xJ3#w#jzY}L$_Q)@=*w9MydkysyPGwu*~Pd$+p6Ep zNZ+8htk94=dH#euf?9L#KfJs=x?iP-xlew)%&I*)?S6iS<-8*-`v)D4OE_dDnDX)BRxI1 zqWi$gKjU`9#ZJ6^Fy3KGw>4$`{Ilq>GWpJy`kj+Ar={#$Vzl|d-h+*9N52!tI@W3O z*N90;qi@b@d&nra?Z|UBvo4v9SuAUmvg2;=$9J}Hs}L4HgN7=CC&+VZjX&mU`c6F{ zLsmJ@%d*nPmgh!Yt`uk+sd(r!Jay8z=F3J)>Tt&0$TChyK0l~&{E@2uG2>n>ZM?Qq z*OjNP&D&~FHTLEbgMMusP5Z7D?rr&C`knsltg!=)R!7(eg}V3LVVssKn0Vvb!DqME z?`u$HFLB)Ljq-0|oGioZ)sK&@J*11;9yZ^nJl(0&!x{eLYX|teB`pl#Kzf9GCS7jcZt)6yhz+q@o>vY zwVmfzI{&gh@4JQAd*+Dv#;e*-sx)_S$9Gdl&XsI;I$6{I+DMDeK5KvQdYg+XnmNWT zyL+zO3-)jneI7xxFJ$HXK~Je(?PyJ6Oj?5j78Mon|r_3oL> z@cx@YHh-W6sXx!?%{lD>{7RjoHs{RC9jEGn*`4 zOq2EBH0qoCr_+X&zPhciA8SzQY=85wX8SY8EdR9l%J-d{lIK>M$q6!ha*DjFd=>0c ztETnm1%u3X#P3?MXxEgN^QS(z+a~zy4cC*aGZhDGrqvk}{^t3Sk3B!nx4qZvZtW?x z4=(Ke^@g-!M{@RIwV65qt+nzCe zUd_cgw)N^0wUjSSTt~X3eK>S}c(hCYt&=>PWrk4~45p8>tXr*9v*Q^RUn;KTgjyyn zy|F%gzdze_bX3=#O+B8fcJp6_UlCeadt_L#s^mCzR;N!0N;^o#q#3sgs-N5B?2y54 zn=D&lcyDx*)LNsP`U~GQebOrA^*zsSCuVq`yYfQVm^d@z)?uIP)BBq}Y3Al)zAWKb zGQUFKpqU>V%&Xit*)^di>!DfuunJF3W-RSEd2_Y3>5DH^&A-3avSFPTGcSLfX)Pan zqKTr`i54GU<&D~5J7rKxC1GH0C-?mL3JqcgNe+$Swho&qOR3(e3OE1gq+Q?c%=z+( z^`m-FdaA`t8{rDG=LE&b#h;a zgWc;rY0!1Sv%6QX7{9OLbanLQ`didHn*9(C>?*tBx6$ZLj$MOJI|oMfic2#3>;4Lp zQ!_=myNuIV_1c_CQfCZtX?Ax`&-PAr@1~s>+gESvv$Ng)i6h$Orw7yx-x@W;aPymo z-eIrz_D>zKJMluj4z}&jW~|wHXz=pb*ZXU=Nj7SG!Nz>o+NYaGe9nwyf82j2EWqS! zqbnC4dv=}>*{$K#dtLaclSYv{PbhDW`4Ks|Zl^V?7u9KE^}zb*=n3`h2KB#Hp~m+k zUoS2S@~!;-?eOsU=XqRtuCK_T6KD;FM_d)SJsH@wysW1XuI=$qI9dd$s>yN>i&{4m&cxba=G- zz*N`6XOE5}&U{sRR9c?1akksI8!wl%jh}Y*oV8W=_2Y&#`MT+nk93S==*)THlPuU3 z(t5SIW3%~O*uhzM-0izWHG4|s9~io8Dg8O_bC=<~U;!3?X^{9E}S^7oi+sQI;hM&h7ehu4nV*ki#F$H6DY67Om( z$$!Ibmt)nj+it1v8(}5F+A`@@k2wxYcCNi(5ShQvv|fvy&Eop-&&=31)h4M;^06y} z+NX70IezriX9>^7d2hFQd-qkGO z?GNz>tqGWG(fVO4kKWI1=8W1&{xpxjGRpbPUvFv*?VVD6hx3n0)vvVt`oVRa#i>UY zx%*#q>?hha!_R$L%i!diFKtMT#?l#wC8|Bw;ngT{WDgY)ug^}a5MLS1A`xZYAn5NokpIMt?M#;dFuo1N6(&l z``N;VZGKdqz5e{|?6psRChf|Pu9!SvbuNFkX&v#0ZPmK{RZBE;@u^ii+r%6SI`(!R zZ+)!KjT~0W$|^w<&D9f!e2P|YRG+Bd=A&|($s+NjYE1_2iLJ`_>fC9{+b!>=K1?6A z_U_n^7lJD+8(@9BN4Amgg6iYvE}g%}k=%YF?Pse`pRz|cn%Tn^ci*+Ro1al<*GkLAE=^U8etgK}jKJo3M9SCdr)E_; zVsms_{r*#9@AjQ~C~ZXK+3lm2nFl4mGj}@pe0A4)7aDevD>Khryt-F>|AFmA)8*~o z9IWZsF2wiBsG5^*df2pYusi146jBgx;jl8g>ALklhjt7&)qa%x+RhcD1ZO6Oy}z_M zd-e^V#!pAji66XNy=C|hQQbr5U-TUw+k5Z$wC~E1S6qk9t+27R$&-W^Ln_(5ou7E- z>z;RAZnr)$WYXJ(lN%;)6K+!2j(@6%+d1W1_Z+)x;Rhcq+rHb=+i=GHsp_N(gU9>7 zK9b%xrT&`P<1H^Q_6+D4f2F>_)-J$wW16ro%e7(MEpr+>Ene2_jPUBJqgLGwuL!!W z?7QuwY~HJl*sPa+MHSeZ8dBjTdb{VgzW<9^_)lKO`8w?oJ!eH$4bL*_@tu*4+4j=2+{UJ|2 zt&ezm+E16Yuaj!r{OR-j(Cf$+mwq~_A9=KR$?rE{{NE0*j(ShMZ137*%aVN^#~jNL z4BI^3Hp(GZIZeH;!=-6|eRZ$WVrOlKV-KqKZgM;@r+S49lRCor0U3`hPngWQSI7H| fQo4LZu#>OtU+c^QhgKt3Mec9<=;P_31_u8hHGS?U diff --git a/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d b/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d deleted file mode 100644 index d13993f0d..000000000 --- a/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d +++ /dev/null @@ -1,5 +0,0 @@ -/Users/antoine/.lazybox/v2/github-codefly-dev-module-saas-starter/issue-1013-accounts-keys-behind-a-key-service-a-cloud/target/debug/deps/demo_svc-d29fe6cd5b78f23a.d: src/main.rs - -/Users/antoine/.lazybox/v2/github-codefly-dev-module-saas-starter/issue-1013-accounts-keys-behind-a-key-service-a-cloud/target/debug/deps/demo_svc-d29fe6cd5b78f23a: src/main.rs - -src/main.rs: diff --git a/target/debug/deps/demo_svc-d29fe6cd5b78f23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o b/target/debug/deps/demo_svc-d29fe6cd5b78f23a.demo_svc.ab39d4284f3d2457-cgu.0.rcgu.o deleted file mode 100644 index ccef6f3bb3623951d19a0873a8b3a62d755f5964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52736 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%0A|P-P7}0wyMvy> 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 From 4572e33f062dd2081ca80f0c5142fa5d875b64c1 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:51:12 -0400 Subject: [PATCH 09/10] test(accounts): derive which enveloped columns belong to an organization from the schema (#1013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A hole in the previous commit's own guard, found reviewing it. The crypto-shredding guard keys off the inventory's orgColumn: a row whose organization holds its own key, or revoked it, is left alone. An entry that omits orgColumn on a table that HAS an org_id is therefore swept for a protected organization anyway — re-sealing a customer's credential under a key this deployment controls, which is the exact failure the guard exists to prevent. The hand-written list of organization-scoped columns could not catch that. A new column missing orgColumn would simply be absent from the list and read as user-scoped, so the assertion would pass while the guard did nothing for it. So the question is asked of the live schema instead — does this table have an org_id? — and the inventory must agree, in both directions. The complement is also pinned: a column with no organization must be one of the three we decided is a person's rather than an organization's, each with its reason, so adding a fourth kind of value fails until someone decides which it is. Proven to bite: removing orgColumn from connector_credentials.secret_encrypted fails both, naming the column and what the omission would cause. Reaches the inventory through the existing export_test.go bridge, because the inventory is unexported and the database harness is in the external test package. Co-Authored-By: Claude Opus 5 (1M context) --- .../accounts/code/pkg/infra/export_test.go | 20 +++++ .../pkg/infra/keyservice_reseal_scope_test.go | 77 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 module/services/accounts/code/pkg/infra/keyservice_reseal_scope_test.go diff --git a/module/services/accounts/code/pkg/infra/export_test.go b/module/services/accounts/code/pkg/infra/export_test.go index 7dbb7b166..a20696aa4 100644 --- a/module/services/accounts/code/pkg/infra/export_test.go +++ b/module/services/accounts/code/pkg/infra/export_test.go @@ -126,3 +126,23 @@ func OpenScopedBoundaryWithWrites(ctx context.Context, readOnlyConnection, readW func BindControlPlaneTx(ctx context.Context, tx pgx.Tx) context.Context { return txbind.BindControlPlane(ctx, tx) } + +// EnvelopedColumn is one enveloped column as the re-seal inventory declares it. +// Exposed so a database-backed test can hold the inventory against the live +// schema: the crypto-shredding guard keys off OrgColumn, so an entry that omits +// it on a table that HAS an org_id is swept for an organization that holds its +// own key. +type EnvelopedColumn struct { + Table, Column, OrgColumn string +} + +// EnvelopedColumns is the re-seal inventory, for that test. +func EnvelopedColumns() []EnvelopedColumn { + out := make([]EnvelopedColumn, 0, len(envelopedColumns)) + for _, column := range envelopedColumns { + out = append(out, EnvelopedColumn{ + Table: column.table, Column: column.column, OrgColumn: column.orgColumn, + }) + } + return out +} diff --git a/module/services/accounts/code/pkg/infra/keyservice_reseal_scope_test.go b/module/services/accounts/code/pkg/infra/keyservice_reseal_scope_test.go new file mode 100644 index 000000000..a016f18c2 --- /dev/null +++ b/module/services/accounts/code/pkg/infra/keyservice_reseal_scope_test.go @@ -0,0 +1,77 @@ +//go:build !pure + +package infra_test + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + "accounts/pkg/infra" + "accounts/pkg/infra/storetx" +) + +// The crypto-shredding guard keys off orgColumn: a row whose organization holds +// its own key, or revoked it, is left alone. A column that HAS an organization +// but whose inventory entry forgets orgColumn is therefore swept for a protected +// organization anyway — re-sealing a customer's credentials under a key we hold, +// which is the exact failure the guard exists to prevent. +// +// A hand-written list of which columns are organization-scoped cannot catch +// that: the new column would simply be absent from it and read as user-scoped. +// So the question is asked of the SCHEMA — does this table have an org_id? — and +// the inventory must agree. +func TestEveryEnvelopedColumnOnAnOrgTableNamesItsOrgColumn(t *testing.T) { + for _, column := range infra.EnvelopedColumns() { + hasOrgID := tableHasColumn(t, column.Table, "org_id") + if hasOrgID { + require.Equal(t, "org_id", column.OrgColumn, + "%s.%s sits on a table with org_id, so the inventory must name it: without orgColumn the "+ + "re-seal sweep cannot tell whether the row belongs to an organization that holds its own "+ + "key, and would re-seal a customer's credential under a key this deployment controls", + column.Table, column.Column) + continue + } + require.Empty(t, column.OrgColumn, + "%s.%s names an organization column its table does not have", column.Table, column.Column) + } +} + +// And the inverse of the user-scoped decision: a column with no organization +// must be one we deliberately decided is not an organization's. Listing them +// here means adding a third kind of value fails until someone decides which it +// is. +func TestColumnsWithNoOrganizationAreTheOnesWeDecidedAreNot(t *testing.T) { + notAnOrganizations := map[string]string{ + "mfa_devices.secret_encrypted": "a TOTP seed belongs to a person, who may be in many organizations", + "webauthn_credentials.credential_encrypted": "a WebAuthn credential belongs to a person, not an organization", + "webauthn_ceremonies.session_data_encrypted": "a ceremony belongs to a person mid-login", + } + for _, column := range infra.EnvelopedColumns() { + key := column.Table + "." + column.Column + if column.OrgColumn != "" { + require.NotContains(t, notAnOrganizations, key, + "%s is organization-scoped in the inventory but listed as not an organization's", key) + continue + } + require.Contains(t, notAnOrganizations, key, + "%s has no organization column: decide whether it is an organization's data (give it one, so "+ + "crypto-shredding covers it) or a person's (list it here with the reason)", key) + } +} + +// tableHasColumn asks the live schema. information_schema is privilege-filtered, +// so this runs under the control plane, which reads every relation. +func tableHasColumn(t *testing.T, table, column string) bool { + t.Helper() + var present bool + require.NoError(t, testStore.WithControlPlane(testCtx, func(ctx context.Context) error { + return storetx.Tx(ctx).QueryRow(ctx, ` + SELECT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' AND table_name = $1 AND column_name = $2 + )`, table, column).Scan(&present) + })) + return present +} From 0caabda544d142ed89bc5bdcf02ae6a2f6832366 Mon Sep 17 00:00:00 2001 From: Antoine Toussaint <312536060+antoinetoussaint-byte@users.noreply.github.com> Date: Wed, 7 Oct 2026 17:33:31 -0400 Subject: [PATCH 10/10] docs: register org_key_bindings in the database authority inventory (#1013) The "Immutable module package" gate's `module/tools` suite holds DATABASE_AUTHORITY.md against relationcatalog, and migration 30's table was classified in the code but not in the document. The inventory exists so the two cannot drift, so the fix is the document, not the test. Tenant scope, where its policy puts it: a tenant reads its own binding and the control-plane and delivery roles read every one. Reproduced the gate locally (`GOWORK=off go test ./...` in module/tools, plus `module-package validate`) rather than pushing to see whether CI agreed. Co-Authored-By: Claude Opus 5 (1M context) --- module/DATABASE_AUTHORITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/DATABASE_AUTHORITY.md b/module/DATABASE_AUTHORITY.md index 0acc7da59..5af9c1975 100644 --- a/module/DATABASE_AUTHORITY.md +++ b/module/DATABASE_AUTHORITY.md @@ -526,7 +526,7 @@ executable inventory and this table in the same change. | Scope | Relations | Required database boundary | |---|---|---| | `global` | `audit_event_types`, `bootstrap_state`, `data_retention_policies`, `datasource_credential_budgets`, `email_templates`, `feature_flags`, `identity_providers`, `plan_entitlements`, `plans`, `platform_admins`, `policy_log_commits`, `policy_log_cursor`, `solution_delivery_documents`, `solution_generation_history`, `solution_host_bindings`, `solution_registrations`, `solution_targets` | No RLS; exact grants | -| `tenant` | `actor_chain_journal`, `actor_chain_revocations`, `api_keys`, `approval_decisions`, `approval_requests`, `audit_event_idempotency`, `audit_events`, `connector_credentials`, `dashboards`, `datasource_account_links`, `datasource_domains`, `datasource_group_bindings`, `datasource_sources`, `delegation_grants`, `domain_events`, `entitlement_overrides`, `executable_artifact_approvals`, `github_app_installations`, `github_app_setups`, `installations`, `invitations`, `membership_integrity_findings`, `org_generic_settings`, `org_identity_providers`, `org_settings`, `organization_activations`, `organization_authorization_revisions`, `organization_members`, `organizations`, `principal_authorization_revisions`, `principals`, `record_shares`, `role_assignments`, `role_permissions`, `roles`, `scope_grants`, `scope_nodes`, `source_delegations`, `source_read_revisions`, `subscriptions`, `team_members`, `team_membership_quarantine`, `teams`, `usage_events`, `usage_totals`, `webhook_deliveries`, `webhook_subscriptions`, `work_context_replay` | Enabled and forced RLS with at least one policy | +| `tenant` | `actor_chain_journal`, `actor_chain_revocations`, `api_keys`, `approval_decisions`, `approval_requests`, `audit_event_idempotency`, `audit_events`, `connector_credentials`, `dashboards`, `datasource_account_links`, `datasource_domains`, `datasource_group_bindings`, `datasource_sources`, `delegation_grants`, `domain_events`, `entitlement_overrides`, `executable_artifact_approvals`, `github_app_installations`, `github_app_setups`, `installations`, `invitations`, `membership_integrity_findings`, `org_generic_settings`, `org_identity_providers`, `org_key_bindings`, `org_settings`, `organization_activations`, `organization_authorization_revisions`, `organization_members`, `organizations`, `principal_authorization_revisions`, `principals`, `record_shares`, `role_assignments`, `role_permissions`, `roles`, `scope_grants`, `scope_nodes`, `source_delegations`, `source_read_revisions`, `subscriptions`, `team_members`, `team_membership_quarantine`, `teams`, `usage_events`, `usage_totals`, `webhook_deliveries`, `webhook_subscriptions`, `work_context_replay` | Enabled and forced RLS with at least one policy | | `user` | `client_authorization_codes`, `gdpr_requests`, `mfa_backup_codes`, `mfa_devices`, `mfa_login_transactions`, `notifications`, `onboarding_progress`, `resource_follows`, `sessions`, `user_consent_events`, `user_consent_preferences`, `user_identities`, `users`, `webauthn_ceremonies`, `webauthn_credentials` | Enabled and forced RLS with at least one policy | | `pre_auth` | `magic_links`, `waitlist_entries` | Enabled and forced RLS; fail-closed request policy, accessed only by the control-plane role | | `job` | `job_messages` | Enabled and forced RLS with at least one policy; no request relation grant — function-only scoped enqueue plus exact job-worker grants |