fix(velero): isolate kopia repository password - #2735
Conversation
|
|
@cursor review |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_f5cf639b-3269-441e-a310-25a4a7bc14dd) |
devantler
left a comment
There was a problem hiding this comment.
🤖 Generated by the Agentic Engineer
Static exact-head review of 222643b4c550cb8683be77aa36d60c6543cc541f; the branch was not checked out or executed.
| secretKey: repository-password | ||
| remoteRef: | ||
| remoteKey: infrastructure/backup/velero-repo | ||
| remoteKey: infrastructure/velero/repo |
There was a problem hiding this comment.
🤖 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.
Motivation
repository-passwordinto the sharedinfrastructure/backup/*OpenBao prefix, which co-located backup ciphertext access credentials and the decryption key and thereby allowed any principal with the broad backup-read policy to decrypt backups offline.Description
infrastructure/backup/velero-repoto a dedicatedinfrastructure/velero/repopath so the Kopia password is not placed under the shared backup prefix.secret/data/infrastructure/velero/*to the seed-write policy block so PushSecret seeding retains write access to the new, more specific location without widening the existing backup-read policy.Testing
git diff --checkand it reported no whitespace or patch errors; the check passed.python3 scripts/validate-naming.pyandpython3 scripts/validate-embedded-json.pyand both validations passed.kubectl kustomizeandksail workload validatewere not executed in this environment becausekubectlandksailare not installed, so a full schema-awareksailvalidation was not performed here.Codex Task