カスタムキーストアのトラブルシューティング - AWS Key Management Service

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

カスタムキーストアのトラブルシューティング

AWS CloudHSM キーストアは、常に使用可能で、回復力を持つように設計されています。ただし、AWS CloudHSM キーストアをオペレーション可能な状態に保つために、いくつかのエラー条件を修正しなければならない場合があります。

使用できない KMS キーを修正するには

AWS CloudHSM キーストアの AWS KMS keys のキーステータスは、通常 Enabled です。すべての KMS キーと同様、AWS CloudHSM キーストアで KMS キーを無効にするか、削除するようにスケジュールすると、キーステータスが変更されます。ただし、他の KMS キーとは異なり、カスタムキーストアの KMS キーには、Unavailableキーステータスもあります。

Unavailable のキーステータスには、KMS キーが、意図的に切断されたカスタムキーストアの内部に存在し、再接続の試み (実行している場合) に失敗したことを示しています。KMS キーは使用できませんが、KMS キーを表示および管理することはできます。ただし、暗号化オペレーションで使用することはできません。

KMS キーのキーステータスを確認するには、[Customer managed keys] (カスタマーマネージドキー) ページで、KMS キーの [Status] (ステータス) フィールドを表示します。または、 DescribeKeyオペレーションを使用して、レスポンスで KeyState要素を表示します。詳細については、「キーの表示」を参照してください。

切断されたカスタムキーストアの KMS キーは、Unavailable または PendingDeletion のキーステータスとなります。カスタムキーストアが切断されている場合でも、カスタムキーストアからの削除がスケジュールされている KMS キーのキーステータスは Pending Deletion になります。これにより、カスタムキーストアに再接続することなく、スケジュールされたキーの削除をキャンセルできます。

使用できない KMS キーを修正するには、カスタムキーストアを再接続します。カスタムキーストアを再接続すると、カスタムキーストア内の KMS キーのキーステータスは、EnabledDisabled などの以前のステータスに自動的に復元されます。削除保留中の KMS キーは PendingDeletion ステータスのままです。ただし、問題が解決しない間は、使用できない KMS キーを有効および無効にしても、キーステータスは変更されません。有効または無効のアクションは、キーが使用可能になったときにのみ適用されます。

接続の失敗に関するヘルプについては、「接続障害の修復方法」を参照してください。

失敗した KMS キーを修正するには

AWS CloudHSM キーストアで KMS キーを作成し使用する際の問題は、AWS CloudHSM カスタムキーストア、それに関連付けられた AWS CloudHSM クラスター、KMS キー、そのキーマテリアルのいずれかに起因します。

AWS CloudHSM キーストアが AWS CloudHSM クラスターから切断されると、カスタムキーストア内の KMS キーのキーステータスは Unavailable になります。切断された AWS CloudHSM キーストアに KMS キーを作成するリクエストは、すべて CustomKeyStoreInvalidStateException の例外を返します。データキーを暗号化、復号、再暗号化、または生成するすべてのリクエストは、KMSInvalidStateException 例外を返します。この問題を修正するには、AWS CloudHSM キーストアを再接続します

ただし、暗号化オペレーションのために AWS CloudHSM キーストアで KMS キーを使用する試みは、たとえキーステータスが Enabled で、AWS CloudHSM キーストアの接続ステータスが Connected であっても、失敗する場合があります。これは、以下のいずれかの条件によって発生する可能性があります。

  • KMS キーのキーマテリアルが、関連付けられた AWS CloudHSM クラスターから削除された可能性があります。調査するには、KMS キーのキーマテリアルのキーハンドルを探し、必要に応じてキーマテリアルの復旧を試みます

  • すべての HSM は、AWS CloudHSM キーストアに関連付けられた AWS CloudHSM クラスターから削除されました。暗号化オペレーションで AWS CloudHSM キーストアの KMS キーを使用するときは、その AWS CloudHSM クラスターにアクティブな HSM が 1 つ以上含まれている必要があります。AWS CloudHSM クラスター内の HSMs の数と状態を確認するには、 AWS CloudHSMコンソールまたは オペレーションを使用しますDescribeClustersHSM をクラスターに追加するには、 AWS CloudHSMコンソールまたは CreateHsmオペレーションを使用します。

  • AWS CloudHSM キーストアに関連付けられた AWS CloudHSM クラスターが削除されました。この問題を解決するには、元のクラスターのバックアップ、または元のクラスターの作成に使用されたバックアップなど、元のクラスターに関連するバックアップからクラスターを作成します。次に、カスタムキーストアの設定で、クラスター ID を編集します。手順については、「KMS キーの削除されたキーマテリアルを復旧するには」を参照してください。

  • このカスタムキーストアに関連付けられた AWS CloudHSM クラスターには、使用可能な PKCS #11 セッションがありません。通常これは、トラフィックの処理に追加のセッションが必要な大規模なバーストトラフィックが起きている間に発生します。PKCS #11 セッションに関するエラーメッセージで KMSInternalException に応答するときは、リクエストをいったん取り消してから、改めて試行します。

