Founder-run keycape-client.py remove-then-add (rv 83164002 -> 83589983 -> 83590099), check-config valid throughout, one KeyCape restart, issuer ready. Acceptance hub decision 21a557a9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 5502@bnt-lap001 Assistant-Session: 68b3b02f-5d0f-4e71-8421-796f62e50196
89 lines
5.6 KiB
YAML
89 lines
5.6 KiB
YAML
schema_version: "0.1"
|
|
service: keycape
|
|
owner: "key-cape owners"
|
|
declared_at: 2026-10-24
|
|
attestation:
|
|
authored_by: claude-code
|
|
basis: [tools/bootstrap-recovery/identity-backup-profile.json, sso-mfa/k8s/keycape/deployment.yaml, sso-mfa/k8s/keycape/bootstrap-config.json, docs/service-identity-inventory.md]
|
|
owner_confirmed: false
|
|
complete: false
|
|
identities:
|
|
- name: secrets-engine-openbao
|
|
principal_type: SERVICE
|
|
purpose: "Confidential OIDC client; obtains a login token whose only scope is openbao:login"
|
|
grants:
|
|
- {mode: USE, scope: keycape, activation: STANDING, environments: [PRODUCTION], note: "client credentials"}
|
|
- {mode: USE, scope: openbao, activation: STANDING, environments: [PRODUCTION], note: "scope openbao:login only; openbao:admin denied"}
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: secrets-engine, kind: service}]
|
|
owner: "key-cape owners and the consuming service owner"
|
|
rotation: {path: "Mint in custody, then deliver (credential broker); KeyCape reads it at start", coupling: [keycape, secrets-engine]}
|
|
status: active
|
|
- name: secrets-engine-approval
|
|
principal_type: SERVICE
|
|
purpose: "Confidential OIDC client (client_credentials); token scopes limited to its registered scopes"
|
|
grants:
|
|
- {mode: USE, scope: keycape, activation: STANDING, environments: [PRODUCTION], note: "client credentials"}
|
|
- {mode: USE, scope: "approval-engine: approval:read, approval:consume", activation: STANDING, environments: [PRODUCTION], note: "key-cape a1ab8ff service-clients.example.yaml L27-39, token.go:355-363"}
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: secrets-engine, kind: service}]
|
|
owner: "key-cape owners and the consuming service owner"
|
|
rotation: {path: "Mint in custody, then deliver (credential broker); KeyCape reads it at start", coupling: [keycape, secrets-engine]}
|
|
status: active
|
|
- name: secrets-engine-requester
|
|
principal_type: SERVICE
|
|
purpose: "Confidential OIDC client (client_credentials); token scopes limited to its registered scopes"
|
|
grants:
|
|
- {mode: USE, scope: keycape, activation: STANDING, environments: [PRODUCTION], note: "client credentials"}
|
|
- {mode: USE, scope: "approval-engine: approval:create", activation: STANDING, environments: [PRODUCTION], note: "key-cape a1ab8ff L106-119; subject lacks service: prefix"}
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: secrets-engine, kind: service}]
|
|
owner: "key-cape owners and the consuming service owner"
|
|
rotation: {path: "Mint in custody, then deliver (credential broker); KeyCape reads it at start", coupling: [keycape, secrets-engine]}
|
|
status: active
|
|
- name: approval-engine-operator
|
|
principal_type: SERVICE
|
|
purpose: "Confidential OIDC client (client_credentials); token scopes limited to its registered scopes"
|
|
grants:
|
|
- {mode: USE, scope: keycape, activation: STANDING, environments: [PRODUCTION], note: "client credentials"}
|
|
- {mode: OPERATE, scope: "approval-engine: approval:create, read, approve, revoke, supersede, observe, emit", activation: STANDING, environments: [PRODUCTION], note: "key-cape a1ab8ff L57-69; withdrawn 2026-09-09, still registered; SI-11 retirement candidate"}
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: approval-engine, kind: service}]
|
|
owner: "key-cape owners and the consuming service owner"
|
|
rotation: {path: "Mint in custody, then deliver (credential broker); KeyCape reads it at start", coupling: [keycape, approval-engine]}
|
|
status: active
|
|
- name: informed-decision-sitting-requester
|
|
principal_type: SERVICE
|
|
purpose: "Confidential OIDC client (client_credentials); token scopes limited to its registered scopes"
|
|
grants:
|
|
- {mode: USE, scope: keycape, activation: STANDING, environments: [PRODUCTION], note: "client credentials"}
|
|
- {mode: USE, scope: "approval-engine: approval:create", activation: STANDING, environments: [PRODUCTION], note: "key-cape a1ab8ff L122-135"}
|
|
- {mode: USE, scope: "approval-engine: approval:read", activation: STANDING, environments: [PRODUCTION], note: "key-cape 82b471f; live 2026-11-01 (founder-run keycape-client.py remove-then-add, sso/keycape-config rv 83590099, acceptance hub decision 21a557a9, CCR-2026-0026/0027 amendment); for informed-decision present_existing intake"}
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: informed-decision-sitting, kind: service}]
|
|
owner: "key-cape owners and the consuming service owner"
|
|
rotation: {path: "Mint in custody, then deliver (credential broker); KeyCape reads it at start", coupling: [keycape, informed-decision-sitting]}
|
|
status: active
|
|
- name: rapp-qonto
|
|
principal_type: SERVICE
|
|
purpose: "Confidential OIDC client; its token scopes are not established in the repository"
|
|
grants:
|
|
- {mode: USE, scope: keycape, activation: STANDING, environments: [PRODUCTION], note: "client credentials"}
|
|
- {mode: unknown, scope: "token scopes", note: "reference config: rapp-qonto-client, qonto:read; confirm live (KEY-WP-0045-T02)"}
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: rapp-qonto, kind: service}]
|
|
owner: "key-cape owners and the consuming service owner"
|
|
rotation: {path: "Mint in custody, then deliver (credential broker); KeyCape reads it at start", coupling: [keycape, rapp-qonto]}
|
|
status: active
|