Utilisation de l'authentification par quorum pour les administrateurs - AWS CloudHSM

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de l'authentification par quorum pour les administrateurs

Un administrateur du HSM peut configurer l'authentification par quorum pour les opérations suivantes dans le AWS CloudHSM cluster :

Une fois le AWS CloudHSM cluster configuré pour l'authentification par quorum, les administrateurs ne peuvent pas effectuer eux-mêmes les opérations de gestion des utilisateurs HSM. L'exemple suivant montre la sortie lorsqu'un administrateur tente de créer un nouvel utilisateur sur le HSM. La commande échoue avec une erreur indiquant que l'authentification par quorum est requise.

aws-cloudhsm > user create --username user1 --role crypto-user Enter password: Confirm password: { "error_code": 1, "data": "Quorum approval is required for this operation" }

Pour effectuer une opération de gestion d'utilisateur HSM, un administrateur doit exécuter les tâches suivantes :

Obtention d'un jeton de quorum

Tout d'abord, l'administrateur doit utiliser la CLI CloudHSM pour demander un jeton de quorum.

Pour obtenir un jeton de quorum
  1. Utilisez la commande suivante pour démarrer la CLI CloudHSM.

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. Utilisez la commande login et connectez-vous au cluster en tant qu'administrateur.

    aws-cloudhsm>login --username admin --role admin
  3. Utilisez la commande quorum token-sign generate pour générer un jeton de quorum. Pour plus d'informations, consultez l'exemple suivant ou utilisez la commande help quorum token-sign generate.

Exemple — Génère un jeton de quorum

Cet exemple obtient un jeton de quorum pour l’administrateur avec le nom d'utilisateur admin et enregistre le jeton dans un fichier nommé admin.token. Pour utiliser l'exemple de commande, remplacez ces valeurs par les vôtres :

  • <admin> — Le nom de l'administrateur qui reçoit le jeton. Il doit s'agir du même administrateur que celui qui est connecté au HSM et qui exécute cette commande.

  • <admin.token> – Le nom du fichier à utiliser pour stocker le jeton de quorum.

Dans la commande suivante, user identifie le nom de service pour lequel vous pouvez utiliser le jeton que vous générez. Dans ce cas, le jeton concerne les opérations de gestion des utilisateurs HSM (user service). .

aws-cloudhsm > login --username <ADMIN> --role <ADMIN> --password <PASSWORD> { "error_code": 0, "data": { "username": "admin", "role": "admin" } } aws-cloudhsm > quorum token-sign generate --service user --token </path/admin.token> { "error_code": 0, "data": { "path": "/home/tfile" } }

La commande quorum token-sign generate génère un jeton de quorum de service utilisateur sur le chemin de fichier spécifié. Le fichier du jeton peut être inspecté :

$cat </path/admin.token> { "version": "2.0", "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA", "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=", "signatures": [] }

Le chemin d'accès au fichier se compose des éléments suivants :

  • approval_data : jeton de données brutes codé en base64 généré par le HSM.

  • jeton : jeton codé en base64 et haché SHA-256 du approval_data

  • signatures : tableau de jetons signés codés en base64 (signatures) du jeton non signé, où chaque signature d'un approbateur prend la forme d'un objet JSON littéral :

    { "username": "<APPROVER_USERNAME>", "signature": "<APPROVER_RSA2048_BIT_SIGNATURE>" }

    Chaque signature est créée à partir du résultat d'un approbateur utilisant sa clé privée RSA 2048 bits correspondante dont la clé publique a été enregistrée auprès du HSM.

L'existence du jeton de quorum du service utilisateur généré peut être confirmée sur le cluster CloudHSM en exécutant la commande quorum token-sign list :

aws-cloudhsm > quorum token-sign list { "error_code": 0, "data": { "tokens": [ { "username": "admin", "service": "user", "approvals-required": { "value": 2 }, "number-of-approvals": { "value": 0 }, "token-timeout-seconds": { "value": 597 }, "cluster-coverage": "full" } ] } }

L’heure token-timeout-seconds indique le délai d'expiration en secondes pour qu'un jeton généré soit approuvé avant son expiration.

Obtention des signatures des administrateurs en charge de l'approbation

Un administrateur qui possède un jeton de quorum doit obtenir le jeton approuvé par d'autres administrateurs. Pour donner leur approbation, les autres administrateurs utilisent leur clé de signature pour signer le jeton de façon cryptographique. Ils le font en dehors du module HSM.

Il existe de nombreuses façons différentes de signer le jeton. L'exemple suivant montre comment procéder avec OpenSSL. Pour utiliser un autre outil de signature, assurez-vous que l'outil utilise la clé privée de l’administrateur (clé de signature) pour signer un hachage SHA-256 du jeton.

Exemple - Obtention des signatures des administrateurs en charge de l'approbation

