Handle becomes secret:railiance-platform/backup. IAM application is resource-control; policy and API key are Scoped backup access.
102 lines
4.6 KiB
JSON
102 lines
4.6 KiB
JSON
{
|
|
"schema_version": "0.2",
|
|
"record_scope": "inventory",
|
|
"id": "resource:platform:audit-storage",
|
|
"financial_entity_id": "entity:railiance",
|
|
"procuring_entity_id": "entity:railiance",
|
|
"entity_gap": null,
|
|
"description": "Off-host S3-compatible object store for rapp-postgres WAL archive and physical base backups. Procured by Railiance, operated as a Scaleway-delegated substrate on reef-storage, not on reef-railiance.",
|
|
"decision": {
|
|
"status": "approved",
|
|
"chosen": "Scaleway Standard Multi-AZ nl-ams; independent secondary copy on Host Europe Backup Storage or governed Nextcloud (T06)",
|
|
"rejected": [
|
|
"Host Europe Cloud Storage as primary (S3 not confirmed orderable)",
|
|
"Hetzner Object Storage as primary (no default at-rest encryption)",
|
|
"Self-managed Garage as primary (labor and capacity lose at this workload)"
|
|
],
|
|
"approved_by": "human-financial-authority",
|
|
"approved_on": "2026-08-14",
|
|
"ref": "docs/evidence/RESOURCE-WP-0002-primary-selection-2026-08-14.md"
|
|
},
|
|
"operational_refs": [
|
|
"reef:storage/declarations/reef.yaml",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#endpoint",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#bucket",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#region",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#prefix",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#lifecycle",
|
|
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref"
|
|
],
|
|
"credential_handles": [
|
|
"secret:railiance-platform/backup"
|
|
],
|
|
"consumers": {
|
|
"potential": ["rapp-postgres"],
|
|
"actual": []
|
|
},
|
|
"resource_class": "storage",
|
|
"status": "ordered",
|
|
"management_model": "provider_managed",
|
|
"provider": {
|
|
"name": "Scaleway",
|
|
"account_ref": "reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref",
|
|
"product_ref": "scaleway-standard-multi-az",
|
|
"provider_resource_id": "railiance-platform-pg-backup"
|
|
},
|
|
"service": {
|
|
"name": "platform audit storage",
|
|
"service_id": "object-storage",
|
|
"class": "Standard Multi-AZ object storage",
|
|
"capacity_model": "elastic"
|
|
},
|
|
"location": {
|
|
"region": "nl-ams",
|
|
"country": "NL",
|
|
"failure_domains": ["provider:scaleway", "region:nl-ams", "reef:storage"],
|
|
"residency": "European Union"
|
|
},
|
|
"capacity": [
|
|
{"metric": "stored_data", "value": null, "unit": "GB", "kind": "unknown", "observed_at": null}
|
|
],
|
|
"ownership": {
|
|
"owner": "resource-control",
|
|
"environment": "production",
|
|
"workload_ids": ["rapp-postgres/platform-pg"],
|
|
"tenant_id": null,
|
|
"allocation": {
|
|
"mode": "dedicated",
|
|
"cost_attribution_key": "platform:audit-storage",
|
|
"driver": "direct-resource",
|
|
"method_version": "direct-v1"
|
|
}
|
|
},
|
|
"cost": {
|
|
"currency": "EUR",
|
|
"tax_status": "excluded",
|
|
"billing_model": "usage-based storage and egress; no commitment; Railiance self-use at delivered cost",
|
|
"commitment_ref": null,
|
|
"price_evidence": "data/providers/object-storage.json#scaleway-standard-multi-az"
|
|
},
|
|
"lifecycle": {
|
|
"proposed_on": "2026-08-10",
|
|
"ordered_on": "2026-08-14",
|
|
"commissioned_on": null,
|
|
"renews_on": null,
|
|
"cancel_by": null,
|
|
"retired_on": null,
|
|
"exit_path": "Copy and verify all Barman objects in an independent S3-compatible target, run full and PITR restore, revoke the scoped key, then delete source objects and bucket after evidence is durable."
|
|
},
|
|
"relationships": [],
|
|
"requirements": [
|
|
{"kind": "recovery", "ref": "workplans/RESOURCE-WP-0002-procure-postgres-backup-storage.md#acceptance-requirements"},
|
|
{"kind": "retention", "ref": "data/demand/platform-audit-storage.json"}
|
|
],
|
|
"evidence": [
|
|
{"kind": "provider", "ref": "https://www.scaleway.com/en/pricing/storage/", "observed_at": "2026-08-10", "authority": "Scaleway"},
|
|
{"kind": "provider", "ref": "https://www.scaleway.com/en/object-storage/", "observed_at": "2026-08-10", "authority": "Scaleway"},
|
|
{"kind": "decision", "ref": "docs/evidence/RESOURCE-WP-0002-provider-due-diligence-2026-08-10.md", "observed_at": "2026-08-10", "authority": "resource-control"},
|
|
{"kind": "decision", "ref": "docs/evidence/RESOURCE-WP-0002-primary-selection-2026-08-14.md", "observed_at": "2026-08-14", "authority": "resource-control"},
|
|
{"kind": "provider", "ref": "reef:storage/substrate/object-stores/platform-audit-storage.yaml", "observed_at": "2026-08-14", "authority": "reef-storage"}
|
|
]
|
|
}
|