Schema, validator, fixtures, declarations and tests (40 pass) now use the imported principal_type and authority grants MODE @ SCOPE with activation and environments, estate conventions bind and service-admin, unknown placeholders, and an elimination path on every exception. SI-4 and SI-7 became decidable. Before/after over the same declarations: 1/11/2/5/6 to 1/10/2/5/7 (non-conformant/unknown/excepted/planned/ conformant); the only move is KeyCape's secrets-engine-openbao client, whose scope is established. lldap/admin is now also excepted under SI-4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 328925@bnt-lap001 Assistant-Session: 14b795fd-c632-4c01-8d28-e7e490c7b0ed
56 lines
2.6 KiB
YAML
56 lines
2.6 KiB
YAML
schema_version: "0.1"
|
|
service: privacyidea
|
|
owner: "MFA and privacyIDEA owners (NetKingdom)"
|
|
declared_at: 2026-10-24
|
|
attestation:
|
|
authored_by: claude-code
|
|
basis: [sso-mfa/k8s/privacyidea/README.md, sso-mfa/k8s/privacyidea/bootstrap-admin.py, sso-mfa/k8s/keycape/deployment.yaml, docs/service-identity-inventory.md]
|
|
owner_confirmed: false
|
|
complete: false
|
|
identities:
|
|
- name: pi-admin
|
|
principal_type: HUMAN
|
|
conventions: [service-admin]
|
|
purpose: "privacyIDEA's local administrator; policy pi-admin-all-rights restricted to adminuser=pi-admin"
|
|
grants: [{mode: ADMINISTER, scope: privacyidea, activation: STANDING, environments: [PRODUCTION]}]
|
|
interactive_login: true
|
|
second_factor: unknown
|
|
custody: [personal-safe]
|
|
consumers: [{name: founder, kind: person}]
|
|
owner: "Founder and MFA owners"
|
|
rotation: {path: "bootstrap-admin custody entry; password changes are a separate procedure", coupling: []}
|
|
status: active
|
|
recovery: {needed: true, works_with_sso_down: true, in_crisis_list: true}
|
|
- name: trigger-admin
|
|
principal_type: unknown
|
|
conventions: [service-admin]
|
|
purpose: "Legacy Keycloak-era administrator account, policy and Secret; who presents it is not established"
|
|
grants: [{mode: ADMINISTER, scope: privacyidea, activation: STANDING, environments: [PRODUCTION]}]
|
|
interactive_login: false
|
|
second_factor: unknown
|
|
custody: [delivered-secret]
|
|
consumers: []
|
|
owner: "MFA owners; revocation decided under NK-WP-0049-T22"
|
|
rotation: {path: "None established; revocation needs a separate approval", coupling: []}
|
|
status: legacy
|
|
disposition: {action: defer, owner: "Founder", date: 2026-12-31}
|
|
- name: keycape-factor-reader
|
|
principal_type: SERVICE
|
|
purpose: "KeyCape's access to read factor state; delivered by railiance-platform (RPF-WP-0040)"
|
|
grants: [{mode: unknown, scope: privacyidea, note: "exact rights not established"}]
|
|
interactive_login: false
|
|
second_factor: not_applicable
|
|
custody: [delivered-secret]
|
|
consumers: [{name: keycape, kind: service}]
|
|
owner: "railiance-platform and key-cape"
|
|
rotation: {path: "Renewed by policy keycape-factor-renewer through ESO", coupling: [keycape]}
|
|
status: active
|
|
exceptions:
|
|
- id: SI-X3
|
|
rules: [NAMING]
|
|
identity: trigger-admin
|
|
reason: "Legacy account whose name does not follow the admin naming form and whose consumers are uninventoried"
|
|
owner: "Founder"
|
|
expires: 2026-12-31
|
|
compensating_control: "Not provisioned by the current bootstrap"
|
|
elimination_path: "Revocation or acceptance under NK-WP-0049-T22"
|