接続障害の修復方法

AWS CloudHSM クラスターに AWS CloudHSM キーストアを接続しようとしてオペレーションに失敗すると、AWS CloudHSM キーストアの接続ステータスは FAILED に変わります。AWS CloudHSM キーストアの接続状態を確認するには、 AWS KMSコンソールまたは DescribeCustomKeyStoresオペレーションを使用します。

また、簡単に検出できるクラスター設定エラーが原因で接続の試行がすぐに失敗することがあります。この場合、接続ステータスは DISCONNECTED のままです。これらのエラーは、試行が失敗した理由を説明するエラーメッセージまたは 例外 を返します。例外の内容とクラスターの要件を確認し、問題を修正し、必要に応じてAWS CloudHSM キーストアを更新したら、再度接続を実行します。

接続状態が の場合FAILEDDescribeCustomKeyStoresオペレーションを実行し、レスポンスで ConnectionErrorCode要素を確認します。

注記

AWS CloudHSM キーストアの接続ステータスが FAILED の場合は、再度接続を試みる前に AWS CloudHSM カスタムキーストアを切断します。接続ステータスが FAILED の AWS CloudHSM キーストアは、接続できません。

暗号化オペレーションの失敗に対応するには

カスタムキーストアで KMS キーを使用する暗号化オペレーションは、KMSInvalidStateException で失敗することがあります。次のエラーメッセージには KMSInvalidStateException が関連することがあります。

KMS は CloudHSM クラスターと通信できません。これは一時的なネットワークの問題である可能性があります。このエラーが繰り返し表示される場合は、AWS CloudHSM クラスターの VPC のネットワーク ACL とセキュリティグループルールが正しいことを確認してください。
  • これは HTTPS 400 エラーですが、一時的なネットワークの問題が原因である可能性があります。対応するには、まずリクエストを再試行します。それでも失敗する場合は、ネットワークコンポーネントの設定を調べます。このエラーはほとんどの場合、発信トラフィックをブロックしているファイアウォールルールや VPC セキュリティグループルールなど、ネットワークコンポーネントの誤った設定が原因です。

kmsuser がロックアウトされているため、KMS は AWS CloudHSM クラスターと通信できません。このエラーが繰り返し表示される場合は、AWS CloudHSM キーストアの接続を解除して、kmsuser アカウントのパスワードをリセットしてください。カスタムキーストアの kmsuser のパスワードを更新して、リクエストを再試行してください。

無効な kmsuser 認証情報の修正方法

AWS CloudHSM キーストアを接続すると、AWS KMSが、関連付けられた AWS CloudHSM クラスターに kmsuser Crypto User (CU) としてログインします。このログインは、AWS CloudHSM キーストアが切断されるまで維持されます。DescribeCustomKeyStores レスポンスは、次の例に示すように、INVALID_CREDENTIALSFAILEDConnectionErrorCode の値の ConnectionState を示します。

