Repository navigation
feat(sensitive): bind break-glass approvals to approver identities - #122
Draft
seonghobae wants to merge 28 commits into
Draft
seonghobae wants to merge 28 commits into
seonghobae wants to merge 28 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Merge the current break-glass prerequisite while retaining the bounded approver-binding contribution. Signed-off-by: Seongho Bae <me@seonghobae.me>
…y' into codex/restack-pr122 Signed-off-by: Seongho Bae <me@seonghobae.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Partial implementation of #10, stacked on current PR #119.
Buyer/security gap
PR #119 binds one break-glass decision to the currently authenticated beneficiary actor and requires one or two distinct approval references, but reference distinctness alone does not prove approver independence. A trusted runtime could otherwise present beneficiary self-approval, one approver behind two references, or approver identities detached from the exact references evaluated by policy.
Current stack / live alignment
59478c3e33fa483af8203de8258eaf8664edf923ba16263f58e8c21df909e881b390cc094baa6642This head merges the current prerequisite without rewriting history. The only textual conflict was the changelog: it retains the child approver-binding entry and the parent's current request/freshness-bound necessity entry. No prerequisite or predecessor check, review, coverage, status, mergeability, or synthetic-merge evidence transfers.
TDD / RCA lineage
3fc4edde4185d16d5ae4d0295b5d07a3e6b852a0required explicit approver binding before production support existed. CI run31594761604, Rust contracts job94107529223, passed repository contracts/formatting and then failed E0432/E0599/E0061 because the approver-binding contract and evaluator input did not exist. This is the valid RED.Implemented contract
The branch requires one coherent
BreakGlassIdentityBindingssnapshot, binds each human or dual-control approver identity to its exact approval reference, rejects malformed/oversized identifiers, duplicate approvers, duplicate or mismatched references, beneficiary self-approval, and human/dual-control shape mismatch, accepts dual-control pair order without detaching identities from references, and composes these checks with ordinary sensitive-data authority, beneficiary binding, reason, validity, heightened monitoring, and mandatory review. Public contracts have rustdoc and focused regressions cover the fail-closed boundaries.Current-head verification
For exact head
59478c3e33fa483af8203de8258eaf8664edf923against exact prerequisiteba16263f58e8c21df909e881b390cc094baa6642:cargo fmt --all -- --check: success;cargo test --locked --workspace --all-features: success;cargo clippy --locked --workspace --all-targets --all-features -- -D warnings: success;RUSTDOCFLAGS='-D warnings' cargo doc --locked --workspace --all-features --no-deps: success;The prior successful run
32634567204belongs to the previous head and is historical only. Security/SAST/central review workflows absent for this stacked Draft are absent, not passing. No predecessor-head, prerequisite-head, queued, pending, skipped, cancelled, stale, synthetic, status-only, or model-only evidence is promoted as current proof.Truth boundary
This deterministic metadata slice does not authenticate approvers, prove organizational-role separation beyond exact identity inequality, verify approval signatures, prove the caller derived an identity/reference pair from one authoritative approval event, disclose protected bytes, persist or hash-chain audit evidence, execute monitoring or review, implement a trusted broker, or close issue #10. A trusted approval service/runtime must derive approval references and approver identities together from authenticated signed or otherwise authoritative approval state immediately before evaluation.
Passing automation is not independent approval. This scheduled actor does not merge, self-approve, alter workflows, add secrets, weaken checks, tag, or publish.