Add value-safe verification and audit reporting
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a0217e-8c4c-7383-be6b-f50a6e485306
This commit is contained in:
parent
491e706a70
commit
c4504c6de9
19 changed files with 598 additions and 50 deletions
17
docs/cli.md
17
docs/cli.md
|
|
@ -48,7 +48,7 @@ secrets-engine decision inspect <decision-or-ccr-id>
|
|||
secrets-engine plan <ref> --stage <build|test|prod>
|
||||
secrets-engine apply <ref> --stage <stage> [--dry-run] [--bootstrap-token-file F]
|
||||
secrets-engine provision <catalog-id> --stage <stage> --field NAME (--from-file F | --generate)
|
||||
secrets-engine verify <catalog-id> [--field NAME] [--positive] [--negative]
|
||||
secrets-engine verify <catalog-id> [--field NAME] [--positive] [--negative] [--negative-token-file F]
|
||||
secrets-engine handoff <catalog-id> --stage <stage> --role-id-file F --secret-id-file F
|
||||
secrets-engine exec --catalog <catalog-id> [--field NAME] [--mode auto|npm-config|exec-env] -- CMD...
|
||||
secrets-engine policy publication <catalog-id>
|
||||
|
|
@ -57,6 +57,7 @@ secrets-engine revoke <catalog-id> [--dry-run]
|
|||
secrets-engine lifecycle suspend <catalog-id> [--dry-run]
|
||||
secrets-engine lifecycle deactivate <catalog-id> [--dry-run]
|
||||
secrets-engine lifecycle destroy <catalog-id> [--dry-run] [--confirm-destroy <catalog-id>]
|
||||
secrets-engine audit <catalog-id> [--json]
|
||||
```
|
||||
|
||||
`policy publication` resolves a lane's effective publication scope and the env
|
||||
|
|
@ -81,7 +82,9 @@ CAS-aware create/patch behavior with a strict temporary input reference: values
|
|||
are absent from argv, sibling fields are preserved, and stale writes fail.
|
||||
|
||||
With no `--field`, `verify` checks every declared KV field positively and runs
|
||||
one path-level negative probe. `route` likewise requires every declared field
|
||||
one path-level negative probe. KV denial requires `--negative-token-file` with a
|
||||
real unrelated identity's mode-0600 token file outside Git; absence fails the
|
||||
check without calling OpenBao. `route` likewise requires every declared field
|
||||
and reports only missing field names. An explicit `--field` narrows positive
|
||||
verification; production use will bind such subsets to the action approval.
|
||||
|
||||
|
|
@ -102,6 +105,13 @@ Exec and verification AppRole logins are scoped sessions. The issued token
|
|||
self-revokes on every exit path before exec starts (or when verification ends),
|
||||
and evidence stores only a short accessor fingerprint plus cleanup outcome.
|
||||
|
||||
`audit` is a read-only, local evidence summary. It reports action and result
|
||||
counts, canonical decision references, session cleanup outcomes, and State Hub
|
||||
delivery outcomes for one cataloged lane. Its parser allowlists those fields and
|
||||
does not echo arbitrary JSONL detail. State Hub failures are recorded locally as
|
||||
append-only companion receipts; they are visible but are not automatically
|
||||
replayed.
|
||||
|
||||
## Exit codes
|
||||
|
||||
| Code | Meaning |
|
||||
|
|
@ -177,7 +187,8 @@ secrets-engine apply whynot-design-npm-publish --stage prod
|
|||
secrets-engine provision whynot-design-npm-publish --stage prod \
|
||||
--field npm_token --from-file ~/.secrets-engine/whynot.token
|
||||
# 5. prove access without printing the value
|
||||
secrets-engine verify whynot-design-npm-publish --field npm_token --positive --negative
|
||||
secrets-engine verify whynot-design-npm-publish --field npm_token --positive --negative \
|
||||
--negative-token-file /secure/path/unrelated.token
|
||||
# 6. publish with the token injected into the child only
|
||||
secrets-engine exec --catalog whynot-design-npm-publish -- npm publish
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue