マルチリージョンキーへのアクセスを制御する - AWS Key Management Service

マルチリージョンキーへのアクセスを制御する

マルチリージョンキーは、単一リージョンキーを使用するとより複雑な、コンプライアンス、災害対策、バックアップのシナリオで使用できます。ただし、マルチリージョンキーのセキュリティプロパティは単一リージョンキーのセキュリティプロパティとは大きく異なるため、マルチリージョンキーの作成、管理、使用の認可には注意が必要です。

注記

Resource フィールドのワイルドカード文字を含む既存の IAM ポリシーステートメントが、単一リージョンキーおよびマルチリージョンキーの両方に適用されるようになりました。ステートメントを単一リージョンの KMS キーまたはマルチリージョンキーに制限するには、kms:MultiRegion 条件キーを使用します。

認可ツールを使用して、単一リージョンで十分なシナリオでのマルチリージョンキーの作成および使用を阻止します。プリンシパルが、必要とする AWS リージョン のみにマルチリージョンキーをコピーできるようにします。マルチリージョンキーのアクセス許可を、それらを必要とするプリンシパルおよびタスクに対してのみ付与します。

キーポリシー、IAM ポリシー、権限を使用して、IAM プリンシパルが AWS アカウント でマルチリージョンキーを管理および使用できるようにします。各マルチリージョンキーは、一意のキー ARN とキーポリシーを持つ独立したリソースです。各キーのキーポリシーを確立して維持し、新規および既存の IAM ポリシーが認可戦略を実装していることを確認する必要があります。

マルチリージョンキーの認可の原則

マルチリージョンキーのキーポリシーと IAM ポリシーを設計するときは、次の原則を考慮します。

  • キーポリシー — 各マルチリージョンキーは、固有のキーポリシーを持つ独立した KMS キーリソースです。関連するマルチリージョンキーセットの各キーに、同じ、または異なるキーポリシーを適用できます。キーポリシーはマルチリージョンキーの共有プロパティではありません。AWS KMS は関連するマルチリージョンキー間のキーポリシーをコピーまたは同期しません。

    AWS KMS コンソールでレプリカキーを作成するときに、コンソールは便宜上、プライマリキーの現在のキーポリシーを表示します。このキーポリシーの使用、編集、削除、置き換えを行うことができます。ただし、プライマリキーポリシーを変更せずに受け入れる場合でも、AWS KMS はポリシーを同期しません。例えば、プライマリキーのキーポリシーを変更しても、レプリカキーのキーポリシーは変わりません。

  • デフォルトのキーポリシーCreateKey および ReplicateKey オペレーションを使用してマルチリージョンキーを作成する際、リクエストでキーポリシーを指定しない限り、デフォルトのキーポリシーが適用されます。これは、単一リージョンキーに適用されるのと同じデフォルトのキーポリシーです。

  • IAM ポリシー — すべての KMS キーと同様に、キーポリシーによって許可される場合にのみ、IAM ポリシーを使用してマルチリージョンキーへのアクセスを制御できます。IAM ポリシーは、すべての AWS リージョン にデフォルトで適用されます。ただし、条件キー (aws:RequestedRegion など) を使用して、特定のリージョンへのアクセス許可を制限できます。

    プライマリキーおよびレプリカキーを作成するには、キーが作成されたリージョンに適用される、IAM ポリシーの kms:CreateKey アクセス許可をプリンシパルに付与する必要があります。

  • 権限 — AWS KMS 権限はリージョナルです。各権限は、1 つの KMS キーにアクセス許可を付与します。権限を使用して、マルチリージョンのプライマリキーまたはレプリカキーへのアクセス許可を付与できます。ただし、マルチリージョンキーが関連付けられている場合でも、単一の権限を使用して複数の KMS キーにアクセス許可を付与することはできません。

  • キー ARN — 各マルチリージョンキーは一意のキー ARN を持ちます。関連するマルチリージョンキーのキー ARN は、同じパーティション、アカウント、キー ID を持ちますが、リージョンが異なります。

    IAM ポリシーステートメントを特定のマルチリージョンキーに適用するには、そのキー ARN またはリージョンを含むキー ARN パターンを使用します。関連するすべてのマルチリージョンキーに IAM ポリシーステートメントを適用するには、次の例に示すように、ARN のリージョン要素でワイルドカード文字 (*) を使用します。

    { "Effect": "Allow", "Action": [ "kms:Describe*", "kms:List*" ], "Resource": { "arn:aws:kms:*::111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab" } }

    AWS アカウント でポリシーステートメントをすべてのマルチリージョンキーに適用するには、kms:MultiRegion ポリシー条件または固有のmrk-プレフィックスを含むキー ID パターンを使用します。

  • サービスリンクロール — マルチリージョンのプライマリキーを作成するプリンシパルには、iam:CreateServiceLinkedRole アクセス許可が必要です。

    関連するマルチリージョンキーの共有プロパティを同期するために、AWS KMS は IAM サービスリンクロールを引き受けます。AWS KMS はマルチリージョンのプライマリキーを作成するたびに、AWS アカウント でサービスリンクロールを作成します。(ロールが存在する場合は、AWS KMS は悪影響のないロールを再作成します)。ロールはすべてのリージョンで有効です。AWS KMS を許可してサービスリンクロールを作成 (または再作成) するには、マルチリージョンのプライマリキーを作成するプリンシパルに iam:CreateServiceLinkedRole アクセス許可が必要です。

