Audit Log Service · View 03 of 40 · 1 · Context and scope
The decision
- The write path holds no authority over the record's lifetime. Capture, custody, query and evidence are four planes with disjoint credentials, and only custody — which cannot create records — can express retention.
- This is enforced structurally, not by policy: the capture plane's data-access layer contains no update or delete verb, and the custody plane contains no insert verb for records. A CI gate fails the build if either appears (view 31).
- The alternative — one service that ingests, stores, indexes and expires under a single identity — is dramatically simpler and is what most audit logging becomes. It is also worth nothing as evidence, because the party holding the record could always have changed it.
How the separation is real
- Four AKS namespaces, four managed identities, four Entra groups with no shared membership and no group nesting between them.
- Blob data-plane roles granted per plane: the sealer holds create-only on the segment container; the verifier holds read-only; nothing anywhere holds Storage Blob Data Owner.
- Immutability is a property of the storage, not of the application. Access control can be misconfigured; a locked retention policy cannot be talked out of it.
Risks
- A shared platform team with cluster-admin on AKS could in principle impersonate several plane identities. Mitigated by workload identity federation bound to service accounts, PIM-gated cluster-admin and alerting on any use of it — not eliminated.
- The separation costs latency and operational surface. It is the price of the negative claim the service exists to make.