Dans cet exemple, l’administrateur qui possède le jeton (admin) a besoin d'au moins deux (2) approbations. L'exemple de commandes suivant montrent comment deux (2) administrateurs peuvent utiliser OpenSSL pour signer le jeton de manière cryptographique.

  1. Décodez le jeton non signé codé en base64 et placez-le dans un fichier binaire :

    $echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
  2. Utilisez OpenSSL et la clé privée correspondante de l'approbateur (admin3) pour signer le jeton non signé du quorum désormais binaire pour le service utilisateur et créer un fichier de signature binaire :

    $openssl pkeyutl -sign \ -inkey admin3.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in admin.bin \ -out admin.sig.bin
  3. Encodez la signature binaire en base64 :

    $base64 -w0 admin.sig.bin > admin.sig.b64
  4. Enfin, copiez et collez la signature codée en base64 dans le fichier de jeton, en suivant le format littéral d'objet JSON spécifié précédemment pour la signature de l'approbateur :

    { "version": "2.0", "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA", "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=", "signatures": [ { "username": "admin2", "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw==" }, { "username": "admin3", "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw==" } ] }

Approuver le jeton sur le AWS CloudHSM cluster et exécuter une opération de gestion des utilisateurs

Une fois qu'un administrateur a obtenu les approbations/signatures nécessaires, comme indiqué dans la section précédente, il peut fournir ce jeton au cluster AWS CloudHSM avec l'une des opérations de gestion des utilisateurs suivantes :

Pour plus d'informations sur l'utilisation de ces commandes, consultez Utilisation de la CLI CloudHSM.

Au cours de la transaction, le jeton sera approuvé au sein du AWS CloudHSM cluster et exécutera l'opération de gestion des utilisateurs demandée. Le succès de l'opération de gestion des utilisateurs dépend à la fois d'un jeton de quorum approuvé valide et d'une opération de gestion des utilisateurs valide.

L’administrateur peut utiliser le jeton pour une seule opération. Lorsque cette opération réussit, le jeton n'est plus valide. Pour effectuer une autre opération de gestion des utilisateurs HSM, l'administrateur doit répéter le processus décrit ci-dessus. C’est-à-dire que l’administrateur doit générer un nouveau jeton de quorum, obtenir de nouvelles signatures des approbateurs et approuver et consommer le nouveau jeton sur le HSM avec l’opération de gestion des utilisateurs demandée.

Note

Le jeton de quorum n'est valide que tant que votre session de connexion en cours est ouverte. Si vous vous déconnectez de la CLI CloudHSM ou si le réseau se déconnecte, le jeton n'est plus valide. De même, un jeton autorisé ne peut être utilisé que dans la CLI CloudHSM. Il ne peut pas être utilisé pour s'authentifier dans une autre application.

Exemple Création d'un nouvel utilisateur en tant qu'administrateur

Dans l'exemple suivant, un administrateur connecté crée un utilisateur sur le HSM.

aws-cloudhsm > user create --username user1 --role crypto-user --approval /path/admin.token Enter password: Confirm password: { "error_code": 0, "data": { "username": "user1", "role": "crypto-user" } }

L'administrateur saisit ensuite la commande user list pour confirmer la création du nouvel utilisateur :

aws-cloudhsm > user list{ "error_code": 0, "data": { "users": [ { "username": "admin", "role": "admin", "locked": "false", "mfa": [], "quorum": [ { "strategy": "token-sign", "status": "enabled" } ], "cluster-coverage": "full" }, { "username": "admin2", "role": "admin", "locked": "false", "mfa": [], "quorum": [ { "strategy": "token-sign", "status": "enabled" } ], "cluster-coverage": "full" }, { "username": "admin3", "role": "admin", "locked": "false", "mfa": [], "quorum": [ { "strategy": "token-sign", "status": "enabled" } ], "cluster-coverage": "full" }, { "username": "admin4", "role": "admin", "locked": "false", "mfa": [], "quorum": [ { "strategy": "token-sign", "status": "enabled" } ], "cluster-coverage": "full" }, { "username": "user1", "role": "crypto-user", "locked": "false", "mfa": [], "quorum": [], "cluster-coverage": "full" }, { "username": "app_user", "role": "internal(APPLIANCE_USER)", "locked": "false", "mfa": [], "quorum": [], "cluster-coverage": "full" } ] } }

Si l’administrateur essaie d'effectuer une autre opération de gestion de l'utilisateur HSM, l'opération échoue avec une erreur d'authentification par quorum :

aws-cloudhsm > user delete --username user1 --role crypto-user { "error_code": 1, "data": "Quorum approval is required for this operation" }

Comme indiqué ci-dessous, la commande quorum token-sign list indique que l'administrateur n'a aucun jeton approuvé. Pour effectuer une autre opération de gestion des utilisateurs HSM, l'administrateur doit générer un nouveau jeton de quorum, obtenir de nouvelles signatures de la part des approbateurs et exécuter l'opération de gestion des utilisateurs souhaitée avec l'argument --approval pour fournir le jeton de quorum à approuver et à utiliser pendant l'exécution de l'opération de gestion des utilisateurs.

aws-cloudhsm > quorum token-sign list { "error_code": 0, "data": { "tokens": [] } }