暗号化されたボリュームで使用するために必要な AWS KMS キーポリシー - Amazon EC2 Auto Scaling

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

暗号化されたボリュームで使用するために必要な AWS KMS キーポリシー

Amazon EC2 Auto Scaling は、サービスにリンクされたロールを使用して、アクセス許可を他の に委任します AWS のサービス。Amazon EC2 Auto Scaling のサービスにリンクされたロールは事前定義されており、Amazon EC2 Auto Scaling が AWS のサービス ユーザーに代わって他の を呼び出すために必要なアクセス許可が含まれています。事前定義されたアクセス許可には、 へのアクセスも含まれます AWS マネージドキー。ただし、顧客管理キーへのアクセスは含まれていないため、これらのキーを完全に制御できます。

このトピックでは、Amazon EBS暗号化にカスタマーマネージドキーを指定するときに Auto Scaling インスタンスを起動するために必要なキーポリシーを設定する方法について説明します。

注記

Amazon EC2 Auto Scaling では、アカウントの暗号化されたボリュームを保護するためにデフォルトを使用する AWS マネージドキー ための追加の承認は必要ありません。

概要

Amazon EC2 Auto Scaling がインスタンスを起動するときに AWS KMS keys 、Amazon EBS暗号化に以下を使用できます。

  • AWS マネージドキー – Amazon がEBS作成、所有、管理するアカウントの暗号化キー。これは、新しいアカウントのデフォルトの暗号化キーです。 AWS マネージドキー は、カスタマーマネージドキーを指定しない限り、暗号化に使用されます。

  • カスタマーマネージドキー – 作成、所有、管理するカスタム暗号化キー。詳細については、デベロッパーガイドの「AWS Key Management Service キーの作成」を参照してください。

    注:キーは対称である必要があります。Amazon EBSは、非対称カスタマーマネージドキーをサポートしていません。

カスタマーマネージド型キーは、暗号化されたスナップショットを作成するとき、または暗号化されたボリュームを指定する起動テンプレートを作成するとき、またはデフォルトで暗号化を有効にするときに設定します。

キーポリシーを設定する

KMS キーには、Amazon EC2 Auto Scaling がカスタマーマネージドキーで暗号化された Amazon EBSボリュームでインスタンスを起動できるようにするキーポリシーが必要です。

このページの例を使用して、Amazon EC2 Auto Scaling にカスタマーマネージドキーへのアクセスを許可するキーポリシーを設定します。カスタマー管理型 キーのキーポリシーは、キーの作成時または後で変更できます。

Amazon EC2 Auto Scaling を操作するには、少なくとも 2 つのポリシーステートメントをキーポリシーに追加する必要があります。

  • 最初のステートメントでは、 Principal要素で指定された IAM ID がカスタマーマネージドキーを直接使用できます。これには AWS KMS Encrypt、 キーに対して Decrypt、、GenerateDataKey*ReEncrypt*DescribeKeyオペレーションを実行するアクセス許可が含まれます。

  • 2 番目のステートメントでは、 Principal要素で指定された IAM ID が CreateGrantオペレーションを使用して、独自のアクセス許可のサブセットを AWS KMS または別のプリンシパルと統合された に委任 AWS のサービス する許可を生成できます。これにより、それらのサービスはお客様に代わって、キーを使用して、暗号化されたリソースを作成できるようになります。

キーポリシーに新しいポリシーステートメントを追加する場合は、ポリシーの既存のステートメントを変更しないでください。

次の各例では、キー ID やサービスにリンクされたロールの名前など、置き換える必要がある引数は次のように表示されます。user placeholder text。 ほとんどの場合、サービスにリンクされたロールの名前を Amazon EC2 Auto Scaling サービスにリンクされたロールの名前に置き換えることができます。

詳細については、以下のリソースを参照してください。

例 1: カスタマー管理キーへのアクセスを許可するキーポリシーセクション

