AWS KMS のリソースコントロールポリシー - AWS Key Management Service

AWS KMS のリソースコントロールポリシー

リソースコントロールポリシー (RCP) は、組織内の AWS リソースに予防コントロールを適用するために使用できる組織ポリシーです。RCPは、大規模に AWS リソースへの外部アクセスを一元的に制限するのに役立ちます。RCP はサービスコントロールポリシー (SCP) を補完します。SCP を使用して組織内の IAM ロールとユーザーに対する最大アクセス許可を一元的に設定できますが、RCP を使用すると組織内の AWS リソースに対する最大アクセス許可を一元的に設定できます。

RCP を使用して組織内のカスタマーマネージド KMS キーへのアクセス許可を管理できます。RCP だけでは、カスタマーマネージドキーにアクセス許可を付与するには不十分です。RCP によって付与されるアクセス許可はありません。RCP は、影響を受けるアカウントのリソースに対して ID が実行できるアクションのアクセス許可ガードレールを定義 (またはアクセス許可の制限を設定) します。それでも、実際にアクセス許可を付与するには、管理者が ID ベースのポリシーを IAM ロールまたはユーザー、またはキーポリシーにアタッチする必要があります。

注記

組織内のリソースコントロールポリシーは、AWS マネージドキー には適用されません。

AWS マネージドキー は、ユーザーに代わって AWS サービスによって作成、管理、使用されます。そのアクセス許可を変更および管理することはできません。

詳細

  • RCP の詳細については、「AWS Organizations ユーザーガイド」の「リソースコントロールポリシー (RCP)」を参照してください。

  • RCP の定義方法と例の詳細については、「AWS Organizations ユーザーガイド」の「RCP 構文」を参照してください。

次の例は、RCP を使用して、外部プリンシパルが組織内のカスタマーマネージドキーにアクセスすることを防止する方法を示しています。このポリシーは単なる例なので、独自のビジネスおよびセキュリティニーズに合わせて調整する必要があります。例えば、ポリシーをカスタマイズして、ビジネスパートナーによるアクセスを許可することができます。詳細については、「data-perimeter-policy-examples」を参照してください。

注記

Action 要素でアスタリスク (*) をワイルドカードとして指定しても、kms:RetireGrant アクセス許可は、RCP では有効ではありません。

kms:RetireGrant に対するアクセス許可を決定する方法の詳細については、「グラントの使用停止と取り消し」を参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RCPEnforceIdentityPerimeter", "Effect": "Deny", "Principal": "*", "Action": "kms:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalOrgID": "my-org-id" }, "Bool": { "aws:PrincipalIsAWSService": "false" } } } ] }

次の RCP の例では、リクエストが組織から送信されたとき、AWS サービスプリンシパルがカスタマーマネージド KMS キーにのみアクセスできる必要があります。このポリシーは、aws:SourceAccount が存在するリクエストにのみコントロールを適用します。その結果、aws:SourceAccount の使用を必要としないサービス統合は影響を受けません。aws:SourceAccount キーがリクエストコンテキストに存在する場合、Null 条件は true に評価され、aws:SourceOrgID キーが強制されます。

混乱した代理問題の詳細については、「IAM ユーザーガイド」の「『混乱した代理』問題」を参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RCPEnforceConfusedDeputyProtection", "Effect": "Deny", "Principal": "*", "Action": "kms:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceOrgID": "my-org-id" }, "Bool": { "aws:PrincipalIsAWSService": "true" }, "Null": { "aws:SourceAccount": "false" } } } ] }