the-custodian/docs/evidence/2026-10-12-netkingdom-security/admin-bootstrap.json
codex e2dbe1267f
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Reject generated-only commits / generated-commit-guard (push) Successful in 7s
docs(security): record current-profile admin bootstrap repair
2026-10-12 15:03:59 +02:00

172 lines
7.6 KiB
JSON

{
"date": "2026-10-12",
"gap_refs": [
"G08",
"G09",
"G04",
"G12"
],
"owner_task": "NK-WP-0049-T02",
"manifest": {
"repo": "net-kingdom",
"base_head": "6ae4708ea061048f84fe59dcee3f482c69e291f9",
"files": [
{
"path": "sso-mfa/k8s/privacyidea/bootstrap-admin.sh",
"before": "b7769727e2f199ba8d8455bdeef3de4df954f01d33d46b5ebbd7af6fc015de63",
"after": "1a11738c1790cc6b5f23ed40f02971591eb76afa486be89d5535b0027aca6989"
},
{
"path": "sso-mfa/k8s/privacyidea/bootstrap-admin.py",
"before": null,
"after": "b81b5c3806dbdf03ea7cac37884cc368de0f0ef7880ac326b67af3a291c35890"
},
{
"path": "sso-mfa/k8s/privacyidea/bootstrap-admin-remote.py",
"before": null,
"after": "c83c3a5c9a753a8afec90c35ce5ddbfc15f7b8aff437065f428109d9c5774b89"
},
{
"path": "tests/test_admin_bootstrap.py",
"before": null,
"after": "505925378e4d662b3c2077c7f22a748159abb11eb48e432f301187745b6fb0fd"
},
{
"path": "tests/test_admin_bootstrap_privacyidea.py",
"before": null,
"after": "1652a31b52e7ca6af1442ebf2191731cb501de0837ffef945bbc7d1a6b8e6d3e"
},
{
"path": "sso-mfa/k8s/privacyidea/README.md",
"before": "2b4b99a9d0b2d6cb9c129125b3ff003dbd925d89ae7ee770ff187718796d9551",
"after": "aeaed29e3d8a6f914e6758a1788c312760503b72473701685012366177069c09"
},
{
"path": "sso-mfa/k8s/privacyidea/deployment.yaml",
"before": "79f0bf9eaab5482509cd9d18bb0fa42b9f1a9cab33e7c1e504486b2d1e24e409",
"after": "c6da8950b5daf61ba7b3238f7a6d3d3a05eabb835369b1c4e397cce1f5eab5e6"
},
{
"path": "sso-mfa/k8s/verify-t04.sh",
"before": "6911d45e8dd76aea3663d02393c98d30d5d3f8168c2a33326eedcff1a4a9d9b4",
"after": "b34c6b43bf1e1a2274df3014436e9c9993a1c17bc6d81d482a80f4fd56365ce6"
},
{
"path": "sso-mfa/WORKPLAN.md",
"before": "611390e9bfad1b53fa471bf0e2a3b0b8ea8094c99cbffd69e17a785b6b819e85",
"after": "5b76896a6c322810dc99c4539046ff40f53498bac4a9b28ab06f23bb635cfdf3"
},
{
"path": "docs/security-bootstrap-age-custody.md",
"before": "0110b1e2f184e0ae700e7278b6f1d9b9136cb07872ec72f74c3c580131f5a1ec",
"after": "8c6d0834e69b0fa071eea38829043b89d0e1ab0f8196bbb758117db49a6fb408"
},
{
"path": "workplans/NK-WP-0049-bootstrap-secret-free-recovery-handoff.md",
"before": "d2f56748a25111a096cefab330d5aa51a248e0864c3f91d35c1ebc7ab34d7c64",
"after": "fb5a977cc7d90c0e911b0671af15b315bef5cfd637441db75aad7b2659468f5a"
}
]
},
"source_commit": "19a1c75d309991de8654c4b7a9eeffea8fb90b18",
"source_pushed": true,
"architecture_basis": {
"scope": "NetKingdom current profile; source inspection, not live consumer inventory",
"observations": [
"NetKingdom SCOPE.md declares Keycloak enterprise federation backlog",
"Current KeyCape source provisions a pi-admin token through keycape/create-pi-token.sh and references it in keycape/create-secrets.sh",
"No trigger-admin consumer reference found in reviewed KeyCape or Platform source; NetKingdom references are legacy bootstrap/docs/readiness expectations",
"NetKingdom runtime package ownership is external under ADR-0015; this repair does not authorize managed deployment"
]
},
"verification": {
"original_entrypoint_regressions": {
"failed": 14,
"passed": 2
},
"final_focused": {
"passed": 36,
"failed": 0,
"warnings": 4,
"seconds": 13.32,
"scope": "29 entry-point/controller tests and seven actual privacyIDEA 3.12.2 model tests using disposable SQLite"
},
"initial_full_suite_attempt": {
"collection_errors": 4,
"cause": "Disposable test environment lacked existing repository jsonschema dependency; installed it and reran full suite"
},
"actual_checkout_full_suite": {
"passed": 288,
"subtests_passed": 29,
"failed": 0,
"skipped": 0,
"warnings": 4,
"seconds": 44.81,
"command": "PATH=/tmp/netkingdom-sops-tools:$PATH PYTHONDONTWRITEBYTECODE=1 /tmp/netkingdom-admin-output-fix/venv/bin/python -m pytest -p no:cacheprovider tests tools -q --tb=short --disable-warnings",
"warning_scope": "Four upstream dependency deprecation warnings"
},
"test_dependencies": "admin-bootstrap-test-requirements.txt"
},
"controls": [
"No automatic legacy trigger-admin account/policy/Secret creation or misleading current readiness requirement",
"Private owned regular single-link service input; no shell evaluation, no credential argv or environment assignment",
"One pod, credential on kubectl stdin, sanitized diagnostics and exact value-free receipt",
"Version-scoped 3.12.2 adapter verifies existing password without updates",
"New account/policy insert-only writes share transaction; uniqueness conflicts roll back instead of overwriting",
"Scoped pi-admin policy; broad legacy policies, multi-admin migration and external administrative realms refused",
"MFA/effective-policy acceptance explicitly separated from bootstrap success"
],
"proof_limits": [
"No live account, policy, Secret or credential was accessed, changed or revoked",
"Disposable SQLite exercises actual privacyIDEA models; deployed image/PostgreSQL/native permissions and MFA remain unverified",
"Policy controller/transport tests use synthetic data and fake kubectl",
"Existing trigger credentials/Secrets are not removed; inventory and authorized revocation remain required",
"KeyCape full-admin token issue/delivery/least-privilege/refresh and other delegated callers remain open",
"Existing custom policies or SUPERUSER_REALM configuration require owner-reviewed profile migration",
"An error after DB commit can leave created state; rerun verification uses the same credential, never resets it",
"No runtime agent isolation or hostile same-UID guarantee"
],
"source_basis": [
{
"url": "https://github.com/privacyidea/privacyidea/blob/v3.12.2/privacyidea/cli/pimanage/admin.py",
"sha256": "5d4a4c89058f2aa6f0307bab06b684f190084e9a198d36243d3306c4d546fa6f"
},
{
"url": "https://github.com/privacyidea/privacyidea/blob/v3.12.2/privacyidea/lib/auth.py",
"sha256": "bd1b14c4dd6e906570e6a89e9bb444e82e4e5fca06f7411a7406a16cae7019e9"
},
{
"url": "https://github.com/privacyidea/privacyidea/blob/v3.12.2/privacyidea/models/config.py",
"sha256": "b0727db3643613b76f5c8b31256945a1259d26ef2b1878525ecb20dde4cb05ea"
},
{
"url": "https://github.com/privacyidea/privacyidea/blob/v3.12.2/privacyidea/models/policy.py",
"sha256": "4a5bb2f8fb8f89f9ab93f9dde588c440d08a5358161ed4faeff95d8b1368c02c"
},
{
"url": "https://github.com/privacyidea/privacyidea/blob/v3.12.2/privacyidea/lib/policy.py",
"sha256": "903284a68602c0e7cbe20c40348b6394ba491a6a0beac251553e00332ea3dcb6"
},
{
"url": "https://github.com/privacyidea/privacyidea/blob/v3.12.2/privacyidea/cli/__init__.py",
"sha256": "a89d3ccd773d5275fbe06ca86871af15ed61e7c822287c964b32d7e25e311244"
}
],
"statehub_sync": {
"owner": {
"fail": 0,
"automation_error": 0,
"warn": 32,
"info": 5
},
"custodian": {
"fail": 0,
"automation_error": 0,
"warn": 7,
"info": 4
},
"custodian_note": "DB reconciliation succeeded; sandbox prevented automatic working-memory Git commit. Scoped assessment and evidence committed separately."
},
"source_implementation_decision_id": "765c47a9-6f4f-488f-ac13-27073a10289f",
"progress_id": "87746c12-8197-46b8-95a4-4f6742ec2643"
}