ConfigMaps et Secrets 20 min de lecture

Secrets pour les donnees sensibles

Qu'est-ce qu'un Secret ?

Les Secrets stockent des donnees sensibles (mots de passe, tokens, cles SSH) encodees en base64.

Creer un Secret

kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=secret123

Secret YAML

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  username: YWRtaW4=  # base64 de "admin"
  password: c2VjcmV0MTIz  # base64 de "secret123"

Encoder en base64

echo -n "admin" | base64
echo -n "secret123" | base64

Utiliser un Secret

spec:
  containers:
  - name: app
    image: myapp
    env:
    - name: DB_USER
      valueFrom:
        secretKeyRef:
          name: db-secret
          key: username
    - name: DB_PASS
      valueFrom:
        secretKeyRef:
          name: db-secret
          key: password

Secret TLS

kubectl create secret tls tls-secret --cert=cert.pem --key=key.pem

Bonnes pratiques de securite

  • Activez le chiffrement at-rest pour etcd
  • Utilisez RBAC pour limiter l'acces aux Secrets
  • Envisagez des solutions externes (Vault, AWS Secrets Manager)
  • Ne committez jamais de Secrets dans Git
Important : Les Secrets ne sont que encodes en base64, pas chiffres par defaut. Activez le chiffrement etcd en production.