他のアカウントのユーザーに CMK の使用を許可する - AWS Key Management Service

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

他のアカウントのユーザーに CMK の使用を許可する

IAM ユーザーまたはロールは、別のAWSアカウントでカスタマーマスターキー (CMK) を使用するには クロスアカウントアクセスには、CMK のキーポリシーと、外部ユーザーのアカウントの IAM ポリシーでアクセス権限が必要です。

クロスアカウント権限は、以下の操作に対してのみ有効です。

別のアカウントのユーザーに他のオペレーションのアクセス許可を付与しても、それらのアクセス許可は効果がありません。たとえば、別の勘定科目の元本を指定した場合KMS: リストキーアクセス許可を IAM ポリシーで付与するか、KMS: スケジュールキー削除権限を付与しても、ユーザーがリソースでこれらのオペレーションを呼び出そうとしたとしても、引き続き失敗します。

別のアカウントで CMK を使用する方法については、AWS KMSオペレーションの詳細については、クロスアカウント使用列のAWS KMS アクセス権限および他のアカウントでの CMK の使用。また、クロスアカウント使用の各 API 記述のAWS Key Management ServiceAPI リファレンス

警告

CMK を使用する権限をプリンシパルに与えるには注意してください。可能な限り、 最小権限 の原則に従ってください。必要な操作だけに必要なCMKへのアクセス権をユーザーに付与します。

また、使い慣れていないCMK、特に別のアカウントの CMK を使用する場合は注意してください。悪意のあるユーザーは、自分の CMK を使用して自分またはアカウントに関する情報を取得するアクセス許可を与える可能性があります。

ポリシーを使用してアカウント内のリソースを保護する方法については、「」を参照してください IAM ポリシーのベストプラクティス

別のアカウントのユーザーとロールに CMK を使用するアクセス許可を付与するには、2 つの異なるタイプのポリシーを使用する必要があります。

  • CMK のキーポリシーは 、CMK を使用するアクセス許可を外部アカウント(または外部アカウントのユーザーとロール)に付与する必要があります。キーポリシーは、CMK を所有するアカウントにあります。

  • 外部アカウント@@の IAM ポリシーは 、キーポリシーのアクセス権限をそのユーザーとロールに委任する必要があります。これらのポリシーは外部アカウントで設定され、そのアカウントのユーザーとロールにアクセス許可を与えます。

キーポリシーによって、CMK にアクセスできる ユーザーが決定されます。 IAM ポリシーによって、CMK にアクセスできるユーザーが決定されます。キーポリシーも IAM ポリシーも十分ではありません。両方を変更する必要があります。

キーポリシーを編集するには、ポリシービュー()AWS Management Consoleを使用するか、CreateKeyまたはPutKeyPolicyオペレーション. CMK の作成時にキーポリシーを設定する方法については、「」を参照してください 他のアカウントで使用できる CMK の作成

IAM ポリシーの編集については、「」を参照してください での IAM ポリシーの使用AWS KMS

キーポリシーと IAM ポリシーが連携して、別のアカウントで CMK の使用を許可する方法を示す例については、「」を参照してください 例 2: ユーザーが別の CMK を使用するためのアクセス許可を持つロールを引き受ける AWS アカウント

クロスアカウントをに表示できます。AWS KMSの操作を CMK で実行します。AWS CloudTrailログ。他のアカウントで CMK を使用する操作は、呼び出し元のアカウントと CMK 所有者のアカウントの両方に記録されます。

ステップ 1: ローカルアカウントにキーポリシーステートメントを追加する

CMK のキーポリシーは、CMK にアクセスできるユーザーと、実行できるオペレーションの主要な決定要因です。キーポリシーは、常に、CMK を所有するアカウントにあります。IAM ポリシーとは異なり、キーポリシーはリソースを指定しません。リソースは、キーポリシーに関連付けられている CMK です。

CMK を使用するアクセス権限を外部アカウントに付与するには、外部アカウントを指定するステートメントをキーポリシーに追加します。キーポリシーの Principal 要素に、外部アカウントの Amazon リソースネーム (ARN) を入力します。

キーポリシーで外部アカウントを指定すると、外部アカウントの IAM 管理者は IAM ポリシーを使用して、外部アカウントのすべてのユーザーおよびロールにこれらのアクセス権限を委任できます。また、ユーザーおよびロールが実行できるキーポリシーで指定されたアクションを決定することもできます。

外部アカウントとそのプリンシパルに付与されたアクセス許可は、CMK とそのキーポリシーをホストするリージョンで外部アカウントが有効になっている場合にのみ有効です。デフォルトで有効になっていないリージョン (「オプトインリージョン」) については、管理 AWS リージョン ()AWSの全般的なリファレンス

