管理者用クォーラム認証を使用する - AWS CloudHSM

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

管理者用クォーラム認証を使用する

HSM の管理者は、 AWS CloudHSM クラスター内の次のオペレーションのクォーラム認証を設定できます。

AWS CloudHSM クラスターがクォーラム認証用に設定されると、管理者は HSM ユーザー管理オペレーションを自分で実行できなくなります。次の例は、管理者が HSM で新しいユーザーを作成しようとしたときの出力を示しています。コマンドは失敗し、クォーラム認証が必要であることを示すエラーが表示されます。

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

HSM ユーザー管理オペレーションを実行するには、管理者は以下のタスクを完了する必要があります。

クォーラムトークンの取得

まず、管理者は CloudHSM CLI を使用してクォーラムトークンをリクエストする必要があります。

クォーラムトークンを取得するには
  1. CloudHSM CLI を起動するには、次のコマンドを使用します。

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. login コマンドを使用して、管理者としてクラスターにログインします。

    aws-cloudhsm>login --username admin --role admin
  3. quorum token-sign generate コマンドを使用してクォーラムトークンを生成します。詳細については、次の例を参照するか、または help quorum token-sign generate コマンドを使用してください。

例 – クォーラムトークンを生成する

この例では、ユーザー名を admin とする管理者のクォーラムトークンを取得し、そのトークンを admin.token というファイルに保存します。この例のコマンドを使用するには、以下の値を独自のものに置き換えてください。

  • <admin> – トークンを取得する管理者の名前。HSM にログインし、このコマンドを実行している管理者と同じであることが必要です。

  • <admin.token> – クォーラムトークンを保存するファイルの名前。

次のコマンドで、user は生成するトークンを使用できるサービス名を識別します。この場合、トークンは HSM ユーザー管理オペレーション (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" } }

quorum token-sign generate コマンドは、指定されたファイルパスでユーザーサービスのクォーラムトークンを生成します。トークンファイルは以下のように検査できます。

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

トークンファイルは、次のもので構成されます。

  • approval_data: HSM によって生成された base64 でエンコードされた raw データトークン。

  • token: base64 でエンコードされ、SHA-256 ハッシュされた approval_data のトークン

  • signatures: base64 でエンコードされた署名なしトークンの署名済みトークン (署名) の配列。承認者の各署名は JSON オブジェクトリテラルの形式になっています。

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

    各署名は、パブリックキーが HSM に登録されている承認者が、対応する RSA 2048 ビットプライベートキーを使用した結果から作成されます。

生成されたユーザーサービスのクォーラムトークンが CloudHSM クラスターに存在していることは、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" } ] } }

token-timeout-seconds 時間は、生成されたトークンの有効期限が切れる前に承認されるまでのタイムアウト時間を秒単位で示します。

承認する管理者から署名を取得する

クォーラムトークンを持つ管理者は、そのトークンを他の管理者に承認してもらう必要があります。他の管理者は、承認を与えるために、署名キーを使用してトークンを暗号で署名します。この署名は HSM 外で行われます。

トークンの署名にはさまざまな方法が使用されます。次の例では、OpenSSL を使用しています。別の署名ツールを使用する場合は、そのツールで必ず管理者のプライベートキー (署名キー) を使用してトークンの SHA-256 ダイジェストに署名します。

例 – 承認する管理者から署名を取得する

この例では、トークン (admin) を持つ管理者に少なくとも 2 つの承認が必要です。以下のコマンド例では、2 人の管理者が OpenSSL を使用してトークンに暗号で署名する方法を示します。

  1. base64 でエンコードされた署名なしトークンをデコードし、バイナリファイルに入れます。

    $echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
  2. OpenSSL と、承認者 (admin3) のそれぞれのプライベートキーを使用して、ユーザーサービスの現在のバイナリクォーラム署名なしトークンに署名し、バイナリ署名ファイルを作成します。

    $openssl pkeyutl -sign \ -inkey admin3.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in admin.bin \ -out admin.sig.bin
  3. バイナリ署名を base64 にエンコードします。

    $base64 -w0 admin.sig.bin > admin.sig.b64
  4. 最後に、承認者署名用に以前に指定した JSON オブジェクトリテラル形式に従って、base64 でエンコードされた署名をコピーしてトークンファイルに貼り付けます。

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

AWS CloudHSM クラスターでトークンを承認し、ユーザー管理オペレーションを実行する

前のセクションで説明したように、管理者は必要な承認/署名を取得すると、管理者は以下のユーザー管理オペレーションのいずれかとともにそのトークンを AWS CloudHSM クラスターに提供することができます。

これらのコマンドの詳しい使用方法については、CloudHSM CLI を使用する を参照してください。

トランザクション中、トークンは AWS CloudHSM クラスター内で承認され、リクエストされたユーザー管理オペレーションを実行します。ユーザー管理オペレーションが成功するかどうかは、承認された有効なクォーラムトークンと有効なユーザー管理オペレーションの両方に左右されます。

管理者は、トークンを 1 つのオペレーションにのみ使用できます。そのオペレーションが成功すると、トークンは無効になります。別の HSM ユーザー管理オペレーションを行うには、管理者は上記の手順を繰り返す必要があります。つまり、管理者は新しいクォーラムトークンを取得し、承認者から新しい署名を取得した後で、要求されたユーザー管理オペレーションによって HSM で新しいトークンを承認して使用する必要があります。

注記

クォーラムトークンは、現在のログインセッションが開いている間だけ有効です。CloudHSM CLI からログアウトするか、ネットワークが切断された場合、トークンは無効になります。同様に、承認されたトークンは CloudHSM CLI 内でのみ使用できます。別のアプリケーションでの認証には使用できません。

例 管理者として新規ユーザーを作成する

次の例では、ログイン中の管理者が 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" } }

その後、管理者は新しいユーザーの作成を確認する user list コマンドを入力します。

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

管理者が別の HSM ユーザー管理オペレーションを実行しようとするとクォーラム認証エラーが発生して失敗します。

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

以下に示すように、quorum token-sign list コマンドは管理者に承認されたトークンがないことを示しています。別の HSM ユーザー管理オペレーションを実行するには、管理者は新しいクォーラムトークンを生成し、承認者から新しい署名を取得し、--approval 引数を使用して目的のユーザー管理オペレーションを実行して、ユーザー管理オペレーションの実行中に承認され使用されるクォーラムトークンを供給する必要があります。

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