ベースライン KMS キーと IAM ポリシーステートメント - AWS IAM Identity Center

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

ベースライン KMS キーと IAM ポリシーステートメント

ここで提供されるベースライン KMS キーと ID ベースのポリシーは、一般的な要件の基盤として機能します。また、KMS キーが特定の IAM アイデンティティセンターインスタンスまたは AWS マネージドアプリケーションにのみアクセス可能であることを確認するなど、より詳細なアクセスコントロールを提供する 高度な KMS キーポリシーステートメント を確認することをお勧めします。高度な KMS キーポリシーステートメントを使用する前に、「ベースラインとアドバンスト KMS キーポリシーステートメントの選択に関する考慮事項」を確認してください。

以下のセクションでは、各ユースケースのベースラインポリシーステートメントについて説明します。ユースケースに一致する KMS キーポリシーステートメントをコピーし、ステップ 2: KMS キーポリシーステートメントを準備する に戻ります。

IAM アイデンティティセンターを使用するためのベースライン KMS キーポリシーステートメント (必須)

で次の KMS キーポリシーステートメントテンプレートを使用してステップ 2: KMS キーポリシーステートメントを準備する、IAM アイデンティティセンター、関連付けられた ID ストア、および IAM アイデンティティセンター管理者が KMS キーを使用できるようにします。

  • 管理者ポリシーステートメントのプリンシパル要素で、「arn:aws:iam::111122223333:root」の形式を使用して、AWS 組織管理アカウントと委任管理アカウントである IAM アイデンティティセンターの管理アカウントの AWS アカウントプリンシパルを指定します。

  • PrincipalArn 要素で、サンプル ARN を IAM アイデンティティセンター管理者の IAM ロールに置き換えます。

    以下のいずれかを指定できます。

    • 特定の IAM ロール ARN:

      "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/ap-southeast-2/AWSReservedSSO_permsetname_12345678"

    • ワイルドカードパターン (推奨):

      "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/ap-southeast-2/AWSReservedSSO_permsetname_*"

    ワイルドカード (*) を使用すると、アイデンティティセンターが再作成されたアクセス許可セットの新しい一意の識別子を生成するため、アクセス許可セットが削除されて再作成された場合にアクセスが失われるのを防ぎます。実装の例については、「カスタム信頼ポリシーの例」を参照してください。

  • SourceAccount 要素で、IAM アイデンティティセンターアカウント ID を指定します。

  • ID ストアには独自のサービスプリンシパル identitystore.amazonaws.com があり、KMS キーの使用を許可する必要があります。

  • これらのポリシーステートメントにより、特定の AWS アカウントの IAM アイデンティティセンターインスタンスが KMS キーを使用できるようになります。特定の IAM アイデンティティセンターインスタンスへのアクセスを制限するには、「高度な KMS キーポリシーステートメント」を参照してください。AWS アカウントごとに IAM アイデンティティセンターインスタンスを 1 つだけ持つことができます。

