カスタム AWS KMS キーを使用して暗号化された EBS ボリュームを作成またはアタッチできないのはなぜですか?
最終更新日: 2020 年 9 月 1 日
AWS Key Management Service (AWS KMS) カスタマーマネージドキーで暗号化されたスナップショットからの暗号化された Amazon Elastic Block Store (Amazon EBS) ボリュームを作成またはアタッチできないのはなぜですか?
簡単な説明
スナップショットと、それを暗号化するために使用したカスタム KMS キーが同じアカウントにあり、キーポリシーからのアクセス許可が欠落している場合、暗号化されたスナップショットから暗号化された EBS ボリュームを作成できない、またはそれをアタッチできない場合があります。KMS キーポリシーで、AWS Identity and Access Management (IAM) ユーザーまたはロールが許可されていることを確認してください。
解決方法
AWS CloudTrail Event 履歴を使用して、ポリシーから欠落しているアクセス許可を特定する
1. CloudTrail コンソールを開きます。
2. [Event history] (イベント履歴) をクリックしてから、時間範囲に AttachVolume または CreateVolume API コールが実行された頃の 15 分間を入力します。
3. フィルターで [Event source] (イベントソース) を選択してから、kms.amazonaws.com と入力します。
4. 結果がロードされたら、コンソールの右上にある [Download] (ダウンロード) ボタンをクリックして、[Download CSV] (CSV 形式でダウンロード) を選択します。
5. 先ほどダウンロードしたファイルを開き、AccessDenied で Error code (エラーコード) 列をフィルタリングします。AccessDenied エラーコードを伴うすべての Event name (イベント名) は、欠落している許可であることがほとんどです。
注意: CloudTrail イベントは、[Event history] (イベント履歴) タブに表示されるまで最大 15 分かかります。CreateVolume または AttachVolume の失敗ステータスを受け取った直後に [Events history] (イベント履歴) をチェックしても、イベントが表示されていない場合があります。
欠落している許可を特定したら、以下の解決策を使用して問題を解決します。
KMS キーポリシーに、ボリュームをアタッチまたは作成しようとしている IAM ユーザーまたはロールが含まれていることを確認する
AWS KMS コンソールのデフォルトビューから以下を行います。
1. AWS KMS コンソールを開きます。
2. [カスタマー管理のキー] をクリックし、該当するキーを選択します。
3. [Key policy] (キーポリシー) で、[Key users] (キーユーザー) までスクロールダウンします。[Key users] (キーユーザー) セクションに、ボリュームの作成に使用している IAM ユーザーまたはロールがリストされていることを確認します。
4. [Key users] (キーのユーザー) セクションにユーザーまたはロールが表示されない場合は、[Add] (追加) をクリックした後、ユーザーまたはロールを選択した上で [Add] (追加) をクリックします。
AWS KMS コンソールのポリシービュービューから以下を行います。
注意: これまでに AWS KMS キーポリシーを手動で編集したことがあった場合、キーポリシーはポリシー (JSON) ビューのみで表示できます。必要な AWS KMS 許可を付与するため、ステートメントの Principal として IAM ユーザーまたはロールの ARN をリストするようにしてください。
例: キーポリシー以下の例は、Key1 に対する UserA のアクセスを許可する KMS キーポリシーです。
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
...
},
{
"Sid": "Allow access for Key Administrators",
...
},
{
"Sid": "Allow use of the keys",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/UserA"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/UserA"
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
}
]
}