AWS CloudHSM キーストアを切断して kmsuser パスワードを変更すると、AWS KMS は、AWS CloudHSM クラスターに kmsuser CU アカウントの認証情報でログインすることができなくなります。その結果、AWS CloudHSM キーストアへの接続の試みはすべて失敗します。DescribeCustomKeyStores レスポンスは、次の例に示すように、INVALID_CREDENTIALSFAILEDConnectionErrorCode の値の ConnectionState を示します。

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore { "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "INVALID_CREDENTIALS" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ], }

また、誤ったパスワードでクラスターにログインしようとして 5 回失敗すると、AWS CloudHSM はユーザーアカウントをロックします。このクラスターにログインするには、アカウントのパスワードを変更する必要があります。

AWS KMS が kmsuser CU としてクラスターにログインしようとしてロックアウトのレスポンスを受け取った場合、AWS CloudHSM キーストアへの接続リクエストは失敗します。DescribeCustomKeyStores レスポンスには、次の例に示すようにUSER_LOCKED_OUTConnectionStateFAILEDConnectionErrorCodeの値が含まれます。

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore { "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "USER_LOCKED_OUT" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ], }

これらの条件を修復するには、次の手順を実行します。

  1. AWS CloudHSM キーストアを切断します

  2. DescribeCustomKeyStores オペレーションを実行し、レスポンスの ConnectionErrorCode要素の値を表示します。

    • ConnectionErrorCode の値が INVALID_CREDENTIALS の場合は、kmsuser アカウントの現在のパスワードを特定します。必要に応じて、cloudhsm_mgmt_util で changePswd コマンドを使用して、パスワードを既知の値に設定します。

    • ConnectionErrorCode 値が USER_LOCKED_OUT の場合、cloudhsm_mgmt_util で changePswd コマンドを使用して kmsuser パスワードを変更する必要があります。

  3. kmsuser パスワード設定を編集して、クラスター内の現在の kmsuser パスワードと一致させます。このアクションは、AWS KMS にクラスターにログインするために使用するパスワードを指示します。クラスターの kmsuser パスワードは変更されません。

  4. カスタムキーストアを接続します

孤立したキーマテリアルを削除する方法

AWS CloudHSM キーストアから KMS キーを削除することをスケジュールした場合、対応するキーマテリアルを、関連付けられた AWS CloudHSM クラスターから手動で削除しなければならなくなることがあります。

AWS CloudHSM キーストアで KMS キーを作成すると、AWS KMS は AWS KMS で KMS キーメタデータを作成し、関連付けられた AWS CloudHSM クラスターでキーマテリアルを生成します。AWS CloudHSM キーストアで KMS キーの削除をスケジュールすると、待機期間の後、AWS KMS が KMS キーメタデータを削除します。その後、AWS KMS は、AWS CloudHSM クラスターから対応するキーマテリアルを可能な限り削除します。AWS CloudHSM キーストアから切断されていたり kmsuser パスワードが変更されていたりするなどして AWS KMS がクラスターにアクセスできない場合、この試みは失敗する可能性があります。AWS KMS は、クラスターのバックアップからキーマテリアルを削除することはありません。

AWS KMS は、クラスターからキーマテリアルを削除しようと試みた結果を AWS CloudTrail ログの DeleteKey イベントエントリに報告します。この結果は、次のエントリ例に示されているように、additionalEventData 要素の backingKeysDeletionStatus 要素に表示されます。エントリには、KMS キー ARN、AWS CloudHSM クラスター ID、およびキーマテリアルのキーハンドル (backing-key-id) が含まれます。

{ "eventVersion": "1.08", "userIdentity": { "accountId": "111122223333", "invokedBy": "AWS Internal" }, "eventTime": "2021-12-10T14:23:51Z", "eventSource": "kms.amazonaws.com", "eventName": "DeleteKey", "awsRegion": "eu-west-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "additionalEventData": { "customKeyStoreId": "cks-1234567890abcdef0", "clusterId": "cluster-1a23b4cdefg", "backingKeys": "[{\"keyHandle\":\"01\",\"backingKeyId\":\"backing-key-id\"}]", "backingKeysDeletionStatus": "[{\"keyHandle\":\"16\",\"backingKeyId\":\"backing-key-id\",\"deletionStatus\":\"FAILURE\"}]" }, "eventID": "c21f1f47-f52b-4ffe-bff0-6d994403cf40", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333", "managementEvent": true, "eventCategory": "Management" }

関連する AWS CloudHSM クラスターからキーマテリアルを削除するには、次のような手順を使用します。この例では、AWS CLI および AWS CloudHSM コマンドラインツールを使用していますが、CLI の代わりに AWS Management Console を使用することもできます。

  1. AWS CloudHSM キーストアがまだ切断されていなければ切断し、切断してログインする方法 の説明に従って key_mgmt_util にログイン します。

  2. クラスター内の HSM から キーを削除するには、key_mgmt_util の DeleteKey コマンドを使用します。

    例えば、このコマンドは、クラスターの HSM 262162 からキーを削除します。キーハンドルは CloudTrail ログエントリに表示されます。

    Command: deleteKey -k 262162 Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
  3. key_mgmt_util からログアウトし、ログアウトして再接続する方法 の説明に従って AWS CloudHSM キーストアを再接続します。

KMS キーの削除されたキーマテリアルを復旧するには

AWS KMS key のキーマテリアルが削除された場合、KMS キーは使用できず、KMS キーで暗号化されたすべての暗号文は復号できません。こうしたことは、AWS CloudHSM キーストアにある KMS キーのキーマテリアルが、関連付けられた AWS CloudHSM クラスターから削除された場合に発生します。ただし、キーマテリアルを復元することは可能な場合もあります。

AWS CloudHSM キーストアで AWS KMS key (KMS キー) を作成すると、AWS KMS が、関連付けられた AWS CloudHSM クラスターにログインし、KMS キーのキーマテリアルを作成します。また、パスワードを、それのみが知っている値に変更し、AWS CloudHSM キーストアが接続されている間だけログイン状態を維持します。キー所有者、つまりキーを作成した CU のみがキーを削除できるため、誤って HSM からキーが削除されることはありません。

ただし、KMS キーのキーマテリアルがクラスター内の HSM から削除されると、KMS キーのキーステータスは最終的に UNAVAILABLE に変わります。暗号化オペレーションに KMS キーを使用しようとすると、KMSInvalidStateException の例外によりオペレーションは失敗します。最も重大なのは、KMS キーで暗号化されたデータが復号できないことです。

特定の状況では、キーマテリアルを含む バックアップからクラスターを作成することで、 削除されたキーマテリアルを回復できます。この方法は、キーが存在していて削除される前に少なくとも 1 つのバックアップが作成された場合にのみ機能します。

キーマテリアルを復旧するには、次の手順を実行します。

  1. キーマテリアルが格納されているクラスターバックアップを見つけます。バックアップには、クラスターとその暗号化されたデータをサポートするために必要なすべてのユーザーとキーも含まれている必要があります。

    DescribeBackups オペレーションを使用して、クラスターのバックアップを一覧表示します。バックアップのタイムスタンプを使用すると、バックアップの選択に役立ちます。AWS CloudHSM キーストアに関連付けられているクラスターへの出力を制限するには、次の例のように Filters パラメータを使用します。

    $ aws cloudhsmv2 describe-backups --filters clusterIds=<cluster ID> { "Backups": [ { "ClusterId": "cluster-1a23b4cdefg", "BackupId": "backup-9g87f6edcba", "CreateTimestamp": 1536667238.328, "BackupState": "READY" }, ... ] }
  2. 選択したバックアップからクラスタを作成します。バックアップに削除されたキーおよびクラスターに必要な他のユーザーとキーが含まれていることを確認します。

  3. AWS CloudHSM キーストアを切断すればそのプロパティを編集できます。

  4. AWS CloudHSM キーストアのクラスター ID を編集します。バックアップから作成したクラスターのクラスター ID を入力します。クラスターは元のクラスターとバックアップ履歴を共有するため、新しいクラスター ID が有効である必要があります。

  5. AWS CloudHSM キーストアを再接続します

kmsuser としてログインする方法

AWS CloudHSM キーストアの AWS CloudHSM クラスターでキーマテリアルを作成し管理するとき、AWS KMS は kmsuser Crypto User (CU) アカウントを使用します。クラスターに kmsuser CU アカウントを作成して、AWS CloudHSM カスタムキーストアを作成するときにそのパスワードを AWS KMS に入力します。

一般的に、AWS KMS は kmsuser アカウントを管理します。ただし、一部のタスクでは、AWS CloudHSM キーストアを切断し、kmsuser CU としてクラスターにログインして、cloudhsm_mgmt_util と key_mgmt_util コマンドラインツールを使用する必要があります。

注記

カスタムキーストアが切断されている間は、カスタムキーストアで KMS キーを作成したり、暗号化オペレーションで既存の KMS キーを使用したりする試みはすべて失敗します。このオペレーションにより、ユーザーが機密データを保存したりアクセスしたりすることを防ぐことができます。

このトピックでは、AWS CloudHSM キーストアを切断して kmsuser としてログインし、AWS CloudHSM コマンドラインツールを実行し、AWS CloudHSM キーストアからログアウトして再度接続する方法について説明します。

切断してログインする方法

関連するクラスターに kmsuser CU としてログインする必要があるたびに、次の手順を実行します。

  1. AWS CloudHSM キーストアがまだ切断されていなければ、切断します。AWS KMS コンソールまたは AWS KMS API を使用できます。

    AWS CloudHSM キーが接続されている間、AWS KMS は kmsuser としてログインします。これにより、kmsuser としてログインしたり、kmsuser パスワードを変更することができなくなります。

    例えば、このコマンドは DisconnectCustomKeyStoreを使用してサンプルキーストアを切断します。例にある AWS CloudHSM キーストア ID を、有効な ID に置き換えます。

    $ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
  2. cloudhsm_mgmt_util を起動します。AWS CloudHSM ユーザーガイドPrepare to run cloudhsm_mgmt_util セクションで説明されている手順に従います。

  3. Crypto Officer (CO) として AWS CloudHSM クラスターの cloudhsm_mgmt_util にログインします。

    例えば、このコマンドは admin という名前の CO としてログインします。CO ユーザー名とパスワードの例を有効な値に置き換えます。

    aws-cloudhsm>loginHSM CO admin <password> loginHSM success on server 0(10.0.2.9) loginHSM success on server 1(10.0.3.11) loginHSM success on server 2(10.0.1.12)
  4. changePswd コマンドを使用して、kmsuser アカウントのパスワードを自分が知っているパスワードに変更します (AWS KMS は、AWS CloudHSM キーストアに接続するときにパスワードをローテーションします)。パスワードは 7〜32 の英数字で構成する必要があります。大文字と小文字が区別され、特殊文字を含めることはできません。

    例えば、このコマンドは、kmsuser パスワードを tempPassword に変更します。

    aws-cloudhsm>changePswd CU kmsuser tempPassword *************************CAUTION******************************** This is a CRITICAL operation, should be done on all nodes in the cluster. Cav server does NOT synchronize these changes 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)?y Changing password for kmsuser(CU) on 3 nodes
  5. 設定したパスワードを使用して、key_mgmt_util または cloudhsm_mgmt_util に kmsuser としてログインします。詳細な手順については、「 cloudhsm_mgmt_util の使用開始」および「key_mgmt_utilの使用開始」を参照してください。使用するツールは、タスクによって異なります。

    例えば、このコマンドは key_mgmt_util にログインします。

    Command: loginHSM -u CU -s kmsuser -p tempPassword Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

ログアウトして再接続する方法

  1. タスクを実行し、コマンドラインツールからログアウトします。ログアウトしないと、AWS CloudHSM キーストアへの再接続は失敗します。

    Command: logoutHSM Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
  2. カスタムキーストアの kmsuser パスワード設定を編集します

    これにより、クラスターの kmsuser の現在のパスワードが AWS KMS に通知されます。このステップを省略すると、AWS KMS は kmsuser としてクラスターにログインできなくなり、カスタムキーストアの再接続がすべて失敗します。AWS KMS コンソールまたは UpdateCustomKeyStoreオペレーションの KeyStorePasswordパラメータを使用できます。

    例えば、このコマンドは現在のパスワードが AWS KMS あることを tempPassword に通知します。例のパスワードを実際のパスワードに置き換えます。

    $ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password tempPassword
  3. AWS KMS キーストアを AWS CloudHSM クラスターに再接続します。例にある AWS CloudHSM キーストア ID を、有効な ID に置き換えます。接続処理中に、AWS KMS は kmsuser パスワードを、それだけが知っている値に変更します。

    ConnectCustomKeyStore オペレーションは迅速に返されますが、接続プロセスには長時間かかる場合があります。最初のレスポンスは、接続プロセスの成功を示していません。

    $ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
  4. DescribeCustomKeyStores オペレーションを使用して、 AWS CloudHSM キーストアが接続されていることを確認します。例にある AWS CloudHSM キーストア ID を、有効な ID に置き換えます。

    この例では、接続ステータスのフィールドには AWS CloudHSM キーストアが接続済みであると示されています。

    $ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ], }