マルチリージョンキー管理者およびユーザーを認可する

マルチリージョンキーを作成および管理するプリンシパルには、プライマリリージョンとレプリカリージョンで次のアクセス許可が必要です。

  • kms:CreateKey

  • kms:ReplicateKey

  • kms:UpdatePrimaryRegion

  • iam:CreateServiceLinkedRole

プライマリキーを作成する

マルチリージョンのプライマリキーを作成するには、プリンシパルに、プライマリキーのリージョンで有効な IAM ポリシーの kms:CreateKey および iam:CreateServiceLinkedRole アクセス許可が必要です。これらのアクセス許可を持つプリンシパルは、アクセス許可が制限されない限り 単一リージョンキーおよびマルチリージョンキーを作成できます。

iam:CreateServiceLinkedRole アクセス許可は、AWS KMS が AWSServiceRoleForKeyManagementServiceMultiRegionKeys ロールを作成して、関連するマルチリージョンキーの共有プロパティを同期できるようにします。

例えば、この IAM ポリシーはプリンシパルに、任意のタイプの KMS キーの作成を許可します。

{ "Version": "2012-10-17", "Statement":{ "Action": [ "kms:CreateKey", "iam:CreateServiceLinkedRole" ], "Effect":"Allow", "Resource":"*" } }

マルチリージョンのプライマリキーを作成するアクセス許可を許可または拒否するには、kms:MultiRegion 条件キーを使用します。有効な値は、true (マルチリージョンキー) または false (単一リージョンキー) です。例えば、次の IAM ポリシーステートメントでは、kms:MultiRegion 条件キーを持つ Deny アクションを使用して、プリンシパルがマルチリージョンキーを作成しないようにします。

{ "Version": "2012-10-17", "Statement":{ "Action":"kms:CreateKey", "Effect":"Deny", "Resource":"*", "Condition": { "Bool": "kms:MultiRegion": true } } }

キーをレプリケートする

マルチリージョンのレプリカキーを作成するには、プリンシパルに次のアクセス許可が必要です。

  • プライマリキーのキーポリシーの kms:ReplicateKey アクセス許可。

  • レプリカキーリージョンで有効な IAM ポリシーの kms:CreateKey アクセス許可。

これらのアクセス許可を許可する場合は注意が必要です。これにより、プリンシパルは KMS キーと、その使用を認可するキーポリシーを作成できます。kms:ReplicateKey アクセス許可は AWS KMS 内のリージョンの境界を越えるキーマテリアルの転送も認可します。

マルチリージョンキーをレプリケートできる AWS リージョン を制限するには、kms:ReplicaRegion 条件キーを使用します。これは、kms:ReplicateKey アクセス許可のみを制限します。それ以外には影響を与えません。例えば、次のキーポリシーは、指定されたリージョンでのみプリンシパルにこのプライマリキーのレプリケーションを許可します。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }

プライマリリージョンを更新する

認可されたプリンシパルは、レプリカキーをプライマリキーに変換し、プライマリキーは以前のプライマリキーをレプリカキーに変更します。このアクションはプライマリリージョンの更新として知られています。。プライマリリージョンを更新するには、プリンシパルに両方のリージョンで kms:UpdatePrimaryRegion 許可が必要です。キーポリシーまたは IAM ポリシーでこれらのアクセス許可を付与できます。

  • プライマリキーの kms:UpdatePrimaryRegion。このアクセス許可は、プライマリキーリージョンで有効である必要があります。

  • レプリカキーの kms:UpdatePrimaryRegion。このアクセス許可は、レプリカキーリージョンで有効である必要があります。

例えば、次のキーポリシーは、KMS キーのプライマリリージョンを更新する管理者のロールを引き受けることができるユーザーに付与します。この KMS キーは、このオペレーションでプライマリキーまたはレプリカキーにすることができます。

