Aller au contenu

PD-7 — Procédures opérationnelles HSM

Version : 1.0 Spec : PD-7-specification.md Audience : Crypto Officer, Crypto User, Infra Admin


1. Rôles et responsabilités

Rôle Identité PKCS#11 Responsabilités
Crypto Officer (CO) CO CloudHSM Initialisation cluster, gestion politique, création users
Crypto User (CU) pv-crypto-user Génération de clés, rotation, opérations privilégiées
Backend Service pv-backend-svc Signature, vérification (lecture seule sur clés)
Infra Admin Aucune Monitoring AWS Console, réseau, VPN

Règle fondamentale : Les credentials pv-crypto-user ne sont JAMAIS déployés sur le backend applicatif (INV-04, couche 2).


2. Opérations courantes

2.1 Vérifier l'état du cluster HSM

# Via AWS CLI
aws cloudhsmv2 describe-clusters --region eu-west-3 \
  --query 'Clusters[0].{State:State,Hsms:Hsms[*].{Id:HsmId,State:State,AZ:AvailabilityZone}}'

# Via CloudHSM CLI (depuis OVH VPS)
/opt/cloudhsm/bin/cloudhsm-cli cluster info

2.2 Lister les clés HSM

# Login
/opt/cloudhsm/bin/cloudhsm-cli login \
  --username pv-crypto-user \
  --password <PIN> \
  --role crypto-user

# Lister toutes les clés
/opt/cloudhsm/bin/cloudhsm-cli key list --verbose --format json

# Filtrer par label
/opt/cloudhsm/bin/cloudhsm-cli key list --filter label="pv-master-sign-2026" --format json

# Logout
/opt/cloudhsm/bin/cloudhsm-cli logout

2.3 Exécuter un inventaire d'audit

# Inventaire mensuel (INV-04 couche 6)
CLOUDHSM_CU_USER=pv-crypto-user CLOUDHSM_CU_PIN=<PIN> \
  ./scripts/hsm-audit-inventory.sh prod

3. Création de clés maîtres (Phase 4)

Prérequis

  • Procédure à 2 personnes (quorum — INV-04, couche 4)
  • Credentials pv-crypto-user disponibles (Secrets Manager)
  • VPN actif

Procédure

# Via Ansible (recommandé)
ansible-playbook -i inventory/prod/hosts.yml setup_master_keys.yml \
  --extra-vars "cloudhsm_cu_username=pv-crypto-user cloudhsm_cu_password=<PIN>"

# Manuel (si nécessaire)
/opt/cloudhsm/bin/cloudhsm-cli login --username pv-crypto-user --role crypto-user

# RSA 4096 — signature probatoire
/opt/cloudhsm/bin/cloudhsm-cli key generate-asymmetric-pair \
  --key-type-pair rsa --modulus-size-bits 4096 \
  --label "pv-master-sign-2026" --token

# AES 256 — enveloppement
/opt/cloudhsm/bin/cloudhsm-cli key generate-symmetric \
  --key-type aes --key-length-bits 256 \
  --label "pv-master-wrap-2026" --token

# RSA 4096 — TSA (RFC 3161)
/opt/cloudhsm/bin/cloudhsm-cli key generate-asymmetric-pair \
  --key-type-pair rsa --modulus-size-bits 4096 \
  --label "pv-tsa-2026" --token

/opt/cloudhsm/bin/cloudhsm-cli logout

Checklist création

  • Second opérateur valide visuellement le label avant exécution
  • Clé générée avec --token (persistante)
  • Label conforme aux patterns autorisés (§7.1.1)
  • Clé publique exportée pour vérification tierce
  • Inventaire baseline mis à jour sur S3

4. Rotation des clés (KL-02)