たとえば、アカウント 444455556666 にアカウント 111122223333 の対称 CMK の使用を許可するとします。これを行うには、次の例のようなポリシーステートメントを、アカウント 111122223333 の CMK のキーポリシーに追加します。次のキーポリシーステートメント例では、対称 CMK の暗号化オペレーションで CMK を使用するアクセス許可を外部アカウント 444455556666 に付与しています。

{ "Sid": "Allow an external account to use this CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

外部アカウントにアクセス許可を付与する代わりに、キーポリシーで特定の外部ユーザーとロールを指定できます。ただし、外部アカウントの IAM 管理者が適切な IAM ポリシーを自分の ID にアタッチするまで、これらのユーザーとロールは CMK を使用できません。IAM ポリシーは、キーポリシーで指定されている外部ユーザーとロールのすべてまたはサブセットにアクセス許可を与えることができます。また、キーポリシーで指定されたアクションのすべてまたはサブセットを許可できます。

キーポリシーで ID を指定すると、外部アカウントの IAM 管理者が提供できるアクセス権限が制限されます。ただし、2 つのアカウントを使用したポリシー管理はより複雑になります。たとえば、ユーザーまたはロールを追加する必要があるとします。その ID を CMK を所有するアカウントのキーポリシーに追加し、ID のアカウントに IAM ポリシーを作成する必要があります。

キーポリシーで特定の外部ユーザーまたはロールを指定するには、Principal 要素に、外部アカウントのユーザーまたはロールの Amazon リソースネーム (ARN) を入力します。

たとえば、次のキーポリシーステートメントの例では、アカウント 444455556666 の ExampleRole および ExampleUser にアカウント 111122223333 の CMK の使用を許可します。このキーポリシーステートメントは、対称 CMK の暗号化オペレーションで CMK を使用するアクセス許可を外部アカウント 444455556666 に付与します。

{ "Sid": "Allow an external account to use this CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
注記

条件を使用してキーポリシーを制限しない限り、アクセス許可を許可するキーポリシーステートメントで、プリンシパルをアスタリスク (*) に設定しないでください。アスタリスクは、すべての内のすべてのアイデンティティを与えます AWS アカウント 別のポリシーステートメントが明示的に拒否しない限り、CMK の使用を許可します。他のユーザー AWS アカウント CMK を使用するには、各自のアカウントで対応する IAM アクセス許可のみが必要です。

また、外部アカウントに付与するアクセス許可を決定する必要があります。CMK に対する権限のリストについては、を参照してください AWS KMS アクセス権限

暗号化オペレーションで CMK を使用したり、AWS KMS と統合された AWS のサービスで CMK を使用したりするためのアクセス許可を外部アカウントに付与できます。これを行うには、の Key Users セクションを使用します AWS Management Console。詳細については、「他のアカウントで使用できる CMK の作成」を参照してください

キーポリシーで他のアクセス許可を指定するには、キーポリシードキュメントを編集します。たとえば、復号するが暗号化しないアクセス許可をユーザーに付与したり、CMK を表示しても使用しないアクセス許可を付与したりできます。キーポリシードキュメントを編集するには、ポリシービュー()AWS Management ConsoleまたはCreateKeyまたはPutKeyPolicyオペレーション.

ステップ 2: 外部アカウントに IAM ポリシーを追加する

CMK を所有するアカウントのキーポリシーは、アクセス許可の有効範囲を設定します。ただし、外部アカウントのユーザーとロールは、それらのアクセス許可を委任する IAM ポリシーをアタッチするか、許可を使用して CMK へのアクセスを管理するまで、CMK を使用できません。IAM ポリシーは外部アカウントで設定されます。

キーポリシーが外部アカウントにアクセス許可を与える場合は、アカウント内の任意のユーザーまたはロールに IAM ポリシーをアタッチできます。ただし、キーポリシーが指定したユーザーまたはロールにアクセス許可を付与する場合、IAM ポリシーでは、指定したユーザーとロールのすべてまたはサブセットにのみそれらのアクセス許可を付与できます。IAM ポリシーによって、他の外部ユーザーまたはロールへの CMK アクセスを許可しても、効果はありません。

キーポリシーは、IAM ポリシー内のアクションも制限します。IAM ポリシーは、キーポリシーで指定されたアクションのすべてまたはサブセットを委任できます。IAM ポリシーに、キーポリシーで指定されていないアクションがリストされている場合、それらのアクセス権限は有効ではありません。

以下の IAM ポリシーステートメント例では、プリンシパルがアカウント 111122223333 の CMK を暗号化オペレーションに使用することを許可しています。アカウント内のユーザーとロールにこの権限を付与するには 444455556666, 、アカウント内のユーザーまたはロールにポリシーをアタッチ 444455556666します。

{ "Sid": "AllowUseOfCMKInAccount111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

このポリシーに関する以下の詳細情報に注意してください。

  • キーポリシーとは異なり、IAM ポリシーステートメントには Principal 要素が含まれていません。IAM ポリシーでは、プリンシパルはポリシーがアタッチされている ID です。

  • IAM ポリシーの Resource エレメントは、プリンシパルが使用できる CMK を識別します。CMK を指定するには、そのキー ARNResource 要素に追加します。

  • Resource 要素には複数の CMK を指定できます。ただし、Resource 要素で特定の CMK を指定しないと、意図したよりも多くの CMK へのアクセス権限を付与する可能性があります。

  • 外部ユーザーが CMK を使用できるようにするにはAWSと統合するサービスAWS KMS,キーポリシーまたは IAM ポリシーにアクセス許可を追加する必要がある場合があります。詳細については、「外部CMK の使用を許可するAWSサービス」を参照してください

IAM ポリシーの操作の詳細については、「」を参照してください IAM ポリシーの使用

他のアカウントで使用できる CMK の作成

CreateKey オペレーションを使用して CMK を作成する場合、その Policy パラメーターを使用して、CMK を使用する権限を外部アカウント、または外部ユーザーとロールに与える キーポリシー を指定できます。また、キーとロールがキー ポリシーで指定されている場合でも、これらのアクセス権限をアカウントのユーザーとロールに委任する IAM ポリシーを外部アカウントに追加する必要があります。キーポリシーは、 PutKeyPolicy 操作を使用していつでも変更できます。

AWS Management Console で CMK を作成するときは、そのキーポリシーも作成します。Key Administrators セクションと Key Users セクションでアイデンティティを選択すると、AWS KMS はこれらの ID のポリシーステートメントを CMK のキーポリシーに追加します。

Key Users セクションでは、外部アカウントをキーユーザーとして追加することもできます。


                CMK のキーポリシーに外部アカウントを追加するコンソール要素。

外部アカウントのアカウント ID を入力すると、 AWS KMS はキーポリシーに 2 つのステートメントを追加します。このアクションは、キーポリシーにのみ影響します。外部アカウントのユーザーとロールは、 IAM ポリシーを アタッチしてこれらのアクセス権限の一部またはすべてを与えるまで、CMK を使用できません。

最初のキーポリシーステートメントは、暗号化オペレーションで CMK を使用するアクセス許可を外部アカウントに付与します。

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

2 番目のキーポリシーステートメントでは、外部アカウントが CMK で許可を作成、表示、取り消すことを許可します。ただし、リクエストがAWSと統合されているAWS KMS。これらのアクセス権限は、CMK を使用するためにユーザーデータを暗号化するなどの他の AWS サービスを許可します。

これらのアクセス許可は、でユーザーデータを暗号化する CMK 用に設計されています。AWSなどのサービスAmazon WorkMail。これらのサービスは、通常、ユーザーに代わって CMK を使用するために必要なアクセス許可を取得するために許可を使用します。詳細については、「外部CMK の使用を許可するAWSサービス」を参照してください

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }

これらのアクセス許可がニーズを満たさない場合は、コンソールのポリシービューで 、または PutKeyPolicy オペレーションを使用して編集できます。外部アカウントにアクセス許可を付与する代わりに、特定の外部ユーザーとロールを指定できます。ポリシーで指定するアクションを変更できます。また、グローバル条件と AWS KMS ポリシー条件を使用して、アクセス許可を絞り込むことができます。

外部CMK の使用を許可するAWSサービス

別のアカウントのユーザーに、AWS KMSと統合されたサービスで CMK を使用するアクセス許可を付与できます。たとえば、外部アカウントのユーザーは、CMK を使用してAmazon S3 バケットのオブジェクトを暗号化するまたは保存する秘密を暗号化するAWS Secrets Manager

キーポリシーは、CMK を使用するためのアクセス許可を外部ユーザーまたは外部ユーザーのアカウントに付与する必要があります。さらに、IAM ポリシーを ID にアタッチする必要があります。これにより、ユーザーにAWSサービス。また、このサービスでは、ユーザーがキーポリシーまたは IAM ポリシーで追加のアクセス許可を持っている必要がある場合があります。詳細については、サービスのドキュメントを参照してください。

他のアカウントでの CMK の使用

別の CMK を使用するアクセス許可がある場合 AWS アカウント CMK をAWS Management Console,AWSSDKAWS CLI, およびAWS Tools for PowerShell。

シェルコマンドまたは API リクエストで、別のアカウントの CMK を識別するには、以下のキー識別子

キー ID またはエイリアス名のみを入力した場合、AWSCMK がアカウントの CMK であるとします。

-AWS KMSコンソールでは、他のアカウントの CMK は表示されません。また、他のコンソールに表示される CMK のリストAWSサービスには、他のアカウントの CMK は含まれません。のコンソールで外部 CMK を指定するにはAWSサービスでは、CMK のキー ARN を入力する必要があります。詳細については、サービスのコンソールドキュメントを参照してください。