本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
高级 KMS 密钥策略声明
注意
客户托管的 KMS 密钥 AWS IAM Identity Center 目前在部分 AWS 地区可用。
使用高级 KMS 密钥策略声明对客户托管的 KMS 密钥实施更精细的访问控制。这些策略以此为基础,添加基准 KMS 密钥和 IAM 策略声明了加密上下文条件和特定于服务的限制。在决定是否使用高级 KMS 密钥策略声明之前,请务必查看相关注意事项。
使用加密上下文限制访问
通过在密钥策略声明中添加加密上下文条件,您可以将 KMS 密钥的使用限制为特定的 IAM Identity Center 实例。此条件使用 IAM 身份中心实例 ARN 和身份存储 ARN 来确保密钥仅适用于您的目标实例。将此条件添加到任何基准策略声明中:
Identity Center
"StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}" }
Identity Store
"StringLike": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}" }
将示例 ARNs 替换为实际的 ARN 值。如果您在查找这些标识符时需要帮助,请参阅找到所需的标识符。
实现加密上下文条件的注意事项
在实施加密上下文条件之前,请查看以下要求:
-
DescribeKey 行动。加密上下文不能应用于 “kms:DescribeKey” 操作,IAM Identity Center 管理员可以使用该操作。配置 KMS 密钥策略时,请排除此特定操作的加密上下文,以确保您的 IAM Identity Center 实例正常运行。
-
新实例设置。如果您要使用客户托管 KMS 密钥启用新的 IAM 身份中心实例,请参阅客户托管的 KMS 密钥和高级 KMS 密钥策略的注意事项。
-
身份来源发生变化。将身份源更改为 Active Directory 或从 Active Directory 更改时,需要特别注意 请参阅更改身份源的注意事项。
策略模板
根据您的安全要求从这些高级策略模板中进行选择。在精细的访问控制与其带来的管理开销之间取得平衡。
这里涵盖的主题:
-
使用特定 IAM 身份中心实例的 KMS 密钥政策声明。 本节演示如何使用加密上下文来使用 IAM Identity Center,而不将其应用于 “k DescribeKey ms:” 操作。对于其他用例,您可以在基准 KMS 策略声明中添加加密上下文条件,如上所述。
-
针对特定 IAM 身份中心实例只读使用的 KMS 政策声明。 本节演示如何使用加密上下文对 IAM Identity Center 进行只读访问。
-
完善了用于 AWS 托管应用程序的 KMS 密钥策略声明。 本节演示如何使用加密上下文和应用程序信息(例如应用程序服务主体、应用程序 ARN 和 AWS 账户 ID)完善 AWS 托管应用程序的 KMS 密钥策略。
使用特定 IAM 身份中心实例的 KMS 密钥政策声明
这些政策声明允许特定 IAM Identity Center 实例的管理员使用 KMS 密钥,同时仅限制对该实例的访问。
注意
目前,您只能将客户托管的 KMS 密钥与 IAM Identity Center 的组织实例一起使用。客户托管密钥必须位于 AWS 组织的管理账户中,这有助于确保该密钥用于单个 IAM Identity Center 实例。但是,加密上下文机制为单实例的使用提供了独立的技术保障。
管理员访问策略
以下策略声明模板允许 IAM Identity Center 及其关联身份存储的特定实例的管理员使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例管理员 IAM 委托人替换为您实际的管理员 IAM 委托人
将示例 IAM 身份中心实例 ARN 替换为实际实例 ARN
将示例身份存储 ARN 替换为实际的身份存储 ARN
如果您需要帮助来查找这些标识符的值,请参阅找到所需的标识符。
使用您的值更新模板后,请根据需要返回步骤 2:准备 KMS 密钥策略声明准备其他 KMS 密钥策略声明。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowSpecificIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowSpecificIAMIdentityCenterAdminToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}", "kms:ViaService": "identitystore.*.amazonaws.com" } } }, { "Sid": "AllowIAMIdentityCenterAdminToDescribeTheKMSKey", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }
服务访问政策
以下策略声明模板允许 IAM Identity Center 的特定实例及其关联的身份存储使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例 IAM 身份中心实例 ARN 替换为实际实例 ARN
将示例身份存储 ARN 替换为实际的身份存储 ARN
如果您需要帮助来查找这些标识符的值,请参阅找到所需的标识符。
使用您的值更新模板后,请根据需要返回步骤 2:准备 KMS 密钥策略声明准备其他 KMS 密钥策略声明。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowSpecificIAMIdentityCenterToUseTheKMSKey", "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": "${identity_center_arn}" } } }, { "Sid": "AllowSpecificIAMIdentityStoreToUseTheKMSKey", "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": "${identity_store_arn}" } } }, { "Sid": "AllowIAMIdentityCenterAndIdentityStoreToDescribeKMSKey", "Effect": "Allow", "Principal": { "Service": [ "identitystore.amazonaws.com", "sso.amazonaws.com" ] }, "Action": "kms:DescribeKey", "Resource": "*" } ] }
针对特定 IAM 身份中心实例只读使用的 KMS 政策声明
此策略允许安全审计员和其他只需要对 IAM 身份中心具有读取权限的人员使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例中的只读管理员 IAM 委托人替换为您实际的管理员 IAM 委托人
将示例 IAM 身份中心实例 ARN 替换为实际实例 ARN
将示例身份存储 ARN 替换为实际的身份存储 ARN
如果使用委托管理,请参阅 步骤 4:为跨账户使用 KMS 密钥配置 IAM 策略
如果您需要帮助来查找这些标识符的值,请参阅找到所需的标识符。
使用您的值更新模板后,请根据需要返回步骤 2:准备 KMS 密钥策略声明准备其他 KMS 密钥策略声明。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowReadOnlyAccessToIdentityCenterAPI", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}", "kms:ViaService": "sso.*.amazonaws.com" } } }, { "Sid": "AllowReadOnlyAccessToIdentityStoreAPI", "Effect": "Allow", "Principal": { "AWS": "${Admin_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}" } } } ] }
完善了用于 AWS 托管应用程序的 KMS 密钥策略声明
这些策略模板可以更精细地控制哪些 AWS 托管应用程序可以使用您的 KMS 密钥。
注意
某些 AWS 托管应用程序不能与配置了客户托管 KMS 密钥的 IAM 身份中心一起使用。查看可与 IAM 身份中心配合使用的AWS 托管应用程序。
用于 AWS 托管应用程序的基准 KMS 密钥和 IAM 策略声明允许来自同一 AWS 组织中任何账户的任何 AWS 托管应用程序使用 KMS 密钥。使用这些经过完善的策略通过以下方式限制访问权限:
应用程序服务负责人
应用程序实例 ARNs
AWS account IDs
特定 IAM 身份中心实例的加密上下文
注意
服务主体是服务的唯一标识符,通常格式为 servicename.amazonaws.com(例如,亚马逊 EMR 的 elasticmapreduce.amazonaws.com)。 AWS
按账户限制
此 KMS 密钥策略声明模板允许特定 AWS 账户中的 AWS 托管应用程序通过特定的 IAM Identity Center 实例使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例服务主体替换为实际的应用程序服务主体
将示例账户 IDs 替换为实际账户 IDs
将示例身份存储 ARN 替换为实际的身份存储 ARN
将示例 IAM 身份中心实例 ARN 替换为实际实例 ARN
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowServiceInSpecificAccountsToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "Service": "${app_SPN_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:sourceAccount": [ "${account_id_1}", "${account_id_2}" ] }, "StringLike": { "kms:ViaService": "sso.*.amazonaws.com", "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } }, { "Sid": "AllowServiceInSpecificAccountsToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "Service": "${app_SPN_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:sourceAccount": [ "${account_id_1}", "${account_id_2}" ] }, "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } } ] }
按应用程序实例进行限制
此 KMS 密钥策略声明模板允许特定的 AWS 托管应用程序实例通过特定的 IAM Identity Center 实例使用 KMS 密钥。
要使用此政策,请执行以下操作:
将示例服务主体替换为实际的应用程序服务主体
将示例应用程序 ARN 替换为实际应用实例 ARN
将示例身份存储 ARN 替换为实际的身份存储 ARN
将示例 IAM 身份中心实例 ARN 替换为实际实例 ARN
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowSpecificAppInstanceToUseTheKMSKeyViaIdentityCenter", "Effect": "Allow", "Principal": { "Service": "${app_SPN_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceARN": "${app_arn}" }, "StringLike": { "kms:ViaService": "sso.*.amazonaws.com", "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } }, { "Sid": "AllowSpecificAppInstanceToUseTheKMSKeyViaIdentityStore", "Effect": "Allow", "Principal": { "Service": "${app_SPN_IAM_principal}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceARN": "${app_arn}" }, "StringLike": { "kms:ViaService": "identitystore.*.amazonaws.com", "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}" }, "Bool": { "aws:PrincipalIsAWSService": "true" } } } ] }