Gérer ses secrets avec OpenBao sur OpenShift

OpenBao est le fork open-source de HashiCorp Vault, né après le changement de licence de Vault en 2023. Voici comment je l'ai intégré dans notre infrastructure OpenShift chez EDF.

Pourquoi OpenBao ?

  • Licence BSL → MPL 2.0 : OpenBao reste vraiment open source
  • Compatibilité : API identique à Vault, migration transparente
  • Communauté : Gouvernance Linux Foundation

Configuration KV v2

import hvac

client = hvac.Client(url='https://openbao.cluster.local')
client.auth.kubernetes.login(
    role='portfolio-app',
    jwt=open('/var/run/secrets/kubernetes.io/serviceaccount/token').read()
)

# Lire un secret
secret = client.secrets.kv.v2.read_secret_version(
    path='portfolio/db-credentials',
    mount_point='kv'
)
db_password = secret['data']['data']['password']

CronJob de rotation

apiVersion: batch/v1
kind: CronJob
metadata:
  name: secret-rotator
spec:
  schedule: "0 2 * * 0"  # Chaque dimanche à 2h
  jobTemplate:
    spec:
      template:
        spec:
          serviceAccountName: secret-rotator-sa
          containers:
          - name: rotator
            image: python:3.12-slim
            command: ["python", "/scripts/rotate.py"]

La rotation automatique réduit drastiquement la surface d'attaque en cas de fuite de credentials.