「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
他のアカウントのユーザーに CMK の使用を許可する
1 つの AWS アカウントの IAM ユーザーまたはロールによる、別の AWS アカウントの カスタマーマスターキー (CMK) の使用を許可できます。CMK を作成するとき、または既存の CMK のアクセス許可を変更するときに、これらのアクセス許可を追加できます。
CMKs を使用するプリンシパルのアクセス許可を与えることには注意深くあってください。可能な限り、 最小権限 の原則に従ってください。ユーザーがオペレーションを必要とする CMKs だけに、ユーザーのアクセス権を付与します。
また、CMK に慣れていない、特に別のアカウントで CMK を使用する場合には注意してください。悪意のあるユーザーは、ユーザーまたはユーザーのアカウントに関する情報を取得するために、CMK を使用する許可をユーザーに与える可能性があります。
ポリシーを使用してアカウント内のリソースを保護する方法については、「」を参照してください IAM ポリシーのベストプラクティス。
別のアカウントのユーザーとロールに CMK を使用する許可を付与するには、2 つの異なるタイプのポリシーを使用する必要があります。
-
のキーポリシーは、外部アカウント (または外部アカウントのユーザーとロール) に、CMK を使用するアクセス許可を付与する必要があります。CMKキーポリシーは、CMK を所有するアカウントにあります。
-
キーポリシーのアクセス許可をそのユーザーとロールに与えるように、外部アカウントの IAM ポリシーを設定する必要があります。これらのポリシーは外部アカウントで設定され、そのアカウントのユーザーとロールにアクセス許可を与えます。
キーポリシーは、 にアクセスできるユーザーを決定しますCMK。ポリシーは、IAM にアクセスできるユーザーを決定します。CMKキーポリシーも IAM ポリシーも単独でも十分ではありません — 両方を変更する必要があります。
キーポリシーを編集するには、 でポリシービューAWS マネジメントコンソールを使用するか、 CreateKeyまたは オペレーションを使用します。PutKeyPolicyCMK の作成時にキーポリシーを設定する方法については、「他のアカウントで使用できる CMKs の作成」を参照してください。
IAM ポリシーの編集については、「AWS KMS での IAM ポリシーの使用」を参照してください 。
別のアカウントで CMK の使用を許可するためにキーポリシーと IAM ポリシーがどのように連携するかを示す例については、「例 2: ユーザーが別のCMKアカウントAWSで を使用するためのアクセス許可を持つロールを引き受ける」を参照してください。
ログAWS KMSの CMK で、結果として得られるクロスアカウント オペレーションを表示できます。AWS CloudTrail他のアカウントで CMKs を使用するオペレーションは、呼び出し元のアカウントと CMK 所有者のアカウントの両方に記録されます。
トピック
ステップ 1: ローカルアカウントにキーポリシーステートメントを追加する
CMK のキーポリシーは、CMK にアクセスできるユーザーと、実行できるオペレーションの主要な決定要因です。キーポリシーは、常に、CMK を所有するアカウントにあります。IAM ポリシーとは異なり、キーポリシーはリソースを指定しません。リソースは、キーポリシーに関連付けられている CMK です。
CMK を使用する許可を外部アカウントに付与するには、外部アカウントを指定するステートメントをキーポリシーに追加します。キーポリシーの Principal
要素に、外部アカウントの Amazon リソースネーム (ARN) を入力します。
キーポリシーで外部アカウントを指定すると、 IAM 外部アカウントの管理者は IAM ポリシーを使用して、それらのアクセス許可を外部アカウントのユーザーおよびロールに委任できます。また、ユーザーおよびロールが実行できるキーポリシーで指定されたアクションを決定することもできます。
たとえば、アカウント 444455556666 にアカウント 111122223333 の対称 CMK の使用を許可するとします。これを行うには、次の例のようなポリシーステートメントを、アカウント 111122223333 の CMK のキーポリシーに追加します。このポリシーステートメントは、対称 CMKs の暗号化オペレーションで 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 管理者が ID に適切な IAM ポリシーをアタッチするまで、これらのユーザーとロールは CMK を使用できません。ポリシーは、IAM キーポリシーで指定されている外部ユーザーおよびロールのすべてまたはサブセットにアクセス許可を付与できます。また、キーポリシーで指定されたアクションのすべてまたはサブセットを許可できます。
キーポリシーで ID を指定すると、IAM 外部アカウントの管理者が提供できるアクセス許可が制限されます。ただし、2 つのアカウントを使用したポリシー管理はより複雑になります。たとえば、ユーザーまたはロールを追加する必要があるとします。CMK を所有するアカウントのキーポリシーにそのアイデンティティを追加し、アイデンティティのアカウントで IAM ポリシーを作成する必要があります。
キーポリシーで特定の外部ユーザーまたはロールを指定するには、Principal
要素に、外部アカウントのユーザーまたはロールの Amazon リソースネーム (ARN) を入力します。
たとえば、次のキーポリシーステートメントの例では、アカウント 444455556666 の ExampleRole
と ExampleUser に、アカウント 111122223333 の CMK の使用を許可します。このキーポリシーステートメントは、対称 CMKs の暗号化オペレーションで
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 アカウントの各 ID に、CMK を使用するアクセス権限が付与されます。他の AWS アカウントのユーザーは、各自のアカウントで CMK を使用する、該当の IAM アクセス権限を必要としているのみです。
また、外部アカウントに付与するアクセス許可を決定する必要があります。CMKs に対するアクセス許可のリストについては、「AWS KMS のアクセス許可」を参照してください 。
暗号化オペレーションCMKで を使用するアクセス許可を外部アカウントに付与し、 と統合されている CMK サービスで AWS を使用できます。AWS KMSこれを行うには、の Key Users セクションを使用します AWS マネジメントコンソール。詳細については、「他のアカウントで使用できる CMKs の作成」を参照してください。
キーポリシーで他のアクセス許可を指定するには、キーポリシードキュメントを編集します。たとえば、復号するが暗号化しないアクセス許可をユーザーに付与したり、CMK を表示しても使用しないアクセス許可を付与したりできます。キーポリシードキュメントを編集するには、 の [ポリシービューAWS マネジメントコンソール]、 CreateKeyまたは オペレーションを使用できます。PutKeyPolicy
ステップ 2: 外部アカウントに IAM ポリシーを追加する
CMK を所有するアカウントのキーポリシーは、アクセス許可の有効範囲を設定します。ただし、外部アカウントのユーザーとロールは、これらのアクセス許可を委任する IAM ポリシーをアタッチするか、許可を使用して CMK へのアクセスを管理するまで、CMK を使用することはできません。IAM ポリシーは外部アカウントで設定されます。
キーポリシーが外部アカウントにアクセス許可を付与する場合、IAM アカウントの任意のユーザーまたはロールにポリシーをアタッチできます。ただし、キーポリシーが指定されたユーザーまたはロールにアクセス許可を付与する場合、 IAM ポリシーは、指定されたユーザーおよびロールのすべてまたはサブセットにのみそれらのアクセス許可を付与できます。IAM ポリシーが CMK アクセスを他の外部ユーザーまたはロールに付与する場合、効果はありません。
キーポリシーは、IAM ポリシー内のアクションも制限します。ポリシーは、 IAM キーポリシーで指定されたアクションのすべてまたはサブセットを委任できます。IAM キーポリシーで指定されていないアクションがポリシーにリストされている場合、それらのアクセス許可は無効です。
次の IAM ポリシーの例では、プリンシパルが、暗号化オペレーションのためにアカウント 111122223333 で CMK を使用することを許可します。アカウント内のユーザーとロールにこの権限を付与するには
444455556666
, 、アカウント内のユーザーまたはロールにポリシーをアタッチ 444455556666
します。
{ "Version": "2012-10-17", "Statement": [ { "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 を指定するには、そのキー ARN をResource
要素に追加します。 -
Resource
要素には複数の CMK を指定できます。ただし、Resource
要素で特定の CMKs を指定しないと、意図したよりも多くの CMKs へのアクセス権限を誤って付与する可能性があります。 -
外部ユーザーが CMK と統合される AWS サービスで AWS KMS を使用できるようにするには、キーポリシーまたは
ポリシーにアクセス許可を追加する必要がある場合があります。IAM詳細については、「AWS のサービスで外部 CMKs を使用する」を参照してください。
IAM ポリシーの使用の詳細については、「IAM ポリシーの使用」を参照してください。
他のアカウントで使用できる CMKs の作成
オペレーションを使用して CreateKey を作成する場合、その パラメータを使用して、外部アカウントまたは外部ユーザーとロールに CMK を使用するアクセス許可を付与するPolicy
キーポリシーを指定できます。CMKまた、ユーザーとロールがキーポリシーで指定されている場合でも 、これらのアクセス許可をアカウントのユーザーとロールに委任する IAM ポリシーを外部アカウントに追加する必要があります。キーポリシーは、PutKeyPolicy オペレーションを使用していつでも変更できます。
AWS マネジメントコンソール で CMK を作成するときは、そのキーポリシーも作成します。キー管理者セクションとキーユーザーセクションで ID を選択すると、AWS KMS はこれらの ID のポリシーステートメントを CMK のキーポリシーに追加します。
Key Users セクションでは、外部アカウントをキーユーザーとして追加することもできます。

外部アカウントのアカウント ID を入力すると、 AWS KMS はキーポリシーに 2 つのステートメントを追加します。このアクションは、キーポリシーにのみ影響します。外部アカウントのユーザーとロールは、CMK ポリシーIAMをアタッチしてこれらのアクセス許可の一部またはすべてを付与するまで、 を使用できません。
最初のポリシーステートメントは、暗号化オペレーションで 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 KMS と統合されている AWS のサービス
これらのアクセス許可は、CMKsAWS などの サービスのユーザーデータを暗号化する Amazon WorkMail 用に設計されています。これらのサービスは、通常、ユーザーに代わって CMK を使用するために必要なアクセス許可を取得するために許可を使用します。詳細については、「AWS のサービスで外部 CMKs を使用する」を参照してください。
{ "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 ポリシー条件を使用して、アクセス許可を絞り込むことができます。
AWS のサービスで外部 CMKs を使用する
別のアカウントのユーザーに、AWS KMS と統合されたサービスで CMK を使用する許可を付与できます。たとえば、外部アカウントのユーザーは、CMK を使用して Amazon S3 バケット内のオブジェクトを暗号化したり、AWS Secrets Manager に保存するシークレットを暗号化したりできます。
キーポリシーは、CMK を使用するための許可を外部ユーザーまたは外部ユーザーのアカウントに付与する必要があります。さらに、AWS サービスを使用するアクセス許可をユーザーに付与する IAM ポリシーを ID にアタッチする必要があります。
また、このサービスでは、ユーザーがキーポリシーで追加のアクセス許可を持っている必要がある場合があります。たとえば、CMK で権限付与を作成、一覧表示、および取り消す許可が必要になる場合があります。または、IAM 特定のポリシーが必要な場合があります。詳細については、サービスのドキュメントを参照してください。
最後に、統合サービスの AWS マネジメントコンソール に表示される CMKs のリストには、外部アカウントの CMKs は含まれません。これは、ユーザーまたはロールにそれらを使用するアクセス許可がある場合にも当てはまります。外部アカウントの CMK を使用するには、ユーザーは CMK の ID または ARN を入力する必要があります。詳細については、サービスのコンソールドキュメントを参照してください。