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-userdisponibles (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¶
-
Créer la nouvelle clé (label avec année courante) :
-
Marquer l'ancienne clé comme expirée :
- CloudHSM ne supporte pas le renommage de label
- Créer une entrée de métadonnée dans le registre d'audit
- L'ancienne clé reste dans le HSM avec son label original
-
Le backend bascule sur la nouvelle clé via configuration
-
Mettre à jour le backend :
-
Re-signer les documents si nécessaire (module
rotation/du backend) -
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)¶
-
Vérifier l'état initial :
-
Arrêter un HSM (via AWS Console ou CLI) :
-
Vérifier la continuité :
- Les opérations PKCS#11 doivent continuer sans interruption
- L'alarme
HSM_Criticaldoit se déclencher -
Le dashboard CloudWatch doit refléter la dégradation
-
Restaurer le HSM :
-
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)¶
- Vérifier la connectivité VPN (
ipsec status) - Vérifier l'état du cluster AWS (
describe-clusters) - Si cluster DOWN : créer un nouveau HSM (
create-hsm) - Attendre la synchronisation
- Vérifier les opérations PKCS#11
Alarme INV-04 (label non conforme)¶
- Immédiat : Identifier l'objet non conforme dans les logs
- Investigation : Déterminer qui/quand l'objet a été créé
- Remédiation : Supprimer l'objet si non autorisé
- Post-mortem : Documenter l'incident
Alarme Auth_Failure_Spike¶
- Vérifier les logs CloudWatch pour identifier l'origine
- Vérifier si un compte CU est verrouillé
- Si verrouillé : le CO peut réactiver le compte
- 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 |