翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CloudHSM クラスターのクォーラム認証を設定した後、キーにクォーラム値が関連付けられている場合、Crypto User は HSM キー管理または使用オペレーションを自分で実行できません。このトピックでは、Crypto-user が HSM キー管理またはキー使用オペレーションを実行するための一時トークンを取得する方法について説明します。
注記
各クォーラムトークンは 1 回のオペレーションで有効です。そのオペレーションが成功すると、トークンは無効になり、crypto-user は新しいトークンを取得する必要があります。クォーラムトークンは、現在のログインセッション中にのみ有効です。CloudHSM CLI からログアウトした場合、またはネットワークが切断された場合、トークンは無効になり、新しいトークンを取得する必要があります。CloudHSM トークンは CloudHSM CLI 内でのみ使用できます。別のアプリケーションでの認証には使用できません。
次の例は、クォーラム認証が設定された後、Crypto-user が HSM でクォーラム関連キーを使用して署名を作成しようとするときの出力を示しています。コマンドは Quorum Failed
エラーで失敗します。つまり、クォーラム認証が失敗しました。
aws-cloudhsm >
crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz
{ "error_code": 1, "data": "Quorum Failed" }
暗号ユーザーは、HSM でキー管理またはキー使用オペレーションを実行するための一時トークンを取得するには、次のタスクを完了する必要があります。
ステップ 1. クォーラムトークンの取得
-
CloudHSM CLI を起動します。
$
/opt/cloudhsm/bin/cloudhsm-cli interactive
-
クラスターに crypto-user としてログインします。
aws-cloudhsm >
login --username
--passwordcrypto_user1
--role crypto-userpassword123
この例では、
crypto-user
ロールを使用して CloudHSM CLIcrypto_user1
にサインインします。これらの値を独自の値に置き換えます。{ "error_code": 0, "data": { "username": "crypto_user1", "role": "crypto-user" } }
-
quorum token-sign generate コマンドを使用してクォーラムトークンを生成します。
次のコマンドで、 は生成するトークンを使用するサービス名
key-usage
を識別します。この場合、トークンはキー使用オペレーション (key-usage
サービス) 用です。この例では、--filter
フラグを使用してトークンを特定のキーに関連付けます。aws-cloudhsm >
quorum token-sign generate --service key-usage --token
</path/crypto_user1.token>
--filter attr.label=rsa-private-key-example{ "error_code": 0, "data": { "path": "/home/crypto_user1.token" } }
この例では、ユーザー名 を持つ crypto-user のクォーラムトークンを取得し
crypto_user1
、そのトークンを という名前のファイルに保存しますcrypto_user1.token
。この例のコマンドを使用するには、以下の値を独自のものに置き換えてください。quorum token-sign generate コマンドは、指定されたファイルパスでキー使用サービスのクォーラムトークンを生成します。トークンファイルを調べることができます。
$
cat
</path/crypto_user1.token>
{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [] }
トークンファイルは、次のもので構成されます。
-
service: トークンが関連付けられているクォーラムサービスの識別子。
-
key_reference: このクォーラムトークンが関連付けられているキーの識別子。
-
approval_data: HSM によって生成された base64 でエンコードされた raw データトークン。
-
token: base64 でエンコードされ、SHA-256 ハッシュされた approval_data のトークン
-
signatures: 署名なしトークンの base64 でエンコードされた署名付きトークン (署名) の配列。各承認者の署名は、JSON オブジェクトリテラルの形式です。
{ "username": "
<APPROVER_USERNAME>
", "role": "<APPROVER_ROLE>
", "signature": "<APPROVER_RSA2048_BIT_SIGNATURE>
" }各署名は、パブリックキーが HSM に登録された対応する RSA 2048 ビットプライベートキーを使用して承認者の結果から作成されます。
-
-
新しいユーザーサービスクォーラムトークンを検証します。quorum token-sign list コマンドは、トークンが CloudHSM に存在することを確認します。
aws-cloudhsm >
quorum token-sign list
{ "error_code": 0, "data": { "tokens": [ { "username": "crypto_user", "service": "key-usage", "key-reference": "0x0000000000680006", "minimum-token-count": 2 } ] } }
は、クラスター内の 1 つの HSM から取得されたユーザー名、サービス、およびキーリファレンスに対応するキートークンの最小使用可能数の集約クラスタービュー
minimum-token-count
を表示します。例えば、2-HSM クラスターの場合、クラスター内の最初の HSM
0x0000000000680006
から参照して キーcrypto_user1
に対してユーザーによって生成された 2 つの (2) キー使用トークンを受け取り、クラスター内の他の HSM0x0000000000680006
から参照して キーcrypto_user1
に対してユーザーによって生成された 1 つの (1) キー使用トークンを受け取ると、 が表示されます"minimum-token-count": 1
。
ステップ 2. 暗号化ユーザーの承認から署名を取得する
クォーラムトークンを持つ Crypto User は、他の Crypto User によってトークンが承認されている必要があります。承認するために、他の Crypto =-users は署名キーを使用して HSM の外部でトークンに暗号で署名します。
トークンの署名にはさまざまな方法が使用されます。次の例は、OpenSSL
この例では、トークン (crypto-user
) を持つ Crypto-user には、少なくとも 2 つの (2) 承認が必要です。次のコマンド例は、2 人の (2) 暗号ユーザーが OpenSSL を使用してトークンに暗号で署名する方法を示しています。
-
base64 でエンコードされた署名なしトークンをデコードし、バイナリファイルに入れます。
$
echo -n '5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=' | base64 -d > crypto_user1.bin
-
OpenSSL と承認者のプライベートキーを使用して、ユーザーサービスのバイナリクォーラム署名なしトークンに署名し、バイナリ署名ファイルを作成します。
$
openssl pkeyutl -sign \ -inkey crypto_user1.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in crypto_user1.bin \ -out crypto_user1.sig.bin
-
バイナリ署名を base64 にエンコードします。
$
base64 -w0 crypto_user1.sig.bin > crypto_user1.sig.b64
-
承認者の署名に前に指定した JSON オブジェクトリテラル形式を使用して、base64 でエンコードされた署名をコピーしてトークンファイルに貼り付けます。
{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [ { "username": "crypto_user1", "role": "crypto-user", "signature": "wa7aPzmGwBjcEoZ6jAzYASp841AfgOvcI27Y/tGlCj1E9DawnFw5Uf0IJT2Ca7T5XD2ThVkUi0B+dhAomdqYNl6aUUFrJyH9GBJ+E0PmA5jNVm25tzeRWBJzneTg4/zTeE2reNqrHFHicWnttQLe9jS09J1znuDGWDe0HaBKWUaz2gUInJRqmeXDsZYdSvZksrqUH5dci/RsaDE2+tGiS9g0RcIkFbsPW4HpGe2e5HVzGsqrV8O3PKlYQv6+fymfcNTTuoxKcHAkOjpl43QSuSIu2gVq7KI8mSmmWaPJL47NPjmcBVB5vdEQU+oiukaNfLJr+MoDKzAvCGDg4cDArg==" }, { "username": "crypto_user2", "role": "crypto-user", "signature": "wa7aPzmGwBjcEoZ6jAzYASp841AfgOvcI27Y/tGlCj1E9DawnFw5Uf0IJT2Ca7T5XD2ThVkUi0B+dhAomdqYNl6aUUFrJyH9GBJ+E0PmA5jNVm25tzeRWBJzneTg4/zTeE2reNqrHFHicWnttQLe9jS09J1znuDGWDe0HaBKWUaz2gUInJRqmeXDsZYdSvZksrqUH5dci/RsaDE2+tGiS9g0RcIkFbsPW4HpGe2e5HVzGsqrV8O3PKlYQv6+fymfcNTTuoxKcHAkOjpl43QSuSIu2gVq7KI8mSmmWaPJL47NPjmcBVB5vdEQU+oiukaNfLJr+MoDKzAvCGDg4cDArg==" } ] }
ステップ 3. CloudHSM; クラスターでトークンを承認し、オペレーションを実行する
暗号ユーザーが必要な承認と署名を取得したら、そのトークンをキー管理またはキー使用オペレーションとともに CloudHSM クラスターに提供できます。
キーオペレーションが、クォーラムトークンに関連付けられた適切なクォーラムサービスに対応していることを確認します。詳細については、サポートされているサービスとタイプ を参照してください。
トランザクション中、トークンは AWS CloudHSM クラスター内で承認され、リクエストされたキーオペレーションを実行します。キーオペレーションの成功は、有効な承認済みクォーラムトークンと有効なキーオペレーションの両方に左右されます。
例 RSA-PKCS メカニズムを使用して署名を生成する
次の例では、ログインしている crypto-user が HSM にキーを持つ署名を作成します。
aws-cloudhsm >
crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz --approval /path/crypto_user1.token
{ "error_code": 0, "data": { "key-reference": "0x0000000000640007", "signature": "h6hMqXacBrT3x3MXV13RXHdQno0+IQ6iy0kVrGzo23+eoWT0ZZgrSpBCu5KcuP6IYYHw9goQ5CfPf4jI1nO5m/IUJtF1A1lmcz0HjEy1CJ7ICXNReDRyeOU8m43dkJzt0OUdkbtkDJGAcxkbKHLZ02uWsGXaQ8bOKhoGwsRAHHF6nldTXquICfOHgSd4nimObKTqzUkghhJW5Ot5oUyLMYP+pZmUS38ythybney94Wj6fzYOER8v7VIY5ijQGa3LfxrjSG4aw6QijEEbno5LSf18ahEaVKmVEnDBL54tylCJBGvGsYSY9HNhuJoHPgiDL/TDd2wfvP4PaxbFRyyHaw==" } }
暗号化ユーザーが同じトークンで別の HSM キー使用オペレーションを実行しようとすると、失敗します。
aws-cloudhsm >
crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz --approval /home/crypto_user1.token
{ "error_code": 1, "data": "Quorum approval is required for this operation" }
別の HSM キーオペレーションを実行するには、暗号ユーザーが新しいクォーラムトークンを生成し、承認者から新しい署名を取得し、--approval 引数を使用して目的のキーオペレーションを実行してクォーラムトークンを指定する必要があります。
を使用してquorum token-sign list、使用可能なトークンを確認します。この例では、Crypto-user に承認されたトークンがないことを示しています。
aws-cloudhsm >
quorum token-sign list
{ "error_code": 0, "data": { "tokens": [] } }