retarget: T04 backup key is resource-control, not Barman

Handle becomes secret:railiance-platform/backup. IAM application is
resource-control; policy and API key are Scoped backup access.
This commit is contained in:
tegwick 2026-08-14 19:19:56 +02:00
parent 3241bace3c
commit 644d5391bd
5 changed files with 27 additions and 21 deletions

View file

@ -29,7 +29,7 @@
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref" "reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref"
], ],
"credential_handles": [ "credential_handles": [
"secret:railiance-platform/platform-pg-backup-s3" "secret:railiance-platform/backup"
], ],
"consumers": { "consumers": {
"potential": ["rapp-postgres"], "potential": ["rapp-postgres"],

View file

@ -15,7 +15,7 @@ Object Storage policy attached, list/get succeeded. Private bucket
owner-only. Live attributes are in owner-only. Live attributes are in
`reef-storage/substrate/object-stores/platform-audit-storage.yaml`. `reef-storage/substrate/object-stores/platform-audit-storage.yaml`.
Founder set a Scaleway billing alert (email). Scaleway has no euro Founder set a Scaleway billing alert (email). Scaleway has no euro
hard-stop that refuses usage; that gap is accepted. Scoped Barman key hard-stop that refuses usage; that gap is accepted. Scoped backup key
is T04. is T04.
## Recommendation ## Recommendation
@ -61,7 +61,7 @@ workload.
- Cost alert: on the Scaleway project - Cost alert: on the Scaleway project
- Owner in inventory: `resource-control` - Owner in inventory: `resource-control`
- Attribute home: `reef-storage/substrate/object-stores/platform-audit-storage.yaml` - Attribute home: `reef-storage/substrate/object-stores/platform-audit-storage.yaml`
- Credential home (after T04): `secret:railiance-platform/platform-pg-backup-s3` - Credential home (after T04): `secret:railiance-platform/backup`
- Consumer potential: `rapp-postgres` - Consumer potential: `rapp-postgres`
- Consumer actual: none until WAL flows - Consumer actual: none until WAL flows

View file

@ -67,7 +67,7 @@ secret:<custody_repo>/<secret_id>
Example already named by the backup split: Example already named by the backup split:
```text ```text
secret:railiance-platform/platform-pg-backup-s3 secret:railiance-platform/backup
``` ```
The handle may also record `broker` (`openbao`) and `rotation` as non-secret The handle may also record `broker` (`openbao`) and `rotation` as non-secret
@ -92,9 +92,9 @@ When a record needs more than a string:
{ {
"kind": "credential_handle", "kind": "credential_handle",
"custody_repo": "railiance-platform", "custody_repo": "railiance-platform",
"secret_id": "platform-pg-backup-s3", "secret_id": "backup",
"broker": "openbao", "broker": "openbao",
"ref": "secret:railiance-platform/platform-pg-backup-s3" "ref": "secret:railiance-platform/backup"
} }
``` ```

View file

@ -220,7 +220,7 @@ noncurrent lifecycle applied, ACL owner-only. Inventory is
Operating facts live on Operating facts live on
`reef:storage/substrate/object-stores/platform-audit-storage.yaml`. `reef:storage/substrate/object-stores/platform-audit-storage.yaml`.
Founder set a Scaleway billing alert (email). Scaleway has no Founder set a Scaleway billing alert (email). Scaleway has no
euro hard-stop; that gap is accepted. Scoped Barman key remains T04. euro hard-stop; that gap is accepted. Scoped backup key remains T04.
## T04 — Establish credential custody and hand off to rapp-postgres ## T04 — Establish credential custody and hand off to rapp-postgres
@ -231,27 +231,33 @@ priority: high
state_hub_task_id: "a2dc370a-b5e7-44b1-b46a-f3b84815b14a" state_hub_task_id: "a2dc370a-b5e7-44b1-b46a-f3b84815b14a"
``` ```
Route the scoped bucket credential to `railiance-platform` through the approved Route the scoped **backup** object-store credential to
OpenBao/credential-broker lane. Permit only the bucket/prefix operations CNPG `railiance-platform` through the approved OpenBao/credential-broker
requires. Keep credential values out of Git, State Hub, shell history, logs, lane. Principal is IAM application `resource-control`; API key and
and chat. policy are `Scoped backup access`. Permit only the project-scoped
object-store operations backup consumers need. Keep credential values
out of Git, State Hub, shell history, logs, and chat.
Hand the non-secret endpoint, bucket/prefix, region, CA/TLS requirements, and Hand the non-secret endpoint, bucket/prefix, region, CA/TLS
retention parameters to `rapp-postgres`. Verify Barman's empty-WAL-archive check requirements, and retention parameters to `rapp-postgres` as the first
before enabling continuous archiving. consumer. Verify the empty-WAL-archive check before enabling continuous
archiving.
Done when credential delivery is renewable/revocable, a negative credential Done when credential delivery is renewable/revocable, a negative credential
cannot access the bucket, and `rapp-postgres` can perform the storage preflight cannot access the bucket, and `rapp-postgres` can perform the storage preflight
without disclosing a value. without disclosing a value.
Started 2026-08-14: bootstrap key cannot create IAM applications. Lane Started 2026-08-14: bootstrap key cannot create IAM applications. Lane
prepared — `CCR-2026-0012` (proposed), policy file, mason plan retargeted the same day to a general backup identity — `CCR-2026-0012`
`platform-pg-backup-s3` (draft), founder put instructions, non-secret (proposed), mason plan `backup-object-storage` (draft), founder put
destination handed at instructions, handle `secret:railiance-platform/backup`, first consumer
projection Secret `platform-pg-backup-s3`. Non-secret destination
handed at
`rapp-postgres/docs/handoff/RESOURCE-WP-0002-T04-barman-destination.md`. `rapp-postgres/docs/handoff/RESOURCE-WP-0002-T04-barman-destination.md`.
Waiting on founder: approve the CCR, mint the project-scoped IAM Waiting on founder: approve the CCR, use IAM application
application and key, put values in OpenBao, say “the Barman key is in `resource-control`, bind policy and key `Scoped backup access`, put
bao.” Do not enable WAL yet. values in OpenBao, say “the backup key is in bao.” Do not enable WAL
yet.
## T05 — Prove backup, full restore, and PITR ## T05 — Prove backup, full restore, and PITR

View file

@ -101,7 +101,7 @@ operational/credential refs or explicit gaps on every
`data/resources/` record. The proposed backup resource is the proving `data/resources/` record. The proposed backup resource is the proving
case: consumers potential = `rapp-postgres`; actual = empty until WAL case: consumers potential = `rapp-postgres`; actual = empty until WAL
flows; attribute refs wait on `reef-storage`; credential handle = flows; attribute refs wait on `reef-storage`; credential handle =
`secret:railiance-platform/platform-pg-backup-s3` once custody exists. `secret:railiance-platform/backup` once custody exists.
Done when no live record relies on undifferentiated `workload_ids` as the Done when no live record relies on undifferentiated `workload_ids` as the
only consumer list. only consumer list.