{ "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:UpdatePrimaryRegion" }

プライマリキーをホストできる AWS リージョン を制限するには、kms:PrimaryRegion 条件キーを使用します。例えば、次の IAM ポリシーステートメントでは、新しいプライマリリージョンが、指定されたリージョンの 1 つである場合にのみ、プリンシパルは AWS アカウント でマルチリージョンキーのプライマリリージョンを更新できます。

{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Resource": { "arn:aws:kms:*:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-west-2", "sa-east-1", "ap-southeast-1" ] } } }

マルチリージョンキーを使用および管理する

デフォルトでは、AWS アカウント でKMS キーを使用および管理するためのアクセス許可を持つプリンシパルは、マルチリージョンキーを使用および管理するためのアクセス許可も持っています。ただし、kms:MultiRegion 条件キーを使用して、単一リージョンキーのみまたはマルチリージョンキーのみを許可できます。または、kms:MultiRegionKeyType 条件キーを使用して、マルチリージョンのプライマリキーのみまたはレプリカキーのみを許可します。どちらの条件キーも、CreateKey オペレーションと、既存の KMS キーを使用するオペレーション (Encrypt または EnableKey など) へのアクセスを制御します。

以下の IAM ポリシーステートメントの例では、kms:MultiRegion 条件キーを使用して、プリンシパルがマルチリージョンキーを使用または管理できないようにします。

{ "Effect": "Deny", "Action": "kms:*", "Resource": "*", "Condition": { "Bool": "kms:MultiRegion": true } }

この IAM ポリシーステートメントの例では、kms:MultiRegionKeyType 条件を使用して、マルチリージョンレプリカキーのみでキー削除のスケジュールおよびキャンセルを実行することをプリンシパルに許可します。

{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": "kms:MultiRegionKeyType": "REPLICA" } }

マルチリージョンキーの同期を AWS KMS に認可する

マルチリージョンキーをサポートするために、AWS KMS は IAM サービスリンクロールを使用します。このロールは、AWS KMS に共有プロパティの同期に必要なアクセス許可を付与します。AWS CloudTrail ログで、共有プロパティの AWS KMS 同期を記録する SynchronizeMultiRegionKey CloudTrail イベントを表示することができます。

マルチリージョンキーのサービスリンクロールについて

サービスリンクロールは、ユーザーの代わりに他の AWS サービスを呼び出す 1 つの AWS サービスアクセス許可を付与する IAM ロールです。これは、複数の統合された AWS サービスの機能を、複雑な IAM ポリシーを作成したり維持したりせずに簡単に使用できるように設計されました。

マルチリージョンキーの場合、AWS KMS は AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy ポリシーで AWSServiceRoleForKeyManagementServiceMultiRegionKeys サービスリンクロールを作成します。このポリシーは、ロールに kms:SynchronizeMultiRegionKey アクセス許可を付与します。これにより、マルチリージョンキーの共有プロパティを同期できます。

AWSServiceRoleForKeyManagementServiceMultiRegionKeys サービスリンクロールは mrk.kms.amazonaws.com のみを信頼するため、AWS KMS のみがこのサービスリンクロールを引き受けることができます。このロールは、AWS KMS がマルチリージョンの共有プロパティを同期するために必要なオペレーションを制限します。AWS KMS に対して追加のアクセス許可は付与されません。例えば、AWS KMS に KMS キーを作成、レプリケート、削除するためのアクセス許可はありません。

AWS のサービスでサービスリンクロールを使用する方法の詳細については、IAM ユーザーガイドのサービスリンクロールの使用を参照してください。

サービスにリンクされたロールの作成

マルチリージョンキーの作成時にロールがまだ存在しない場合、AWS KMS は AWS アカウント で AWSServiceRoleForKeyManagementServiceMultiRegionKeys サービスリンクロールを自動的に作成します。このサービスにリンクされたロールを直接作成または再作成することはできません。

サービスにリンクされたロールの説明を編集する

AWSServiceRoleForKeyManagementServiceMultiRegionKeys サービスリンクロールでは、ロール名またはポリシーステートメントを編集することはできませんが、ロールの説明を編集することができます。手順については、IAM ユーザーガイドサービスリンクロールの編集を参照してください。

サービスにリンクされたロールを削除する

AWS KMS は AWSServiceRoleForKeyManagementServiceMultiRegionKeys サービスリンクロールを AWS アカウント から削除しません。また、ユーザーが削除することもできません。ただし、AWS アカウント およびリージョンにマルチリージョンキーがない限り、AWS KMS は AWSServiceRoleForKeyManagementServiceMultiRegionKeys ロールを引き受けたり、そのアクセス許可を使用したりしません。