本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
基准 KMS 密钥和 IAM 策略声明
注意
客户托管的 KMS 密钥 AWS IAM Identity Center 目前在部分 AWS 地区可用。
此处提供的基准 KMS 密钥和基于身份的策略可作为常见要求的基础。我们还建议您查看高级 KMS 密钥策略声明提供更精细的访问控制的内容,例如确保只有特定的 IAM Identity Center 实例或 AWS 托管应用程序才能访问 KMS 密钥。在使用高级 KMS 密钥策略声明之前,请查看选择基准与高级 KMS 密钥策略声明的注意事项。
以下各节提供了每个用例的基准政策声明。复制与您的用例相匹配的 KMS 密钥策略声明,然后返回到步骤 2:准备 KMS 密钥策略声明。
使用 IAM 身份中心的基准 KMS 密钥策略声明(必填)
使用步骤 2:准备 KMS 密钥策略声明以下 KMS 密钥策略声明模板允许 IAM 身份中心、其关联的身份存储和 IAM 身份中心管理员使用 KMS 密钥。
-
在委托人元素中指定您的 IAM 身份中心管理员的 IAM 委托人。有关 IAM 委托人的更多信息,请参阅 I AM 用户指南中的指定委托人。
Identity Store 有自己的服务主体
identitystore.amazonaws.com
,必须允许该主体使用 KMS 密钥。这些政策声明允许您的任何 IAM 身份中心实例使用 KMS 密钥。要限制对特定 IAM 身份中心实例的访问权限,请参阅高级 KMS 密钥策略声明。
KMS 密钥政策声明
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*", "kms:ViaService": "identitystore.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterAdminToDescribeTheKMSKey", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "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": "*" } } }, { "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": "*" } } }, { "Sid": "AllowIAMIdentityCenterAndIdentityStoreToDescribeKMSKey", "Effect": "Allow", "Principal": { "Service": [ "identitystore.amazonaws.com", "sso.amazonaws.com" ] }, "Action": "kms:DescribeKey", "Resource": "*" } ] }
使用中的步骤 4:为跨账户使用 KMS 密钥配置 IAM 策略以下 IAM 策略声明模板允许 IAM 身份中心管理员使用 KMS 密钥。
将资源元素中的示例密钥 ARN 替换为实际的 KMS 密钥 ARN。有关查找引用标识符值的帮助,请参阅找到所需的标识符。
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 托管应用程序。
使用以下 KMS 密钥策略声明模板步骤 2:准备 KMS 密钥策略声明允许 AWS 托管应用程序及其管理员使用 KMS 密钥。
在 AWS Organizations 身份证条件下输入您的 PrincipalOrg身份证。有关查找引用标识符值的帮助,请参阅找到所需的标识符。
这些策略声明允许同一个 AWS AWS Organizations 托管应用程序使用 KMS 密钥。要将这些政策声明限制在特定的 AWS 托管应用程序、账户或 IAM Identity Center 实例上,请参阅高级 KMS 密钥策略声明。
KMS 密钥政策声明
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowAppAdminsInTheSameOrganizationToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": "*", "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "${organization_ID}" }, "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": "${organization_ID}" }, "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" } } }, { "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" } } } ] }
使用中的步骤 4:为跨账户使用 KMS 密钥配置 IAM 策略以下 IAM 策略声明模板允许 AWS 托管应用程序的管理员使用成员账户中的 KMS 密钥。
将资源元素中的示例 ARN 替换为实际的 KMS 密钥 ARN。有关查找引用标识符值的帮助,请参阅找到所需的标识符。
某些 AWS 托管应用程序要求您配置 IAM 身份中心和身份存储的权限 APIs。在您的 IAM Identity Center 中配置客户托管密钥之前,请确保这些权限还允许使用 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" ] } } }] }
供使用的基准 KMS 密钥声明 AWS Control Tower
使用中的步骤 2:准备 KMS 密钥策略声明以下 KMS 密钥声明模板允许 Cont AWS rol Tower 管理员使用 KMS 密钥。
在委托人字段中指定用于访问 IAM 身份中心的 IAM 委托人。 APIs 有关 IAM 委托人的更多信息,请参阅 I AM 用户指南中的指定委托人。
这些政策声明允许 Cont AWS rol Tower 管理员通过您的任何 IAM 身份中心实例使用 KMS 密钥。但是,Cont AWS rol Tower 限制访问同一组织中 IAM 身份中心的 AWS 组织实例。由于这一限制,如中所述,进一步将 KMS 密钥限制为特定的 IAM Identity Center 实例没有任何实际好处高级 KMS 密钥策略声明。
KMS 密钥策略语句:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowControlTowerAdminRoleToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "${Control_Tower_Admins}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowControlTowerAdminRoleToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "${Control_Tower_Admins}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "*" } } } ] }
AWS Control Tower 不支持委托管理,因此,您无需为其管理员配置 IAM 策略。
用于亚马逊弹性计算云 Windows 实例的 IAM 身份中心的基准 KMS 密钥和 IAM 策略声明
在中使用以下 KMS 密钥策略声明模板,步骤 2:准备 KMS 密钥策略声明允许单点登录 (SSO) 到亚马逊 EC2 Windows 实例的用户跨账户使用 KMS 密钥。
KMS 密钥政策语句:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowIAMIdentityCenterPermisionSetRoleToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "${Permission_Set_IAM_Role}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterPermisionSetRoleToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "${Permission_Set_IAM_Role}" }, "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 AWS 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 身份中心使用自定义工作流程
使用中的步骤 2:准备 KMS 密钥策略声明以下 KMS 密钥策略声明模板允许 Organization AWS s 管理账户或委托管理账户中的自定义工作流程使用 KMS 密钥。
KMS 密钥策略语句:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowCustomWorkflowToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "${Workflow_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "*", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowCustomWorkflowToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "${Workflow_IAM_principal}" }, "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": "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" ] } } }] }