KMS キーポリシーステートメント

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdminPermissionSet_*", "arn:aws:iam::444455556666:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_DelegatedAdminSet_*" ] }, "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdminPermissionSet_*", "arn:aws:iam::444455556666:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_DelegatedAdminSet_*" ] }, "StringLike": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*", "kms:ViaService": "identitystore.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterAdminToDescribeTheKMSKey", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ] }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdminPermissionSet_*", "arn:aws:iam::444455556666:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_DelegatedAdminSet_*" ] } } }, { "Sid": "AllowIAMIdentityCenterToUseTheKMSKey", "Effect": "Allow", "Principal": { "Service": "sso.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }, { "Sid": "AllowIAMIdentityStoreToUseTheKMSKey", "Effect": "Allow", "Principal": { "Service": "identitystore.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }, { "Sid": "AllowIAMIdentityCenterAndIdentityStoreToDescribeKMSKey", "Effect": "Allow", "Principal": { "Service": [ "identitystore.amazonaws.com", "sso.amazonaws.com" ] }, "Action": "kms:DescribeKey", "Resource": "*" } ] }

ステップ 4: KMS キーをクロスアカウントで使用するように IAM ポリシーを設定する で次の IAM ポリシーステートメントテンプレートを使用して、IAM アイデンティティセンター管理者が KMS キーを使用できるようにします。

  • Resource 要素のキー ARN の例を実際の KMS キー ARN に置き換えます。参照される識別子の値を見つける方法については、「必要な識別子を検索する」を参照してください。

  • これらの IAM ポリシーステートメントは、IAM プリンシパルへの KMS キーアクセスを許可しますが、リクエストを実行できる AWS サービスを制限しません。KMS キーポリシーは通常、これらのサービス制限を提供します。ただし、この IAM ポリシーに暗号化コンテキストを追加して、特定のアイデンティティセンターインスタンスの使用を制限できます。詳細については、「高度な KMS キーポリシーステートメント」を参照してください。

IAM アイデンティティセンターの委任管理者に必要な IAM ポリシーステートメント

{ "Version": "2012-10-17", "Statement": [{ "Sid": "IAMPolicyToAllowIAMIdentityCenterAdminToUseKMSkey", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Sid": "IAMPolicyToAllowIAMIdentityCenterAdminToListKeyAliases", "Effect": "Allow", "Action": "kms:ListAliases", "Resource": "*" } ] }

AWS マネージドアプリケーションを使用するためのベースライン KMS キーと IAM ポリシーステートメント

注記

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

ステップ 2: KMS キーポリシーステートメントを準備する で次の KMS キーポリシーステートメントテンプレートを使用して、AWS マネージドアプリケーションとその管理者の両方が KMS キーを使用できるようにします。

  • PrincipalOrgID および SourceOrgId 条件に AWS Organizations ID を挿入します。参照される識別子の値を見つける方法については、「必要な識別子を検索する」を参照してください。

  • これらのポリシーステートメントにより、AWS 組織の任意の AWS マネージドアプリケーションと任意の IAM プリンシパル (アプリケーション管理者) は、IAM アイデンティティセンターと ID ストアを使用して kms:Decrypt を使用できます。これらのポリシーステートメントを特定の AWS マネージドアプリケーション、アカウント、または IAM アイデンティティセンターインスタンスに制限するには、「高度な KMS キーポリシーステートメント」を参照してください。

    * を特定の IAM プリンシパルに置き換えることで、特定のアプリケーション管理者へのアクセスを制限できます。アクセス許可セットが再作成されたときに IAM ロール名の変更から保護するには、カスタム信頼ポリシーの例 の アプローチを使用します。詳細については、「ベースラインとアドバンスト KMS キーポリシーステートメントの選択に関する考慮事項」を参照してください。

KMS キーポリシーステートメント

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAppAdminsInTheSameOrganizationToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": "*", "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5" }, "StringLike": { "kms:ViaService": "sso.*.amazonaws.com", "kms:EncryptionContext:aws:sso:instance-arn": "*" } } }, { "Sid": "AllowAppAdminsInTheSameOrganizationToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": "*", "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5" }, "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" } } }, { "Sid": "AllowManagedAppsToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": "*", "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "sso.*.amazonaws.com", "kms:EncryptionContext:aws:sso:instance-arn": "*" }, "Bool": { "aws:PrincipalIsAWSService": "true" }, "StringEquals": { "aws:SourceOrgID": "o-a1b2c3d4e5" } } }, { "Sid": "AllowManagedAppsToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": "*", "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" }, "Bool": { "aws:PrincipalIsAWSService": "true" }, "StringEquals": { "aws:SourceOrgID": "o-a1b2c3d4e5" } } } ] }

ステップ 4: KMS キーをクロスアカウントで使用するように IAM ポリシーを設定する で次の IAM ポリシーステートメントテンプレートを使用して、AWS マネージドアプリケーションの管理者がメンバーアカウントの KMS キーを使用できるようにします。

  • Resource 要素のサンプル ARN を実際の KMS キー ARN に置き換えます。参照される識別子の値を見つける方法については、「必要な識別子を検索する」を参照してください。

  • 一部の AWS マネージドアプリケーションでは、IAM アイデンティティセンターサービス API のアクセス許可を設定する必要があります。IAM アイデンティティセンターサービスでカスタマーマネージドキーを設定する前に、これらのアクセス許可で KMS キーの使用も許可されていることを確認してください。特定の KMS キーのアクセス許可要件については、デプロイした各 AWS マネージドアプリケーションのドキュメントを参照してください。

AWS マネージドアプリケーションの管理者に必要な IAM ポリシーステートメント:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityCenterAndIdentityStore", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringLike": { "kms:ViaService": [ "sso.*.amazonaws.com", "identitystore.*.amazonaws.com" ] } } }] }

AWS Control Tower を使用するためのベースライン KMS キーステートメント

ステップ 2: KMS キーポリシーステートメントを準備する で次の KMS キーステートメントテンプレートを使用して、AWS Control Tower 管理者が KMS キーを使用できるようにします。

  • Principal 要素で、IAM アイデンティティセンターサービス API へのアクセスに使用される IAM プリンシパルを指定します。IAM プリンシパルの詳細については、「IAM ユーザーガイド」の「プリンシパルの指定」を参照してください。

  • これらのポリシーステートメントにより、AWS Control Tower 管理者は任意の IAM アイデンティティセンターインスタンスを通じて KMS キーを使用できます。ただし、AWS Control Tower は、同じ組織内の IAM アイデンティティセンターの AWS 組織インスタンスへのアクセスを制限します。この制限により、「高度な KMS キーポリシーステートメント」で説明されているように、KMS キーを特定の IAM アイデンティティセンターインスタンスにさらに制限する実用的な利点はありません。

  • アクセス許可セットが再作成されたときに IAM ロール名の変更から保護するには、「カスタム信頼ポリシーの例」で説明されている方法を使用します。

KMS キーポリシーステートメント:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowControlTowerAdminRoleToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/AWSControlTowerExecution" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowControlTowerAdminRoleToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/AWSControlTowerExecution" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" } } } ] }

AWS Control Tower は委任管理をサポートしていないため、管理者に IAM ポリシーを設定する必要はありません。

Amazon Elastic Compute Cloud Windows インスタンスに IAM アイデンティティセンターを使用するためのベースライン KMS キーと IAM ポリシーステートメント

ステップ 2: KMS キーポリシーステートメントを準備する で次の KMS キーポリシーステートメントテンプレートを使用して、Amazon EC2 Windows インスタンスへのシングルサインオン (SSO) のユーザーがアカウント間で KMS キーを使用できるようにします。

  • Principal フィールドで、IAM アイデンティティセンターへのアクセスに使用する IAM プリンシパルを指定します。IAM プリンシパルの詳細については、「IAM ユーザーガイド」の「プリンシパルの指定」を参照してください。

  • このポリシーステートメントは、任意の IAM アイデンティティセンターインスタンスに KMS キーの使用を許可します。特定の IAM アイデンティティセンターインスタンスへのアクセスを制限するには、「高度な KMS キーポリシーステートメント」を参照してください。

  • アクセス許可セットが再作成されたときに IAM ロール名の変更から保護するには、カスタム信頼ポリシーの例で説明されているアプローチを使用します。

KMS キーポリシーステートメント

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIAMIdentityCenterPermissionSetRoleToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_MyPermissionSet_1a2b3c4d5e6f7g8h" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterPermissionSetRoleToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_MyPermissionSet_1a2b3c4d5e6f7g8h" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" } } } ] }

次の IAM ポリシーステートメントテンプレートを ステップ 4: KMS キーをクロスアカウントで使用するように IAM ポリシーを設定する で使用して、EC2 Windows インスタンスへの SSO が KMS キーを使用できるようにします。

Amazon EC2 Windows インスタンスへの SSO アクセスを許可するために使用している IAM アイデンティティセンターの既存のアクセス許可セットに IAM ポリシーステートメントをアタッチします。IAM ポリシーの例については、「AWS Systems Manager ユーザーガイド」の「リモートデスクトッププロトコル接続」を参照してください。

  • Resource 要素のサンプル ARN を実際の KMS キー ARN に置き換えます。参照される識別子の値を見つける方法については、「必要な識別子を検索する」を参照してください。

アクセス許可セット IAM ポリシー:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "IAMPolicyToAllowKMSKeyUseViaIdentityCenterAndIdentityStore", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringLike": { "kms:ViaService": [ "sso.*.amazonaws.com", "identitystore.*.amazonaws.com" ] } } }] }

IAM アイデンティティセンターでカスタムワークフローを使用するためのベースライン KMS キーと IAM ポリシーステートメント

ステップ 2: KMS キーポリシーステートメントを準備する で次の KMS キーポリシーステートメントテンプレートを使用して、AWS Organizations 管理アカウントまたは委任管理アカウントのカスタマーマネージドアプリケーションなどのカスタムワークフローが KMS キーを使用できるようにします。

  • Principal 要素で、IAM アイデンティティセンターサービス API にアクセスするために使用される IAM プリンシパルを指定します。IAM プリンシパルの詳細については、「IAM ユーザーガイド」の「プリンシパルの指定」を参照してください。

  • これらのポリシーステートメントにより、ワークフローは任意の IAM アイデンティティセンターインスタンスを介して KMS キーを使用できます。特定の IAM アイデンティティセンターインスタンスへのアクセスを制限するには、「高度な KMS キーポリシーステートメント」を参照してください。

  • アクセス許可セットが再作成されたときに IAM ロール名の変更から保護するには、「カスタム信頼ポリシーの例」で説明されている方法を使用します。

KMS キーポリシーステートメント:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCustomWorkflowToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyCustomWorkflowRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowCustomWorkflowToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyCustomWorkflowRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" } } } ] }

次の IAM ポリシーステートメントテンプレートを ステップ 4: KMS キーをクロスアカウントで使用するように IAM ポリシーを設定する で使用して、カスタムワークフローに関連付けられた IAM プリンシパルがアカウント間で KMS キーを使用できるようにします。IAM ポリシーステートメントを IAM プリンシパルに追加します。

  • Resource 要素のサンプル ARN を実際の KMS キー ARN に置き換えます。参照される識別子の値を見つける方法については、「必要な識別子を検索する」を参照してください。

IAM ポリシーステートメント (クロスアカウント使用にのみ必要):

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowCustomWorkflowToUseTheKMSKeyViaIdentityCenterAndIdentityStore", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringLike": { "kms:ViaService": [ "sso.*.amazonaws.com", "identitystore.*.amazonaws.com" ] } } }] }