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

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

高级 KMS 密钥策略语句

使用高级 KMS 密钥策略语句为客户自主管理型 KMS 密钥实施更细粒度的访问控制。这些策略在 基线 KMS 密钥和 IAM 策略语句 的基础上,通过添加加密上下文条件和特定于服务的限制来构建。在决定是否使用高级 KMS 密钥策略语句之前,请务必查看相关的注意事项。

使用加密上下文限制访问

您可以通过在密钥策略语句中指定加密上下文条件,将 KMS 密钥使用限制为特定的 IAM Identity Center 实例。基线密钥策略语句已包含带有通用值的此上下文。将“*”通配符替换为特定的 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 实例一起使用。但是,加密上下文机制为单实例使用提供了独立的技术保障。您还可以在用于 Identity Center 和 Identity Store 服务主体的 KMS 密钥策略语句中使用 aws:SourceArn 条件键。

实施加密上下文条件的注意事项

在实施加密上下文条件之前,请查看这些要求:

  • DescribeKey 操作。加密上下文不能应用于“kms:DescribeKey”操作,该操作可由 IAM Identity Center 管理员使用。配置 KMS 密钥策略时,请排除此特定操作的加密上下文,以确保 IAM Identity Center 实例的正常运行。

  • 新实例设置。如果您正在使用客户自主管理型 KMS 密钥启用新的 IAM Identity Center 实例,请参阅 客户自主管理型 KMS 密钥和高级 KMS 密钥策略的注意事项

  • 身份源更改。将身份源更改为 Active Directory 或从 Active Directory 更改时,需要特别注意加密上下文。请参阅更改身份源的注意事项

策略模板

根据您的安全要求从这些高级策略模板中选择。在细粒度访问控制与其引入的管理开销之间取得平衡。

此处涵盖的主题:

用于特定 IAM Identity Center 实例只读使用的 KMS 策略语句

此策略允许安全审计员和其他仅需要对 IAM Identity Center 进行读取访问的人员使用 KMS 密钥。

要使用此策略:

  1. 将示例只读管理员 IAM 主体替换为您的实际管理员 IAM 主体

  2. 将示例 IAM Identity Center 实例 ARN 替换为您的实际实例 ARN

  3. 将示例 Identity Store ARN 替换为您的实际 Identity Store ARN

  4. 如果使用委托管理,请参阅 步骤 4:为 KMS 密钥的跨账户使用配置 IAM 策略

如果需要帮助来查找这些标识符的值,请参阅 查找所需的标识符

使用您的值更新模板后,返回到 步骤 2:准备 KMS 密钥策略语句,以根据需要准备其他 KMS 密钥策略语句。

仅 kms:Decrypt 操作本身并不能限制对只读操作的访问。IAM 策略必须在 IAM Identity Center 服务 API 上强制执行只读访问。

{ "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 Identity Center 一起使用。请参阅可与 IAM Identity Center 搭配使用的 Amazon 托管应用程序

用于 Amazon 托管应用程序的基线 KMS 密钥和 IAM 策略语句 允许来自同一 Amazon 组织中任何账户的任何 Amazon 托管应用程序使用 KMS 密钥。使用这些精细化策略通过以下方式限制访问:

  • 应用程序服务主体

  • 应用程序实例 ARN

  • Amazon 账户 ID

  • 特定 IAM Identity Center 实例的加密上下文

注意

服务主体是 Amazon 服务的唯一标识符,通常格式为 servicename.amazonaws.com(例如,Amazon EMR 的 elasticmapreduce.amazonaws.com)。

按账户限制

此 KMS 密钥策略语句模板允许特定 Amazon 账户中的 Amazon 托管应用程序使用特定的 IAM Identity Center 实例来使用 KMS 密钥。

要使用此策略:

  1. 将示例服务主体替换为您的实际应用程序服务主体

  2. 将示例账户 ID 替换为部署了 Amazon 托管应用程序的实际账户 ID

  3. 将示例 Identity Store ARN 替换为您的实际 Identity Store ARN

  4. 将示例 IAM Identity Center 实例 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 密钥。

要使用此策略:

  1. 将示例服务主体替换为您的实际应用程序服务主体

  2. 将示例应用程序 ARN 替换为您的实际应用程序实例 ARN

  3. 将示例 Identity Store ARN 替换为您的实际 Identity Store ARN

  4. 将示例 IAM Identity Center 实例 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" } } } ] }