Criar usuários com 2FA habilitada para usuários do AWS CloudHSM Management Utility
Use o AWS CloudHSM Management Utility (CMU) e o par de chaves para criar um novo usuário responsável pela criptografia com a autenticação de dois fatores (2FA) habilitada.
Para criar usuários de CO com 2FA habilitado
-
Em um terminal, execute as seguintes etapas:
Acesse seu HSM e faça login no utilitário de gerenciamento do CloudHSM:
/opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
Faça login como CO e use o comando a seguir para criar um novo usuário do MFA com 2FA:
aws-cloudhsm>createUser CO MFA
*************************CAUTION********************************This is a CRITICAL operation, should be done on all nodes in the cluster. AWS does NOT synchronize these changes automatically with the nodes on which this operation is not executed or failed, please ensure this operation is executed on all nodes in the cluster. **************************************************************** Do you want to continue(y/n)? yCreating User exampleuser3(CO) on 1 nodesAuthentication data written to: "/home/ec2-user/authdata"Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below.Leave this field blank to use the path initially provided.Enter filename:<CO USER NAME>
-2fa /home/ec2-user/authdataDeixe o terminal acima nesse estado. Não pressione enter nem insira nenhum nome de arquivo.
Em outro terminal, execute as seguintes etapas:
-
Acesse seu HSM e faça login no utilitário de gerenciamento do CloudHSM:
/opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
Gere um par de chaves público-privado usando os seguintes comandos:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
Execute o comando a seguir para instalar um recurso de consulta json para extrair o resumo do arquivo authdata:
sudo yum install jq
Para extrair o valor do resumo, primeiro encontre os seguintes dados no arquivo authdata:
{ "Version":"1.0", "PublicKey":"", "Data":[ { "HsmId":
<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"" } ] }nota
O resumo obtido é codificado em base64. No entanto, para assinar o resumo, primeiro você precisa que o arquivo seja decodificado e depois assinado. O comando a seguir decodificará o resumo e armazenará o conteúdo decodificado em “digest1.bin”
cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
-
Converta o conteúdo da chave pública, adicionando "\n" e removendo espaços conforme mostrado aqui:
-----BEGIN PUBLIC KEY-----\n
<PUBLIC KEY>
\n-----END PUBLIC KEY-----Importante
O comando acima mostra como "\n" é adicionado imediatamente depois de BEGIN PUBLIC KEY-----, os espaços entre "\n" e o primeiro caractere da chave pública são removidos, "\n" é adicionado antes -----END PUBLIC KEY e os espaços são removidos entre "\n" e o final da chave pública.
Esse é o formato PEM para chave pública aceito no arquivo authdata.
Cole o conteúdo do formato pem da chave pública na seção de chave pública no arquivo authdata.
vi authdata
{ "Version":"1.0", "PublicKey":"-----BEGIN PUBLIC KEY-----\n
<"PUBLIC KEY">
\n-----END PUBLIC KEY-----", "Data":[ { "HsmId":<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":”” } ] }Assine um arquivo de token usando o seguinte comando:
openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64
Output Expected:<"THE SIGNATURE">
nota
Conforme mostrado no comando acima, use openssl pkeyutl em vez de openssl dgst para assinar.
Adicione o resumo assinado no arquivo Authdata no campo “Assinatura”.
vi authdata
{ "Version": "1.0", "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----", "Data": [ { "HsmId":
<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"Kkdl ... rkrvJ6Q=="
}, { "HsmId":<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"K1hxy ... Q261Q=="
} ] }
-
-
Volte para o primeiro terminal e pressione
Enter
:Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below. Leave this field blank to use the path initially provided. Enter filename: >>>>> Press Enter here createUser success on server 0(10.0.1.11)