次の 2 つのポリシーステートメントをカスタマーマネージドキーのキーポリシーに追加し、例をキーへのアクセスが許可されている適切なサービスにリンクされたロールARNARNの に置き換えます。この例では、ポリシーセクションは、カスタマーマネージドキーを使用するAWSServiceRoleForAutoScalingアクセス許可という名前のサービスにリンクされたロールを付与します。

{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id: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::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

例 2: カスタマー管理キーへのクロスアカウントアクセスを許可するキーポリシーセクション

カスタマー管理キーを Auto Scaling グループとは異なるアカウントで作成する場合は、キーへのクロスアカウントアクセスを許可するキーポリシーと組み合わせてグラントを使用する必要があります。

これには 2 つのステップがあり、以下の順序で完了する必要があります。

  1. まず、カスタマー管理キーのキーポリシーに以下の 2 つのポリシーステートメントを追加します。例をARN他のアカウントの ARNに置き換えます。必ず置き換えてください。111122223333 Auto Scaling グループ AWS アカウント を作成する の実際のアカウント ID。これにより、指定されたアカウントのIAMユーザーまたはロールに、次のCLIコマンドを使用してキーの許可を作成するアクセス許可を付与できます。ただし、これ自体がキーへのアクセス許可をユーザーに提供するのではありません。

    { "Sid": "Allow external account 111122223333 use of the customer managed key", "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": "*" }
  2. 次に、Auto Scaling グループを作成するアカウントから、関連する許可を適切なサービスリンクロールに委任するグラントを作成します。グラントのGrantee Principal要素は、適切なサービスにリンクされたロールARNの です。key-id はキーARNの です。

    以下は、 アカウントAWSServiceRoleForAutoScalingで という名前のサービスにリンクされたロールを付与する create-grant CLI コマンドの例です。111122223333 アカウントでカスタマーマネージドキーを使用するアクセス許可 444455556666.

    aws kms create-grant \ --region us-west-2 \ --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 "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"

    このコマンドが成功するには、リクエストを行うユーザーが CreateGrant アクションに対する許可を持っている必要があります。

    次のIAMポリシー例では、 アカウントの IAM ID (ユーザーまたはロール) を許可します。111122223333 アカウントでカスタマーマネージドキーの許可を作成するには 444455556666.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreationOfGrantForTheKMSKeyinExternalAccount444455556666", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" } ] }

    別の でKMSキーのグラントを作成する方法の詳細については AWS アカウント、AWS Key Management Service 「 デベロッパーガイド」の「 のグラント AWS KMS」を参照してください。

    重要

    被付与者のプリンシパルとして指定されたサービスにリンクされたロール名は、既存のロールの名前でなければなりません。グラントを作成した後、そのグラントで Amazon EC2 Auto Scaling が指定されたKMSキーを使用できるように、サービスにリンクされたロールを削除して再作成しないでください。

AWS KMS コンソールでキーポリシーを編集する

以前のセクションの例では、キーポリシーにステートメントを追加する方法のみを示しています。これは、キーポリシーを変更する 1 つの方法にすぎません。キーポリシーを変更する最も簡単な方法は、 AWS KMS コンソールのデフォルトビューをキーポリシーに使用し、IAMアイデンティティ (ユーザーまたはロール) を適切なキーポリシーのキーユーザーの 1 つにすることです。詳細については、AWS Key Management Service 「 デベロッパーガイド」のAWS Management Console 「デフォルトビューの使用」を参照してください。

重要

以下の点に注意してください。コンソールのデフォルトのビューポリシーステートメントには、カスタマーマネージドキーでオペレーションを実行する AWS KMS Revokeアクセス許可が含まれています。アカウントのカスタマーマネージドキー AWS アカウント へのアクセスを許可し、このアクセス許可を付与した権限を誤って取り消した場合、外部ユーザーは暗号化されたデータやデータの暗号化に使用されたキーにアクセスできなくなります。