Answer ops-warden and secrets-engine; open FLEX-WP-0021
Two cross-repo questions arrived in the flex-auth inbox and both are answered as decision records rather than as prose in a message. FLEX-DEC-2026-004 answers ops-warden WARDEN-WP-0034-T05. A decision lifetime shorter than the SSH certificate TTL is meaningful, but only as authority to issue, never as authority to use an already-issued certificate. The pre-sign gate is the only consumer of the shorter lifetime: no replay past expires_at, fresh Check per sign. The lever that shortens effective access is the requested TTL as a policy input, which is already deployed as the ttl_out_of_bounds deny. ops-warden's section 9.7.2 window through certificate TTL is correct as written and correctly owned by the PEP; flex-auth does not want that residue moved to the PDP. docs/decision-input-freshness.md gains the same boundary as published contract text, so the ruling is not only in the decision log. FLEX-DEC-2026-005 answers secrets-engine. A real policy package is expected and flex-auth authors it here as it does for every consumer; the reserved coordinate is secrets-engine.catalog-lane.lifecycle v1 and it does not exist yet. Their choice not to default the pin was correct and is endorsed explicitly. POST /v1/check is deployed but has no estate-wide address by design -- per-consumer cluster-local pins with default-deny ingress -- so their 2026-09-06 probe found the design working, not an outage. FLEX-WP-0021 carries that work: obtain the real action vocabulary from secrets-engine, publish the package with fixtures, confirm the digest join against a real decision record, then stand up a flex-auth-secrets-engine pin in warn without moving the other two pins. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JTbVXpEiXA7mNJVpDnEPcB Assistant: claude-code Assistant-Model: opus Assistant-Process: 412054@bnt-lap001 Assistant-Session: 3968fae1-8d59-4209-9bd6-c22594b8ab19
This commit is contained in:
parent
56940727bf
commit
6a6464fcc9
4 changed files with 659 additions and 15 deletions
|
|
@ -62,6 +62,21 @@ read a different snapshot.
|
|||
|
||||
A stale-directory signal from Topaz fails closed (`topaz_directory_stale`).
|
||||
|
||||
## Lifetime versus an artifact issued under the decision
|
||||
|
||||
`lifetime.expires_at` bounds the **decision**, not anything a consumer creates
|
||||
while acting on it. It is authority to issue, not authority to use.
|
||||
|
||||
Where a PEP's enforcement produces a durable credential — ops-warden's SSH
|
||||
certificate is the shipped case — the credential's own TTL governs it, and no
|
||||
flex-auth field reaches it. A short decision lifetime bounds how long a revoked
|
||||
principal can keep obtaining *new* credentials, which is the part a PDP can
|
||||
bound; it does not recall one already issued. The residue between the two is the
|
||||
consumer's §9.7.2 window to state, and it is correctly stated at the PEP.
|
||||
|
||||
The lever that shortens the artifact's own life is the requested TTL as a policy
|
||||
input, not the decision lifetime. See `FLEX-DEC-2026-004`.
|
||||
|
||||
## How to read this as a consumer
|
||||
|
||||
1. Do not cache a verdict past `lifetime.expires_at`.
|
||||
|
|
@ -70,3 +85,5 @@ A stale-directory signal from Topaz fails closed (`topaz_directory_stale`).
|
|||
to a fresh Check.
|
||||
3. Approval revocation is a claim-class problem: stop presenting the claim,
|
||||
and do not replay a digest that included it.
|
||||
4. Do not read `lifetime` as a bound on a credential you issued under the
|
||||
allow. Bound that credential with its own TTL.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue