高度な KMS キーポリシーステートメント - AWS IAM Identity Center

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

高度な KMS キーポリシーステートメント

高度な KMS キーポリシーステートメントを使用して、カスタマーマネージド KMS キーのより詳細なアクセスコントロールを実装します。これらのポリシーは、暗号化コンテキスト条件とサービス固有の制限を追加することで、ベースライン KMS キーと IAM ポリシーステートメント 上に構築されます。高度な KMS キーポリシーステートメントを使用するかどうかを決定する前に、関連する考慮事項を確認してください。

暗号化コンテキストを使用してアクセスを制限する

キーポリシーステートメントで暗号化コンテキスト条件を指定することで、KMS キーの使用を特定の IAM アイデンティティセンターインスタンスに制限できます。ベースラインキーポリシーステートメントには、このコンテキストに汎用値がすでに含まれています。「*」ワイルドカードを特定のアイデンティティセンターインスタンス ARN とアイデンティティセンター ARN に置き換えて、キーが目的のインスタンスでのみ機能することを確認します。KMS キーのクロスアカウント使用のために設定された IAM ポリシーに同じ暗号化コンテキスト条件を追加することもできます。

アイデンティティセンター

"StringEquals": { "kms:EncryptionContext:aws:sso:instance-arn": "arn:aws:sso:::instance/ssoins-1234567890abcdef" }

ID ストア

"StringEquals": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "arn:aws:identitystore::111122223333:identitystore/d-1234567890" }

これらの識別子の検索に関するヘルプが必要な場合は、「必要な識別子を検索する」を参照してください。

注記

カスタマーマネージド KMS キーは、IAM アイデンティティセンターの組織インスタンスでのみ使用できます。カスタマーマネージドキーは AWS 組織の管理アカウントに配置する必要があります。これにより、キーが 1 つの IAM アイデンティティセンターインスタンスで使用されるようになります。ただし、暗号化コンテキストメカニズムは、単一インスタンスの使用に対する独立した技術的保護を提供します。アイデンティティセンターおよび ID ストアサービスプリンシパル向けの KMS キーポリシーステートメントで aws:SourceArn 条件キーを使用することもできます。

暗号化コンテキスト条件を実装する際の考慮事項

暗号化コンテキスト条件を実装する前に、以下の要件を確認してください。

  • DescribeKey アクション。暗号化コンテキストは、IAM アイデンティティセンター管理者が使用できる「kms:DescribeKey」アクションに適用できません。KMS キーポリシーを設定するときは、この特定のアクションの暗号化コンテキストを除外して、IAM アイデンティティセンター インスタンスの適切なオペレーションを確保します。

  • 新しいインスタンスのセットアップ。カスタマーマネージド KMS キーを使用して新しい IAM アイデンティティセンターインスタンスを有効にする場合は、「カスタマーマネージド KMS キーと高度な KMS キーポリシーに関する考慮事項」を参照してください。

  • ID ソースの変更。Active Directory との間で ID ソースを変更する場合、暗号化コンテキストには特別な注意が必要です。「ID ソースの変更に関する注意事項」を参照してください。

ポリシーテンプレート

セキュリティ要件に基づいて、これらの高度なポリシーテンプレートから選択します。きめ細かなアクセスコントロールと、導入する管理オーバーヘッドのバランスを取ります。

ここで説明するトピックは以下の通りです。

特定の IAM アイデンティティセンターインスタンスの読み取り専用使用のための KMS ポリシーステートメント

このポリシーは、IAM アイデンティティセンターへの読み取りアクセスのみを必要とするセキュリティ監査担当者やその他の担当者が KMS キーを使用することを許可します。

このポリシーを使用するには以下を実行します。

  1. 読み取り専用管理者 IAM プリンシパルの例を実際の管理者 IAM プリンシパルに置き換えます。

  2. IAM アイデンティティセンターインスタンス ARN の例を実際のインスタンス ARN に置き換えます。

  3. サンプルの ID ストア ARN を実際の ID ストア ARN に置き換える

  4. 委任管理を使用している場合は、ステップ 4: KMS キーをクロスアカウントで使用するように IAM ポリシーを設定する を参照してください

これらの識別子の値の検索に関するヘルプが必要な場合は、「必要な識別子を検索する」を参照してください。

テンプレートを値で更新したら、 ステップ 2: KMS キーポリシーステートメントを準備する に戻り、必要に応じて追加の KMS キーポリシーステートメントを準備します。

kms:Decrypt アクションだけでは、読み取り専用オペレーションへのアクセスは制限されません。IAM ポリシーは、IAM アイデンティティセンターサービス API に読み取り専用アクセスを適用する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadOnlyAccessToIdentityCenterAPI", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyAdminRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "arn:aws:sso:::instance/ssoins-1234567890abcdef", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowReadOnlyAccessToIdentityStoreAPI", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyAdminRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "arn:aws:identitystore::111122223333:identitystore/d-1234567890" } } } ] }

AWS マネージドアプリケーションを使用するための改良された KMS キーポリシーステートメント

これらのポリシーテンプレートにより、KMS キーを使用できる AWS マネージドアプリケーションをより詳細にコントロールできます。

注記

一部の AWS マネージドアプリケーションは、カスタマーマネージド KMS キーで設定された IAM アイデンティティセンターでは使用できません。「AWS IAM アイデンティティセンターで使用できるマネージドアプリケーション」を参照してください。

AWS マネージドアプリケーションを使用するためのベースライン KMS キーと IAM ポリシーステートメント は、同じ AWS 組織内の任意のアカウントの任意の AWS マネージドアプリケーションに KMS キーの使用を許可します。これらの洗練されたポリシーを使用して、以下によってアクセスを制限します。

  • アプリケーションサービスプリンシパル

  • アプリケーションインスタンス ARN

  • AWS アカウント ID

  • 特定の IAM アイデンティティセンターインスタンスの暗号化コンテキスト

注記

サービスプリンシパルは、 AWSサービスの一意の識別子で、通常は servicename.amazonaws.com (Amazon EMR の場合は elasticmapreduce.amazonaws.com など) の形式です。

アカウントによる制限

この KMS キーポリシーステートメントテンプレートにより、特定の AWS アカウントの AWS マネージドアプリケーションは、特定の IAM アイデンティティセンターインスタンスを使用して KMS キーを使用できます。

このポリシーを使用するには以下を実行します。

  1. サンプルサービスプリンシパルを実際のアプリケーションサービスプリンシパルに置き換える

  2. サンプルアカウント ID を、AWS マネージドアプリケーションをデプロイする実際のアカウント ID に置き換えます。

  3. サンプルの ID ストア ARN を実際の ID ストア ARN に置き換える

  4. IAM アイデンティティセンターインスタンス ARN の例を実際のインスタンス ARN に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowServiceInSpecificAccountsToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "Service": "myapp.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666" ] }, "StringLike": { "kms:ViaService": "sso.*.amazonaws.com", "kms:EncryptionContext:aws:sso:instance-arn": "arn:aws:sso:::instance/ssoins-1234567890abcdef" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } }, { "Sid": "AllowServiceInSpecificAccountsToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "Service": "myapp.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666" ] }, "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "arn:aws:identitystore::111122223333:identitystore/d-1234567890" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } } ] }

アプリケーションインスタンスによる制限

この KMS キーポリシーステートメントテンプレートは、特定の AWS マネージドアプリケーションインスタンスが特定の IAM アイデンティティセンターインスタンスを使用して KMS キーを使用できるようにします。

このポリシーを使用するには以下を実行します。

  1. サンプルサービスプリンシパルを実際のアプリケーションサービスプリンシパルに置き換える

  2. サンプルアプリケーション ARN を実際のアプリケーションインスタンス ARN に置き換える

  3. サンプルの ID ストア ARN を実際の ID ストア ARN に置き換える

  4. IAM アイデンティティセンターインスタンス ARN の例を実際のインスタンス ARN に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificAppInstanceToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "Service": "myapp.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceARN": "arn:aws:myapp:us-east-1:111122223333:application/my-application" }, "StringLike": { "kms:ViaService": "sso.*.amazonaws.com", "kms:EncryptionContext:aws:sso:instance-arn": "arn:aws:sso:::instance/ssoins-1234567890abcdef" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } }, { "Sid": "AllowSpecificAppInstanceToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "Service": "myapp.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceARN": "arn:aws:myapp:us-east-1:111122223333:application/my-application" }, "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "arn:aws:identitystore::111122223333:identitystore/d-1234567890" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } } ] }