コピーした AMI から EC2 インスタンスを起動できない理由は何ですか?

所要時間2分
0

Amazon マシンイメージ (AMI) を別の AWS アカウントまたは AWS リージョンにコピーしました。ただし、コピーした AMI から Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動することはできません。

簡単な説明

以下の権限がない場合は、暗号化された Amazon Elastic Block Store (Amazon EBS) を使用してコピーした AMI からインスタンスを起動することはできません。

  • AWS Key Management Service (AWS KMS) のカスタマーマネージドキーポリシーに、リクエストしたアカウントが AMI にアクセスすることを許可する正しいプリンシパルがありません。
  • リクエスト元アカウントの AWS Identity and Access Management (IAM) エンティティには、ボリュームのクロスアカウント AWS KMS キーに必要な AWS KMS のアクセス権限がありません。

解決策

コピーした AMI の既存 AWS KMS カスタムキーへのクロスアカウントアクセスを有効にする

詳細な手順については、「Share custom encryption keys more securely between accounts by using AWS Key Management Service」を参照してください。

EC2 インスタンスが AWS KMS キーにアクセスできるように権限を設定する

1.    AWS KMS コンソールを開きます。
注: 正しいリージョンに設定されていることを確認してください。

2.    [カスタマーマネージドキー] を選択し、適切なキーを選択します。

3.    [キーポリシー] で、[キーユーザー] までスクロールします。[キーユーザー] セクションに、キーへのアクセスを必要とする内部および外部のすべてのアカウントとユーザーが一覧表示されていることを確認します。

4.    [キーユーザー] セクションにアカウントまたはユーザーが見つからない場合は、[キーポリシー][ポリシービューへの切り替え] を選択します。
注: AWS KMS キーポリシーを手動で編集した場合、キーポリシーはポリシー (JSON) ビューでのみ使用できます。

5.    キーポリシー中のキーの使用の許可ステートメントが正しいことを確認します。ステートメントには、キーへのアクセスを必要とするすべてのアカウントとユーザーの ARN を含める必要があります。

以下は、デフォルトキーポリシーの**「キーの使用を許可」**ステートメントの抜粋の例です。この例には次の ARN が含まれています。

  • コピーした AMI を含む外部 AWS アカウント。
  • AMI の親アカウント。
  • 外部アカウント内のユーザー。

デフォルトキーポリシー全体の概要と例については、「デフォルトのキーポリシー」を参照してください。

{
	"Sid": "Allow use of the key",
	"Effect": "Allow",
	"Principal": {
		"AWS": [
			"arn:aws:iam::111122223333:root",
			"arn:aws:iam::444455556666:root",
			"arn:aws:iam::111122223333: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::111122223333:root",
			"arn:aws:iam::444455556666:root",
			"arn:aws:iam::111122223333:user/UserA"
		]
	},
	"Action": [
		"kms:CreateGrant",
		"kms:ListGrants",
		"kms:RevokeGrant"
	],
	"Resource": "*",
	"Condition": {
		"Bool": {
			"kms:GrantIsForAWSResource": "true"
		}
	}
}]
}

6.    IAM ポリシーを作成して割り当てます。

IAM ポリシーを作成し、IAM ユーザーまたはグループにアタッチする

IAM ポリシーを作成して IAM ユーザーまたはグループにアタッチするには、次の手順を実行します。

注: IAM ポリシーをすでに作成している場合は、ステップ 7 に進んでポリシーをアタッチします。 

1.    管理者権限を持つユーザーで IAM コンソールを開きます。

2.    **[ポリシー]**を選択します。

3.    [ポリシーを作成] を選択します。

4.    [JSON] タブを選択します。次の JSON ポリシーの例をコピーし、JSON テキストボックスに入力します。arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE を AWS KMS キーの ARN に置き換えてください。

{
	"Version": "2012-10-17",
	"Statement": [{
		"Sid": "AllowUseOfTheKey",
		"Effect": "Allow",
		"Action": ["kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey"],
		"Resource": ["arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE"]
	}, {
		"Sid": "AllowAttachmentOfPersistentResources",
		"Effect": "Allow",
		"Action": ["kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant"],
		"Resource": ["arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE"],
		"Condition": {
			"Bool": {
				"kms:GrantIsForAWSResource": true
			}
		}
	}]
}

5.    [ポリシーの確認] を選択します。ポリシー検証ツールが、すべての構文エラーを報告します。

6.    [確認] ページで、ポリシー名として KmsKeyUsagePolicy と入力します。ポリシーの概要を確認してポリシーが付与する権限を確認し、[ポリシーの作成] を選択してポリシーを保存します。新しいポリシーが管理ポリシーのリストに表示され、IAM ユーザーまたはグループにアタッチできるようになります。

7.    IAM コンソールのナビゲーションペインで、[ポリシー] を選択します。

8.    検索ボックスに KmsKeyUsagePolicy と入力します。次に、KmsKeyUsagePolicy の横にあるチェックボックスをオンにします。

9.    [ポリシーアクション] を選択し、[アタッチ] を選択します。

10.   [フィルター][ユーザー] を選択します。

11.    検索ボックスに、ユーザー名を入力します。次に、ユーザー名の横にあるチェックボックスをオンにします。

12.    [ポリシーのアタッチ] をクリックします。

関連情報

AMI のコピー

キーの編集

チュートリアル: はじめてのカスタマー管理ポリシーの作成とアタッチ

IAM ポリシーの検証

AWS公式
AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