基准 KMS 密钥和 IAM 策略声明 - Amazon IAM Identity Center
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

基准 KMS 密钥和 IAM 策略声明

此处提供的基准 KMS 密钥和基于身份的策略可作为常见要求的基础。我们还建议您查看高级 KMS 密钥策略声明提供更精细的访问控制的内容,例如确保只有特定的 IAM Identity Center 实例或 Amazon 托管应用程序才能访问 KMS 密钥。在使用高级 KMS 密钥策略声明之前,请查看选择基准与高级 KMS 密钥策略声明的注意事项

以下各节提供了每个用例的基准政策声明。复制与您的用例相匹配的 KMS 密钥策略声明,然后返回到步骤 2:准备 KMS 密钥策略声明

使用 IAM 身份中心的基准 KMS 密钥策略声明(必填)

在中使用步骤 2:准备 KMS 密钥策略声明以下 KMS 密钥策略声明模板允许 IAM Identity Center、其关联的身份存储和 IAM 身份中心管理员使用 KMS 密钥。

  • 在管理员策略声明的委托人元素中,使用 “arn: aws: iam:: 111122223333: root” 的格式指定 IAM Identity Center 管理账户(即 Amazon 组织管理账户和委托管理账户)的账户委托人。 Amazon

  • 在 PrincipalArn 元素中,将示例 ARNs 替换为 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_*"

    使用通配符 (*) 可防止在删除并重新创建权限集时丢失访问权限,因为 Identity Center 会为重新创建的权限集生成新的唯一标识符。有关实现示例,请参阅自定义信任策略示例

  • 在 SourceAccount 元素中,指定 IAM 身份中心账户 ID。

  • Identity Store 有自己的服务主体identitystore.amazonaws.com,必须允许该主体使用 KMS 密钥。

  • 这些政策声明允许您在特定 Amazon 账户中的 IAM 身份中心实例使用 KMS 密钥。要限制对特定 IAM 身份中心实例的访问权限,请参阅高级 KMS 密钥策略声明。每个 Amazon 账户只能有一个 IAM 身份中心实例。

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 密钥访问权限,但不限制哪些 Amazon 服务可以发出请求。KMS 密钥策略通常提供这些服务限制。但是,您可以向此 IAM 策略添加加密上下文,将使用限制为特定 Identity Center 实例。有关详细信息,请参阅高级 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": "*" } ] }

用于 Amazon 托管应用程序的基准 KMS 密钥和 IAM 策略声明

注意

某些 Amazon 托管应用程序不能与配置了客户托管 KMS 密钥的 IAM 身份中心一起使用。有关更多信息,请参阅与 IAM 身份中心配合使用的Amazon 托管应用程序

使用以下 KMS 密钥策略声明模板步骤 2:准备 KMS 密钥策略声明允许 Amazon 托管应用程序及其管理员使用 KMS 密钥。

  • 在 Amazon Organizations 身份证和 SourceOrgId 条件中插入您的 PrincipalOrg身份证件。有关查找引用标识符值的帮助,请参阅找到所需的标识符

  • 这些政策声明允许您的任何 Amazon 托管应用程序和 Amazon 组织中的任何 IAM 委托人(应用程序管理员)通过 IAM Identity Center 和 Identity kms: Store 使用 Decrypt。要将这些政策声明限制在特定的 Amazon 托管应用程序、账户或 IAM Identity Center 实例上,请参阅高级 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 策略声明模板允许 Amazon 托管应用程序的管理员使用成员账户中的 KMS 密钥。

  • 将资源元素中的示例 ARN 替换为实际的 KMS 密钥 ARN。有关查找引用标识符值的帮助,请参阅找到所需的标识符

  • 某些 Amazon 托管应用程序要求您为 IAM 身份中心服务配置权限 APIs。在 IAM Identity Center 中配置客户托管密钥之前,请确认这些权限也允许使用 KMS 密钥。有关特定的 KMS 密钥权限要求,请参阅已部署的每个 Amazon 托管应用程序的文档。

Amazon 托管应用程序管理员需要的 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" ] } } }] }

供使用的基准 KMS 密钥声明 Amazon Control Tower

使用中的步骤 2:准备 KMS 密钥策略声明以下 KMS 密钥声明模板允许 Cont Amazon rol Tower 管理员使用 KMS 密钥。

  • 在委托人元素中,指定用于访问 IAM 身份中心服务 APIs的 IAM 委托人。有关 IAM 委托人的更多信息,请参阅 I AM 用户指南中的指定委托人

  • 这些政策声明允许 Cont Amazon rol Tower 管理员通过您的任何 IAM 身份中心实例使用 KMS 密钥。但是,Cont Amazon rol Tower 限制访问同一组织中 IAM 身份中心的 Amazon 组织实例。由于这一限制,如中所述,进一步将 KMS 密钥限制为特定的 IAM Identity Center 实例没有任何实际好处高级 KMS 密钥策略声明

  • 要帮助防止 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": "*" } } } ] }

Amazon Control Tower 不支持委托管理,因此,您无需为其管理员配置 IAM 策略。

用于亚马逊弹性计算云 Windows 实例的 IAM 身份中心的基准 KMS 密钥和 IAM 策略声明

在中使用以下 KMS 密钥策略声明模板,步骤 2:准备 KMS 密钥策略声明允许单点登录 (SSO) 到亚马逊 EC2 Windows 实例的用户跨账户使用 KMS 密钥。

  • 在委托人字段中指定用于访问 IAM 身份中心的 IAM 委托人。有关 IAM 委托人的更多信息,请参阅 I AM 用户指南中的指定委托人

  • 本政策声明允许您的任何 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": "*" } } } ] }

使用中的步骤 4:为跨账户使用 KMS 密钥配置 IAM 策略以下 IAM 策略声明模板允许 EC2 Windows 实例的 SSO 使用 KMS 密钥。

将 IAM 政策声明附加到 IAM 身份中心中用于允许 SSO 访问亚马逊 EC2 Windows 实例的现有权限集。有关 IAM 策略示例,请参阅 S Amazon ystems Manager 用户指南中的远程桌面协议连接

  • 将资源元素中的示例 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" ] } } }] }

基准 KMS 密钥和 IAM 策略声明,以便在 IAM 身份中心使用自定义工作流程

使用以下 KMS 密钥策略声明模板步骤 2:准备 KMS 密钥策略声明允许 Amazon Organizations 管理账户或委托管理账户中的自定义工作流程(例如客户托管的应用程序)使用 KMS 密钥。

  • 在委托人元素中,指定用于访问 IAM 身份中心服务 APIs的 IAM 委托人。有关 IAM 委托人的更多信息,请参阅 I AM 用户指南中的指定委托人

  • 这些政策声明允许您的工作流程通过任何 IAM Identity Center 实例使用 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 委托人。

  • 将资源元素中的示例 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" ] } } }] }