Uso de la autenticación de cuórum para administradores - AWS CloudHSM

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de la autenticación de cuórum para administradores

Un administrador del HSM puede configurar la autenticación de quórum para las siguientes operaciones del clúster: AWS CloudHSM

Una vez configurado el AWS CloudHSM clúster para la autenticación de quórum, los administradores no pueden realizar las operaciones de administración de usuarios del HSM por sí mismos. El siguiente ejemplo muestra el resultado cuando un administrador intenta crear un usuario nuevo en el HSM. La ejecución del comando devuelve un error, indicando la obligatoriedad de la autenticación de cuórum.

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

Para realizar una operación de administración de usuarios de HSM, un administrador debe completar las siguientes tareas:

Cómo obtener un token de cuórum

En primer lugar, el administrador deberá usar la CLI de CloudHSM para solicitar un token de cuórum.

Para obtener un token de cuórum
  1. Use el siguiente comando para iniciar la CLI de CloudHSM.

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. Ejecute el comando login e inicie sesión en el clúster como administrador.

    aws-cloudhsm>login --username admin --role admin
  3. Utilice el comando quorum token-sign generate para generar un token de cuórum. Para obtener más información, consulte el siguiente ejemplo o utilice el comando help quorum token-sign generate.

ejemplo : genera un token de cuórum.

Este ejemplo obtiene un token de cuórum para el administrador con nombre de usuario admin y guarda el token en un archivo denominado admin.token. Para utilizar el comando de ejemplo, sustituya estos valores por los suyos:

  • <admin>: el nombre del administrador que obtiene el token. Debe ser el mismo administrador que ha iniciado sesión en el HSM y está ejecutando este comando.

  • <admin.token>: el nombre del archivo que se debe utilizar para almacenar el token de cuórum.

En el siguiente comando, user identifica el nombre del servicio para el que puede utilizar el token que está obteniendo. En este caso, el token es para las operaciones de administración de usuarios de HSM (servicio user).

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" } }

El comando quorum token-sign generate genera un token de cuórum de servicio de usuario en la ruta de archivo especificada. El archivo del token se puede inspeccionar:

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

El archivo del token consta de lo siguiente:

  • approval_data: un token de datos base64 sin procesar generado por el HSM.

  • token: un token de approval_data codificado en base64 y con hash SHA-256

  • signatures: un conjunto de tokens firmados (firmas) y codificados en base64 del token sin firmar, donde cada firma de un aprobador tiene la forma de un objeto JSON literal:

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

    La firma se crea cuando un aprobador usa su correspondiente clave privada RSA de 2048 bits cuya clave pública se ha registrado en el HSM.

Se puede confirmar que el token de cuórum del servicio de usuario generado existe en el clúster de CloudHSM ejecutando el comando 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" } ] } }

El tiempo token-timeout-seconds indica el tiempo de espera en segundos para que un token generado se apruebe antes de que caduque.

Obtención de firmas de los administradores responsables de la aprobación

Un administrador que tiene un token de cuórum debe obtener la aprobación del token de otros administradores. Para dar su aprobación, los otros administradores utilizan su clave de firma para firmar criptográficamente el token. Lo hacen fuera del HSM.

Existen muchas maneras diferentes de firmar el token. El siguiente ejemplo muestra cómo hacerlo con OpenSSL. Para utilizar otra herramienta de firma, asegúrese de que la herramienta utiliza la clave privada del administrador (clave de firma) para firmar un resumen SHA-256 del token.

ejemplo : obtenga firmas de los administradores responsables de la aprobación.

En este ejemplo, el administrador que tiene el token (admin) necesita al menos dos (2) aprobaciones. Los siguientes comandos de ejemplo muestran cómo dos (2) administradores pueden utilizar OpenSSL para firmar el token criptográficamente.

  1. Decodifique el token sin firmar codificado en base64 e introdúzcalo en un archivo binario:

    $echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
  2. Use OpenSSL y la clave privada correspondiente del aprobador (admin3) para firmar el token sin firmar de cuórum, ahora binario, para el servicio de usuario y crear un archivo de firma binaria:

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

    $base64 -w0 admin.sig.bin > admin.sig.b64
  4. Por último, copie y pegue la firma codificada en base64 en el archivo de token, siguiendo el formato literal del objeto JSON especificado anteriormente para la firma del aprobador:

    { "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==" } ] }

Apruebe el token del AWS CloudHSM clúster y ejecute una operación de administración de usuarios

Una vez que el administrador cuente con las aprobaciones o firmas necesarias, tal y como se detalla en la sección anterior, puede proporcionar ese token al clúster de AWS CloudHSM junto con una de las siguientes operaciones de administración de usuarios:

Para obtener más información acerca del uso de estos comandos, consulte Utilización de la CLI de CloudHSM.

Durante la transacción, el token se aprobará dentro del AWS CloudHSM clúster y ejecutará la operación de administración de usuarios solicitada. El éxito de la operación de administración de usuarios depende, por un lado, de un token de cuórum válido y aprobado y, por otro, de una operación de administración de usuarios válida.

El administrador puede utilizar el token para una sola operación. Cuando dicha operación se realiza correctamente, el token ya no es válido. Para realizar otra operación de administración de usuarios de HSM, el administrador deberá repetir el proceso anteriormente descrito. Es decir, el administrador debe generar un nuevo token de cuórum, obtener firmas nuevas de los aprobadores y usar el token nuevo en el HSM con la administración de usuarios solicitada.

nota

El token de cuórum solo será válido mientras se mantenga la sesión actual iniciada. Si cierra sesión en la CLI de CloudHSM o si la red se desconecta, el token perderá su validez. Del mismo modo, un token autorizado solo puede usarse en la CLI de CloudHSM. No puede usarse para autenticarse en una aplicación diferente.

ejemplo Creación de un nuevo usuario como administrador

En el siguiente ejemplo, un administrador conectado crea un nuevo usuario en el 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" } }

A continuación, el administrador introduce el comando user list para confirmar la creación del nuevo usuario:

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 el administrador intenta realizar otra operación de administración de usuarios de HSM, da error con un error de autenticación de cuórum.

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

Como se muestra a continuación, el comando quorum token-sign list muestra que el administrador no tiene ningún token aprobado. Para realizar otra operación de administración de usuarios de HSM, el administrador debe generar un nuevo token de cuórum, conseguir nuevas firmas de los aprobadores y ejecutar la operación de administración de usuarios deseada con el argumento --approval, para proporcionar el token de cuórum que se aprobará y consumirá durante la ejecución de la operación de administración de usuarios.

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