Installation Manual - 53 Vault R1 build custody and auth

Replacement Vault R1 build, custody proof, Kubernetes auth, and MinIO admin blocker.

This chapter records the automated continuation of the single-phase v7 Vault replacement.

The work built and validated the replacement Vault, then stopped before MinIO credential rotation because MinIO admin custody was not available from the current access path.

Governance

FieldValue
IssueOP-GF-VAULTRECOVERY-1 / #389
MilestoneWorkspace Governance
ADRADR 0028: Greenfield Vault Replacement After Custody Loss
Existing controlsADR 0016 and ADR 0025

Replacement VMs

VMIPMACRole
gf-ocp-vault-r1-seed-0130.30.200.3452:54:00:70:08:34Seed/transit Vault
gf-ocp-vault-r1-0130.30.200.3552:54:00:70:08:35Main Vault Raft voter
gf-ocp-vault-r1-0230.30.200.3652:54:00:70:08:36Main Vault Raft voter
gf-ocp-vault-r1-0330.30.200.3752:54:00:70:08:37Main Vault Raft voter

vault.v7.comptech-lab.com was not changed.

Custody

New local custody:

secrets/greenfield-vault-r1/

Backup custody:

dl385-2:/home/ze/greenfield-ocp-work-folder/secrets/greenfield-vault-r1/

The backup custody directory is mode 700. Do not print token values, recovery shares, private keys, kubeconfigs, or MinIO credentials.

Vault Validation

Seed Vault:

  • initialized;
  • unsealed;
  • storage type raft;
  • file audit enabled;
  • transit enabled.

Main Vault:

  • initialized;
  • transit auto-unsealed;
  • storage type raft;
  • three voters;
  • Autopilot healthy;
  • failure tolerance 1;
  • file audit enabled;
  • secret/ KV v2 enabled.

A restart of gf-ocp-vault-r1-02 returned it to unsealed standby, proving transit auto-unseal for a main follower.

Kubernetes Auth

The valid v7 kubeconfigs are on the bootstrap VM:

/home/ze/ocp-greenfield-deployment/artifacts/openshift/hub-dc-v7/auth/kubeconfig
/home/ze/ocp-greenfield-deployment/artifacts/openshift/spoke-dc-v7/auth/kubeconfig

Replacement Vault auth was configured for hub and spoke ESO:

ClusterAuth mountRolePolicy
hub-dc-v7kubernetes-hub-dc-v7eso-secretshub-dc-v7-eso-secrets
spoke-dc-v7kubernetes-spoke-dc-v7eso-secretsspoke-dc-v7-eso-secrets

Smoke reads passed:

hub-dc-v7 k8s-auth smoke-read ok
spoke-dc-v7 k8s-auth smoke-read ok

OADP Role Prepared

The replacement Vault now has dedicated future OADP policies and roles:

ClusterRolePolicy
hub-dc-v7oadp-backuphub-dc-v7-oadp-backup
spoke-dc-v7oadp-backupspoke-dc-v7-oadp-backup

The policies are scoped to:

secret/greenfield/object-storage/minio/users/oadp-backup

The role expects the future service account:

openshift-adp/oadp-vault-auth

Hard Stop

MinIO admin custody was not available.

Findings:

  • MinIO health is OK.
  • mc exists on dl385-2.
  • The discovered gf-local credential is not admin-capable.
  • mc admin info returned Access Denied.
  • SSH to the physical MinIO host 30.30.200.1 as ze returned Permission denied.

No MinIO user, bucket, policy, access key, or secret key was changed.

Actions Not Taken

  • No stable DNS cutover.
  • No vault-r1 DNS record creation.
  • No old Vault mutation.
  • No GitOps desired-state change.
  • No persistent OpenShift mutation.
  • No OADP reapply.
  • No MinIO mutation.
  • No secret values were printed.

Next Action

Restore or provide a MinIO admin-capable path. Then rotate or recreate the oadp-backup credential, seed replacement Vault, add OADP GitOps store resources, and re-run the DPA gate.