Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling で、暗号化された Amazon マシンイメージ (AMI) または暗号化されたボリュームを使用してインスタンスを起動できませんでした。Amazon EC2 Auto Scaling を作成した AWS アイデンティティおよびアクセス管理 (IAM) アイデンティティには管理者権限があります。
簡単な説明
Amazon EC2 Auto Scaling は、他の AWS ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html) サービスを呼び出すために必要なアクセス権限として、[サービスにリンクされたロールを使用します。SLR の権限はハードコーディングされているため変更できません。Amazon EC2 Auto Scaling SLR に渡されるデフォルトのアクセス権限には、AWS Key Management Service (AWS KMS) キーにアクセスするためのアクセス権限は含まれていません。
Amazon EC2 Auto Scaling を使用して Amazon Elastic Block Store (Amazon EBS) ボリュームまたは AMI を暗号化するには、 AWS マネージドキー または カスタマーマネージドキー を使用してください。Amazon EC2 Auto Scaling では、AWS マネージドキーを使用するための追加のアクセス権限は必要ありません。ただし、Amazon EC2 Auto Scaling SLR には、お客様が管理するキーを使用する追加のアクセス権限が必要です。
解決策
次の例では、デフォルトの Amazon EC2 Auto Scaling SLR AWSServiceRoleForAutoScaling を使用していますが、独自のロール名を作成することもできます。
AWS KMSアカウントではなく、Amazon EC2 Auto Scaling グループを所有するアカウントからAWS KMS 付与を作成する必要があります。詳細については、「AWS KMS の権限付与」を参照してください。
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください。
Amazon EC2 Auto Scaling は、同じ AWS アカウントにある顧客管理型のキーを使用します。
指示に従ってキーポリシーを変更し、次のステートメント例を追加します。
**注:****123456789012 ** を Amazon EC2 オートスケーリンググループがデプロイされているアカウント ID に置き換えてください。
{ "Sid": "Allow service-linked role use of the KMS",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
]
},
"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::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
]
},
"Action": [
"kms:CreateGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
Amazon EC2 Auto Scaling は、外部の AWS アカウントにあるお客様が管理するキーを使用します
-
指示に従ってキーポリシーを変更 します。外部の AWS アカウントにある IAM エンティティが CreateGrant API アクションを実行できるように、キーポリシーを変更します。
{ "Sid": "Allow external account 111122223333 use of the KMS",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:root"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources in external account 111122223333",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:root"
]
},
"Action": [
"kms:CreateGrant"
],
"Resource": "*"
}
-
Amazon EC2 Auto Scaling グループを所有する AWS アカウントの IAM エンティティの認証情報で AWS CLI コマンド create-grant を使用します。
**注:****444455556666 ** を KMS キーが存在するアカウント ID に置き換えてください。
$ aws kms create-grant --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling --operations Decrypt GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant
IAM エンティティに CreateGrant API アクションを実行する権限があることを確認してください。CreateGrant 権限がない場合は、IAM エンティティに添付されているポリシーに次のステートメントを追加します。
{ "Sid": "AllowCreationOfGrantForTheKMSinExternalAccount444455556666",
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d"
}
関連情報
Amazon EC2 Auto Scaling のサービスにリンクされたロール
暗号化されたボリュームで使用するために必要な KMS キーポリシー