Procédure annuelle

  1. Créer la nouvelle clé (label avec année courante) :

    /opt/cloudhsm/bin/cloudhsm-cli key generate-asymmetric-pair \
      --key-type-pair rsa --modulus-size-bits 4096 \
      --label "pv-master-sign-2027" --token
    

  2. Marquer l'ancienne clé comme expirée :

  3. CloudHSM ne supporte pas le renommage de label
  4. Créer une entrée de métadonnée dans le registre d'audit
  5. L'ancienne clé reste dans le HSM avec son label original
  6. Le backend bascule sur la nouvelle clé via configuration

  7. Mettre à jour le backend :

    HSM_MASTER_SIGN_LABEL=pv-master-sign-2027
    

  8. Re-signer les documents si nécessaire (module rotation/ du backend)

  9. Exécuter l'inventaire d'audit pour confirmer la rotation

Checklist rotation

  • Nouvelle clé créée (quorum 2 personnes)
  • Ancienne clé préservée (KL-03 — pas de suppression)
  • Backend configuré avec le nouveau label
  • Tests de non-régression passés
  • Inventaire baseline mis à jour
  • Log de rotation dans CloudWatch

5. Test de failover (CA-06)

Procédure (PROD uniquement, avec supervision)

  1. Vérifier l'état initial :

    aws cloudhsmv2 describe-clusters --region eu-west-3
    

  2. Arrêter un HSM (via AWS Console ou CLI) :

    aws cloudhsmv2 delete-hsm --cluster-id <CLUSTER_ID> --hsm-id <HSM_ID>
    

  3. Vérifier la continuité :

  4. Les opérations PKCS#11 doivent continuer sans interruption
  5. L'alarme HSM_Critical doit se déclencher
  6. Le dashboard CloudWatch doit refléter la dégradation

  7. Restaurer le HSM :

    aws cloudhsmv2 create-hsm --cluster-id <CLUSTER_ID> \
      --availability-zone eu-west-3b
    

  8. Vérifier la synchronisation et le retour à l'état nominal


6. Gestion des credentials

Stockage

Secret Emplacement Rotation
CO password AWS Secrets Manager hsm/co Manuel (changement responsable)
CU pv-backend-svc AWS Secrets Manager / Vault ci/cloudhsm Annuelle
CU pv-crypto-user AWS Secrets Manager hsm/cu Annuelle
VPN PSK AWS Secrets Manager / Vault vpn/psk Annuelle

Rotation des credentials CU

# 1. Générer un nouveau mot de passe
NEW_PIN=$(openssl rand -base64 20)

# 2. Changer le PIN dans CloudHSM
/opt/cloudhsm/bin/cloudhsm-cli login --username pv-crypto-user --role crypto-user
/opt/cloudhsm/bin/cloudhsm-cli user change-password --username pv-crypto-user

# 3. Mettre à jour Vault / Secrets Manager
vault kv put kv/ci/cloudhsm pin="$NEW_PIN"

# 4. Redéployer le backend avec le nouveau PIN

7. Réponse aux incidents

HSM indisponible (tous les nœuds down)

  1. Vérifier la connectivité VPN (ipsec status)
  2. Vérifier l'état du cluster AWS (describe-clusters)
  3. Si cluster DOWN : créer un nouveau HSM (create-hsm)
  4. Attendre la synchronisation
  5. Vérifier les opérations PKCS#11

Alarme INV-04 (label non conforme)

  1. Immédiat : Identifier l'objet non conforme dans les logs
  2. Investigation : Déterminer qui/quand l'objet a été créé
  3. Remédiation : Supprimer l'objet si non autorisé
  4. Post-mortem : Documenter l'incident

Alarme Auth_Failure_Spike

  1. Vérifier les logs CloudWatch pour identifier l'origine
  2. Vérifier si un compte CU est verrouillé
  3. Si verrouillé : le CO peut réactiver le compte
  4. Analyser la cause (credential expiré, tentative d'intrusion)

8. Contacts

Rôle Responsable Escalade
Crypto Officer [À définir] CTO
Infra Admin [À définir] Crypto Officer
Backend Lead [À définir] CTO