Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions k8s/bases/infrastructure/vault-config/job.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,9 @@ spec:
path "secret/data/infrastructure/ghcr/*" {
capabilities = ["create", "update", "read"]
}
path "secret/data/infrastructure/velero/*" {
capabilities = ["create", "update", "read"]
}
path "secret/data/apps/fleetdm/*" {
capabilities = ["create", "update", "read"]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
# unrecoverable -- even if the R2 bucket is intact.
#
# This PushSecret one-way mirrors the password to OpenBao at
# infrastructure/backup/velero-repo so it survives a cluster rebuild.
# infrastructure/velero/repo so it survives a cluster rebuild without
# sharing the broadly readable backup-object credential prefix.
# OpenBao durability today comes from Velero snapshotting the openbao
# namespace (including its PVC) to R2 on the daily schedule -- the
# password lands in the off-cluster backup alongside every other
Expand Down Expand Up @@ -35,5 +36,5 @@ spec:
- match:
secretKey: repository-password
remoteRef:
remoteKey: infrastructure/backup/velero-repo
remoteKey: infrastructure/velero/repo

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Generated by the Agentic Engineer

[P1] Remove the old Vault key after copying it

Changing remoteKey makes ESO start writing the repository password at the new path, but a PushSecret does not migrate or delete the existing KV-v2 entry at infrastructure/backup/velero-repo. On the existing production OpenBao instance, that old entry therefore remains readable through the broad infra-backup-readonly policy, so the backup decryption key is still exposed to the audience this change intends to remove. Add an explicit one-time migration that verifies the new copy and then permanently removes the old key's versions and metadata before treating the isolation as complete.

Reviewed at 222643b4c550cb8683be77aa36d60c6543cc541f.

property: repository-password
Loading