本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
高级 KMS 密钥策略声明
使用高级 KMS 密钥策略声明对客户托管的 KMS 密钥实施更精细的访问控制。这些策略以此为基础,添加基准 KMS 密钥和 IAM 策略声明了加密上下文条件和特定于服务的限制。在决定是否使用高级 KMS 密钥策略声明之前,请务必查看相关注意事项。
使用加密上下文限制访问
通过在密钥策略声明中指定加密上下文条件,您可以将 KMS 密钥的使用限制为特定的 IAM Identity Center 实例。基准关键政策声明已经包含了具有通用值的上下文。将 “*” 通配符替换为特定的身份中心实例 ARN 和 Identity Store ARN,以确保该密钥仅适用于您的目标实例。您也可以将相同的加密上下文条件添加到为跨账户使用 KMS 密钥而配置的 IAM 策略中。
Identity Center
"StringEquals": { "kms:EncryptionContext:aws:sso:instance-arn": "arn:aws:sso:::instance/ssoins-1234567890abcdef" }
Identity Store
"StringEquals": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "arn:aws:identitystore::111122223333:identitystore/d-1234567890" }
如果您在查找这些标识符时需要帮助,请参阅找到所需的标识符。
注意
您只能将客户托管的 KMS 密钥与 IAM Identity Center 的组织实例一起使用。客户托管的密钥必须位于 Amazon 组织的管理账户中,这有助于确保该密钥用于单个 IAM Identity Center 实例。但是,加密上下文机制为单实例的使用提供了独立的技术保障。您还可以在面向身份中心和身份存储服务主体的 KMS 密钥策略声明中使用aws:SourceArn条件密钥。
实现加密上下文条件的注意事项
在实施加密上下文条件之前,请查看以下要求:
-
DescribeKey 行动。加密上下文不能应用于 “kms:DescribeKey” 操作,IAM Identity Center 管理员可以使用该操作。配置 KMS 密钥策略时,请排除此特定操作的加密上下文,以确保您的 IAM Identity Center 实例正常运行。
-
新实例设置。如果您要使用客户托管 KMS 密钥启用新的 IAM 身份中心实例,请参阅客户托管的 KMS 密钥和高级 KMS 密钥策略的注意事项。
-
身份来源发生变化。将身份源更改为 Active Directory 或从 Active Directory 更改时,需要特别注意 请参阅更改身份源的注意事项。
策略模板
根据您的安全要求从这些高级策略模板中进行选择。在精细的访问控制与其带来的管理开销之间取得平衡。
这里涵盖的主题:
-
针对特定 IAM 身份中心实例只读使用的 KMS 政策声明。 本节演示如何使用加密上下文对 IAM Identity Center 进行只读访问。
-
完善了用于 Amazon 托管应用程序的 KMS 密钥策略声明。 本节演示如何使用加密上下文和应用程序信息(例如应用程序服务主体、应用程序 ARN 和 Amazon 账户 ID)完善 Amazon 托管应用程序的 KMS 密钥策略。
针对特定 IAM 身份中心实例只读使用的 KMS 政策声明
此策略允许安全审计员和其他只需要对 IAM 身份中心具有读取权限的人员使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例中的只读管理员 IAM 委托人替换为您实际的管理员 IAM 委托人
将示例 IAM 身份中心实例 ARN 替换为实际实例 ARN
将示例身份存储 ARN 替换为实际的身份存储 ARN
如果使用委托管理,请参阅 步骤 4:为跨账户使用 KMS 密钥配置 IAM 策略
如果您需要帮助来查找这些标识符的值,请参阅找到所需的标识符。
使用您的值更新模板后,请根据需要返回步骤 2:准备 KMS 密钥策略声明准备其他 KMS 密钥策略声明。
单独的 “ kms:解密” 操作并不能限制只读操作的访问权限。IAM 策略必须对 IAM 身份中心服务强制执行只读访问权限 APIs。
{ "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" } } } ] }
完善了用于 Amazon 托管应用程序的 KMS 密钥策略声明
这些策略模板可以更精细地控制哪些 Amazon 托管应用程序可以使用您的 KMS 密钥。
注意
某些 Amazon 托管应用程序不能与配置了客户托管 KMS 密钥的 IAM 身份中心一起使用。查看可与 IAM 身份中心配合使用的Amazon 托管应用程序。
用于 Amazon 托管应用程序的基准 KMS 密钥和 IAM 策略声明允许来自同一 Amazon 组织中任何账户的任何 Amazon 托管应用程序使用 KMS 密钥。使用这些经过完善的策略通过以下方式限制访问权限:
应用程序服务负责人
应用程序实例 ARNs
Amazon account IDs
特定 IAM 身份中心实例的加密上下文
注意
服务主体是服务的唯一标识符,通常格式为 servicename.amazonaws.com(例如,亚马逊 EMR 的 elasticmapreduce.amazonaws.com)。 Amazon
按账户限制
此 KMS 密钥策略声明模板允许特定 Amazon 账户中的 Amazon 托管应用程序通过特定的 IAM Identity Center 实例使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例服务主体替换为实际的应用程序服务主体
将示例账户 IDs 替换为部署 Amazon 托管应用程序 IDs 的实际账户
将示例身份存储 ARN 替换为实际的身份存储 ARN
将示例 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 密钥策略声明模板允许特定的 Amazon 托管应用程序实例通过特定的 IAM Identity Center 实例使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例服务主体替换为实际的应用程序服务主体
将示例应用程序 ARN 替换为实际应用实例 ARN
将示例身份存储 ARN 替换为实际的身份存储 ARN
将示例 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" } } } ] }