06 · Development Permits
Say it. Do it. Prove it.
A permit is an x509 certificate that says, in effect, "this application may run this stage in this environment until this date." The pipeline verifies it and proceeds with no one pressing an approval button. The governance behind the certificate is where the control lives.
How a permit is used
The certificate replaces the approval email.
A governance body outside the application teams issues permits. The team presents its permit to the pipeline, which checks it and moves forward. Where a pipeline once waited on several approval emails, a valid permit stands it up on its own.
An expired, mismatched or invalid permit fails closed.
The stages
What each permit asks of the team.
| Permit | Principle | Authorizes | Requires |
|---|---|---|---|
| Build | Begin | Building the application | A registered application ID, named owners, a repository, the stated purpose and data classes, the expected controls, infrastructure as code, and a decision log |
| Test | Say it | Test pipelines and test environments | A defined, owned threat model, and the standards in place |
| Production | Prove it | Deploying to and running in production | For each top threat, an automated test or recorded exercise showing the control working, with a date and result. Runbooks rehearsed, dashboards live, alarms tested |
Proving prevention
The standard demonstrations.
Each top threat links to evidence. These are the ones every application should expect to show where they apply.
| Threat | Evidence |
|---|---|
| One tenant reads another's data | A cross-tenant query returns zero rows |
| A handler skips its authorization check | AVP denies the action, and RLS still returns nothing if the check is removed |
| Injection through user input | Hostile input is stored or rejected as data, through generated, parameterized queries |
| A stolen database snapshot | Personal data is ciphertext without the KMS key, and a context mismatch is denied |
| Bulk data extraction | Exhausting the KMS token bucket raises the alarm |
| Deploying with a bad permit | A pipeline run fails closed on an expired or mismatched permit |
Trust and validity
The expiry date is the control.
Your organization is the root
Permits come from a CA the adopting organization owns, dedicated to permits and separate from any CA issuing TLS or workforce certificates. Pipelines trust only that CA.
Long-lived, then reviewed
A permit spans real development and testing cycles. Its end brings governance back to look at what changed. Something valid six months ago isn't automatically approved today.
No revocation infrastructure
The validity period replaces CRLs and OCSP. The pipeline proves possession of the permit's private key, and an optional deny list covers a key known to be compromised.