AWS CloudHSM 管理ユーティリティユーザーに対して 2FA が有効になっているユーザーを作成する
AWS CloudHSM 管理ユーティリティ CMU (CMU) とキーペアを使用して、2 要素認証 (2FA) が有効になっている新しい Crypto Officer (CO) ユーザーを作成します。
2FA を有効化した状態での CO ユーザー作成
-
1 つのターミナルで、以下のステップを実行します。
HSM にアクセスし、CloudHSM 管理ユーティリティにログインします。
/opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
CO としてログインし、以下のコマンドを使用して 2FA で新しいユーザー MFA を作成します。
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/authdata上記のターミナルは、この状態のままにしておきます。Enter キーを押したり、ファイル名を入力したりしないでください。
別のターミナルで、以下のステップを実行します。
-
HSM にアクセスし、CloudHSM 管理ユーティリティにログインします。
/opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
以下のコマンドを使用して、パブリックプライベートキーペアを生成します。
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
以下のコマンドを実行して、authdata ファイルからダイジェストを抽出するための JSON クエリ機能をインストールします。
sudo yum install jq
ダイジェスト値を抽出するには、まず authdata ファイル内の以下のデータを検索します。
{ "Version":"1.0", "PublicKey":"", "Data":[ { "HsmId":
<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"" } ] }注記
取得したダイジェストは base64 でエンコードされていますが、ダイジェストに署名するには、まずファイルをデコードしてから署名する必要があります。次のコマンドはダイジェストをデコードし、デコードされたコンテンツを 「digest1.bin」に保存します
cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
-
パブリックキーの内容を変換し、次に示すように「\n」を追加し、スペースを削除します。
-----BEGIN PUBLIC KEY-----\n
<PUBLIC KEY>
\n-----END PUBLIC KEY-----重要
上記のコマンドは、BEGIN PUBLIC KEY----- の直後に「\n」を追加する方法、「\n」とパブリックキーの最初の文字の間のスペースを削除する方法、-----END PUBLIC KEY の前に「\n」を追加する方法、および「\n」とパブリックキーの末尾の間のスペースを削除する方法を示しています。
これはパブリックキーの PEM 形式で、認証データファイルで受け入れられます。
パブリックキー PEM 形式のコンテンツを authdata ファイルのパブリックキーセクションに貼り付けます。
vi authdata
{ "Version":"1.0", "PublicKey":"-----BEGIN PUBLIC KEY-----\n
<"PUBLIC KEY">
\n-----END PUBLIC KEY-----", "Data":[ { "HsmId":<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":”” } ] }次のコマンドを使用してトークン ファイルに署名します。
openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64
Output Expected:<"THE SIGNATURE">
注記
上記のコマンドで示したように、署名には openssl dgst の代わりに openssl pkeyutl を使用してください。
Authdata ファイルの「署名」フィールドに署名済みダイジェストを追加します。
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=="
} ] }
-
-
最初のターミナルに戻り、
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)