AWS KMS 条件键 - AWS Key Management Service

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

AWS KMS 条件键

AWS KMS 提供了一组可以在密钥策略和IAM策略中使用的条件密钥。这些条件键特定于 AWS KMS。例如,在控制对称加密密钥的访问权限时,您可以使用kms:EncryptionContext:context-key条件密KMS钥来要求特定的加密上下文

API操作请求的条件

许多 AWS KMS 条件KMS键根据 AWS KMS 操作请求中参数的值来控制对密钥的访问。例如,您可以在IAM策略中使用 k ms: KeySpec 条件密钥,仅当CreateKey请求中的KeySpec参数值为时才允许使用该CreateKey操作RSA_4096

即使该参数未出现在请求中(例如当使用参数的默认值时),此类条件也会起作用。例如,您可以使用 k ms: KeySpec 条件密钥允许用户仅在KeySpec参数值为(默认值)时才使用该CreateKey操作。SYMMETRIC_DEFAULT此条件允许 KeySpec 参数值为 SYMMETRIC_DEFAULT 的请求,以及无 KeySpec 参数的请求。

API操作中使用的KMS密钥的条件

某些 AWS KMS 条件键可以根据操作中使用的密KMS钥的属性来控制对操作的访问。例如,您可以使用 kms: KeyOrigin 条件来允许委托人仅GenerateDataKey在KMS密钥的密钥为时调用KMS密钥。Origin AWS_KMS要了解某个条件键能否以这种方式使用,请参阅条件键的说明。

该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。如果您将这种类型的条件密钥用于未授权特定密KMS钥资源的操作(例如),则该权限无效 ListKeys,因为条件永远无法满足。授权ListKeys操作时不涉及任何KMS关键资源,也没有KeySpec属性。

以下主题描述了每个 AWS KMS 条件键,并包括演示策略语法的示例策略语句。

使用带有条件键的集合运算符

当策略条件比较两组值(例如请求中的标签集和策略中的标签集)时,您需要告诉 AWS 如何比较这两组值。IAM为此,定义了两个集合运算符ForAllValuesForAnyValue和。仅将集合运算符用于需要它们的多值条件键。不要将集合运算符用于单值条件键。像往常一样,在生产环境中使用策略语句之前,始终全面测试这些策略语句。

条件键是单值或多值。要确定 AWS KMS 条件键是单值还是多值,请参阅条件键描述中的值类型列。

  • 单值条件键在授权上下文(请求或资源)中最多具有一个值。例如,由于每个API调用只能来自一个 AWS 账户,因此 km CallerAccount s: 是单值条件密钥。不要将集合运算符用于单值条件键。

  • 多值条件键在授权上下文(请求或资源)中具有多个值。例如,由于每个KMS密钥可以有多个别名,因此 k ms: ResourceAliases 可以有多个值。多值条件键需要一个集合运算符。

请注意,单值条件键和多值条件键之间的差异取决于授权上下文中的值数量;而不是策略条件中的值数量。

警告

将集合运算符用于单值条件键可能会创建过于宽容(或过于限制)的策略语句。仅将集合运算符用于多值条件键。

如果您创建或更新包含带有 kms:EncryptionContext: 上下文密钥或aws:RequestTag/tag-key条件密钥的ForAllValues集合运算符的策略, AWS KMS 则会返回以下错误消息:

OverlyPermissiveCondition: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified [encryption context or tag] or with an unspecified [encryption context or tag]. To fix, remove ForAllValues.

有关ForAnyValueForAllValues集合运算符的详细信息,请参阅IAM用户指南中的使用多个键和值。有关在单值条件下使用ForAllValues集合运算符的风险的信息,请参阅《IAM用户指南》中的 “安全警告- ForAllValues 使用单值密钥”。

kms: BypassPolicyLockoutSafetyCheck

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:BypassPolicyLockoutSafetyCheck

布尔值

单值

CreateKey

PutKeyPolicy

仅 IAM 策略

密钥政策和 IAM 策略

kms:BypassPolicyLockoutSafetyCheck条件键根据请求中BypassPolicyLockoutSafetyCheck参数的值控制对CreateKeyPutKeyPolicy操作的访问权限。

以下示例IAM策略声明通过拒绝用户在请求中的BypassPolicyLockoutSafetyCheck参数值为时创建KMS密钥的权限来防止他们绕过策略锁定安全检查 CreateKey true.

{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

您还可以在IAM策略或密钥策略中使用kms:BypassPolicyLockoutSafetyCheck条件密钥来控制对PutKeyPolicy操作的访问权限。以下密钥策略中的示例策略声明可防止用户在更改密钥策略时绕过策略锁定安全检查。KMS

此策略语句不是使用显式 Deny,而是结合使用 AllowNull 条件运算符,以仅当请求不含 BypassPolicyLockoutSafetyCheck 参数时,允许访问。如果未使用此参数,则默认值为 false。此较弱的策略语句在少数有必要绕过的情况下可覆盖。

{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

另请参阅

kms: CallerAccount

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:CallerAccount

String

单值

KMS关键资源操作

自定义密钥存储操作

密钥政策和 IAM 策略

您可以使用此条件键允许或拒绝对 AWS 账户中所有身份(用户和角色)的访问。在密钥策略中,您可以使用 Principal 元素来指定策略语句所适用的身份。Principal 元素的语法未提供指定 AWS 账户账户中的所有身份的方式。但是你可以通过将此条件键与指定所有 AWS 身份的Principal元素结合起来来实现这种效果。

您可以使用它来控制对任何KMS密钥资源操作(即使用特定密KMS钥的任何 AWS KMS 操作)的访问权限。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。它也适用于管理自定义密钥存储的操作。

例如,以下密钥策略语句演示了如何使用 kms:CallerAccount 条件键。本政策声明包含在 Amazon AWS 托管式密钥 的关键政策中EBS。它将指定所有 AWS 身份的Principal元素与kms:CallerAccount条件键相结合,以有效地允许访问 AWS 账户 111122223333 中的所有身份。它包含一个额外的 AWS KMS 条件键 (kms:ViaService),通过仅允许通过 Amazon 发出的请求来进一步限制权限EBS。有关更多信息,请参阅 kms: ViaService

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }

kms:CustomerMasterKeySpec(已弃用)

kms:CustomerMasterKeySpec 条件键已弃用。而是使用 kms: KeySpec 条件密钥。

kms:CustomerMasterKeySpeckms:KeySpec 条件键的运行方式相同。只有名称不同。建议使用 kms:KeySpec。但是,为避免重大更改, AWS KMS 支持两个条件键。

kms:CustomerMasterKeyUsage(已弃用)

kms:CustomerMasterKeyUsage 条件键已弃用。而是使用 kms: KeyUsage 条件密钥。

kms:CustomerMasterKeyUsagekms:KeyUsage 条件键的运行方式相同。只有名称不同。建议使用 kms:KeyUsage。但是,为避免重大更改, AWS KMS 支持两个条件键。

kms: DataKeyPairSpec

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:DataKeyPairSpec

String

单值

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

密钥政策和 IAM 策略

您可以使用此条件键根据请求中KeyPairSpec参数的值来控制对GenerateDataKeyPairGenerateDataKeyPairWithoutPlaintext操作的访问权限。例如,您可以仅允许用户生成特定类型的数据密钥对。

以下示例密钥策略声明使用kms:DataKeyPairSpec条件密钥允许用户使用该KMS密钥仅生成RSA数据密钥对。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }

另请参阅

kms: EncryptionAlgorithm

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:EncryptionAlgorithm

String

单值

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

密钥政策和 IAM 策略

您可以使用 kms:EncryptionAlgorithm 条件键,根据操作中使用的加密算法,控制对加密操作的访问。对于加密解密ReEncrypt操作,它根据请求中EncryptionAlgorithm参数的值控制访问权限。对于生成数据密钥和数据密钥对的操作,则根据用于加密数据密钥的加密算法控制访问。

此条件密钥对以外执行的操作没有影响 AWS KMS,例如使用外部非对称密钥对中的公KMS钥进行加密。 AWS KMS

EncryptionAlgorithm 请求中的参数

要允许用户仅使用带有KMS密钥的特定加密算法,请使用具有Deny效果和StringNotEquals条件运算符的策略语句。例如,以下示例密钥策略声明禁止可以担任该ExampleRole角色的委托人在指定的加密操作中使用此KMS密钥,除非请求中的加密算法是RSAES_OAEP_SHA_256与密钥一起使用的非对称加密算法。RSA KMS

与允许用户使用特定加密算法的策略声明不同,像这样的双负数策略声明会阻止其他策略和对该KMS密钥的授权允许该角色使用其他加密算法。此密钥策略声明Deny中的优先级高于任何具有Allow效力的密钥IAM策略或策略,并且优先于对该KMS密钥及其主体的所有授权。

{ "Sid": "Allow only one encryption algorithm with this asymmetric KMS key", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } } }

用于操作的加密算法

您也可以使用 kms:EncryptionAlgorithm 条件键基于操作中使用的加密算法控制对操作的访问权限,即使在请求中未指定算法时也是如此。这使您能够要求或禁止 SYMMETRIC_DEFAULT 算法,它可能不会在请求中指定,因为它是默认值。

通过此功能,您还可以使用 kms:EncryptionAlgorithm 条件键,控制对生成数据密钥和数据密钥对的操作的访问。这些操作仅使用对称加密KMS密钥和SYMMETRIC_DEFAULT算法。

例如,此IAM策略将其主体限制为对称加密。除非请求中指定的或操作中使用的加密算法是 SYMMETRIC _DEFAULT,否则它会拒绝访问示例账户中的任何密KMS钥进行加密操作。包括GenerateDataKey*向权限添加GenerateDataKeyGenerateDataKeyWithoutPlaintextGenerateDataKeyPair、、和GenerateDataKeyPairWithoutPlaintext。条件对这些操作没有影响,因为它们始终使用对称加密算法。

{ "Sid": "AllowOnlySymmetricAlgorithm", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }

另请参阅

kms:EncryptionContext: 上下文密钥

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:EncryptionContext:context-key

String

单值

CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

RetireGrant

密钥政策和 IAM 策略

在请求加密操作时,您可以使用kms:EncryptionContext:context-key条件密KMS钥根据加密上下文来控制对称加密密钥的访问权限。使用此条件键可评估加密上下文对中的键和值。要仅评估加密上下文密钥或无论密钥或值如何,都需要加密上下文,请使用 k ms: EncryptionContextKeys 条件密钥。

注意

条件密钥值必须符合密钥策略和IAM策略的字符规则。在加密上下文中有效的某些字符在策略中无效。您可能无法使用此条件键来表示全部有效的加密上下文值。有关密钥策略文档规则的详细信息,请参阅 密钥策略格式。有关IAM策略文档规则的详细信息,请参阅《IAM用户指南》中的IAM名称要求

您不能在使用非对称密KMS钥或密钥的加密操作中指定加密上下文。HMAC KMS非对称算法和MAC算法不支持加密上下文。

要使用 kms:EncryptionContext: 上下文密钥条件密钥,请替换 context-key 带有加密上下文密钥的占位符。更换 context-value 带有加密上下文值的占位符。

"kms:EncryptionContext:context-key": "context-value"

例如,下面的条件键指定一个加密上下文,其键为 AppName,值为 ExampleApp (AppName = ExampleApp)。

"kms:EncryptionContext:AppName": "ExampleApp"

这是一个单值条件键。条件键中的密钥指定特定的加密上下文键 (context-key)。尽管您可以在每个API请求中包含多个加密上下文对,但具有指定上下文密钥的加密上下文对只能有一个值。例如,kms:EncryptionContext:Department 条件键仅适用于具有 Department 密钥的加密上下文对,任何具有 Department 密钥的给定加密上下文对都只能有一个值。

不要将集合运算符用于 kms:EncryptionContext:context-key 条件键。如果您创建一个具有 Allow 操作,kms:EncryptionContext:context-key 条件键和 ForAllValues 集合运算符的策略语句,则条件允许没有加密上下文的请求以及带有未在策略条件中指定的加密上下文对的请求。

警告

请勿将 ForAnyValueForAllValues 集合运算符用于此单值条件键。这些集合运算符可以创建一个策略条件,该条件不需要您计划要求的值,并允许您计划禁止的值。

如果您创建或更新包含带有 kms:: conte xt-keyForAllValues集合运算符的策略, AWS KMS 则会返回以下错误消息EncryptionContext:

OverlyPermissiveCondition:EncryptionContext: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified encryption context or with an unspecified encryption context. To fix, remove ForAllValues.

若要要求特定的加密上下文对,请结合使用 kms:EncryptionContext:context-key 条件键与 StringEquals 运算符。

以下示例密钥策略声明允许可以代入该角色的委托人仅在GenerateDataKey请求中的加密上下文包括KMS密钥对时才在请求中使用密钥。AppName:ExampleApp允许使用其他加密上下文对。

密钥名称区分大小写。值是否区分大小写由条件运算符确定,例如 StringEquals。有关更多信息,请参阅 加密上下文条件区分大小写

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

要要求加密上下文对并禁止所有其他加密上下文对,请在策略声明kms:EncryptionContextKeys中同时使用 kms:EncryptionContext: conte xt-key。以下密钥策略语句使用 kms:EncryptionContext:AppName 条件要求请求中的 AppName=ExampleApp 加密上下文对。它还结合使用 kms:EncryptionContextKeys 条件键与 ForAllValues 集合运算符以仅允许 AppName 加密上下文键。

ForAllValues 集合运算符将请求中的加密上下文键限制为 AppName。如果 kms:EncryptionContextKeys 条件与 ForAllValues 集合运算符在策略语句中单独使用,则此集合运算符将允许没有加密上下文的请求。但是,如果请求没有加密上下文,则 kms:EncryptionContext:AppName 条件将失败。有关ForAllValues集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KeyUsers" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName" ] } } }

您也可以使用此条件密钥拒绝访问特定操作的KMS密钥。如果请求中的加密上下文包含加密上下文对,则以下示例KMS密钥策略语句使用Deny效果来禁止委托人使用Stage=Restricted密钥。此条件允许使用其他加密上下文对进行请求,包括具有 Stage 键和其他值的加密上下文对,例如 Stage=Test

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": "Restricted" } } }

使用多个加密上下文对

您可以要求或禁止多个加密上下文对。您还可以要求几个加密上下文对之一。有关用于解释这些条件的逻辑的详细信息,请参阅IAM用户指南中的创建包含多个键或值的条件

注意

本主题的早期版本显示了使用ForAnyValueForAllValues设置运算符和 kms:EncryptionContext: 上下文密钥条件密钥的策略声明。将集合运算符与单值条件键结合使用可能会导致允许没有加密上下文和未指定加密上下文对的请求的策略。

例如,具有 Allow 效果、ForAllValues 集合运算符和 "kms:EncryptionContext:Department": "IT" 条件键的策略条件不会将加密上下文限制为“Department=IT”对。它允许没有加密上下文的请求和具有未指定加密上下文对的请求,例如 Stage=Restricted

请查看您的政策,并使用 kms:EncryptionContext: conte xt- key 将集合运算符从任何条件中删除。尝试使用此格式创建或更新策略失败,并显示 OverlyPermissiveCondition 异常。要纠正此错误,请删除集合运算符。

若需要多个加密上下文对,请列出相同条件下的对。以下示例密钥策略语句需要两个加密上下文对 Department=ITProject=Alpha。由于条件具有不同的键(kms:EncryptionContext:Departmentkms:EncryptionContext:Project),因此它们由AND运算符隐式连接。允许其他加密上下文对,但它们不是必需的。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" } } }

若需要一个加密上下文对或另一个加密上下文对,请将每个条件键放在单独的策略语句中。以下示例密钥策略需要 Department=IT Project=Alpha 对,或此两者。允许其他加密上下文对,但它们不是必需的。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Project": "Alpha" } } }

要要求特定的加密对并排除所有其他加密上下文对,请在策略声明kms:EncryptionContextKeys中同时使用 kms:EncryptionContext: conte xt-key。以下密钥策略声明使用 kms:EncryptionContext: 上下文密钥条件来要求同时包含Department=ITProject=Alpha对的加密上下文。它结合使用 kms:EncryptionContextKeys 条件键与 ForAllValues 集合运算符以仅允许 DepartmentProject 加密上下文键。

ForAllValues 集合运算符将请求中的加密上下文键限制为 DepartmentProject。如果在条件中单独使用它,则此集合运算符将允许没有加密上下文的请求,但是在此配置中,此条件下的 kms:EncryptionContext: conte xt-key 将失败。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "Department", "Project" ] } } }

您还可以禁止多个加密上下文对。如果请求中的加密上下文包含Stage=RestrictedStage=Production .pair,则以下示例KMS密钥策略语句使用Deny效果来禁止委托人使用密钥。

相同键 (kms:EncryptionContext:Stage) 的多个值(RestrictedProduction)用 OR 隐式连接。有关详细信息,请参阅《IAM用户指南》中的具有多个键或值的条件的评估逻辑

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }

加密上下文条件区分大小写

在解密操作中指定的加密上下文,与加密操作中指定的加密上下文必须是区分大小写的精确匹配。只有当加密上下文中有多个上下文对时,上下文对的顺序可以改变。

但是,在策略条件中,条件键不区分大小写。条件值是否区分大小写由您使用的策略条件运算符确定,例如 StringEqualsStringEqualsIgnoreCase

因此,条件键由前kms:EncryptionContext:缀和 上下文密钥 替换,不区分大小写。使用此条件的策略不检查条件键任何元素的大小写。该值的区分大小写,即 上下文值 替换,由保单条件运算符决定。

例如,以下策略语句在加密上下文包含 Appname 键时允许操作,不论其大小写如何。StringEquals 条件要求 ExampleApp 按照其指定的大小写。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }

要要求使用区分大小写的加密上下文密钥,请使用 k ms: EncryptionContextKeys 策略条件和区分大小写的条件运算符,例如。StringEquals在此策略条件中,由于加密上下文键是此策略条件中的值,它是否区分大小写由条件运算符确定。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

要要求对加密上下文密钥和值进行区分大小写的评估,请在同一个策略声明中同时使用kms:EncryptionContextKeys和 kmsEncryptionContext:: 上下文密钥策略条件。区分大小写的条件运算符(例如 StringEquals)始终适用于条件的值。加密上下文键(例如 AppName)是 kms:EncryptionContextKeys 条件的值。加密上下文值(例如ExampleApp)是 kms:EncryptionContext: 上下文密钥条件的值。

例如,在以下示例密钥策略语句中,由于 StringEquals 运算符区分大小写,加密上下文键和加密上下文值均区分大小写。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" }, "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

在加密上下文条件中使用变量

加密上下文对中的键和值必须是简单的文本字符串。它们不能是整数或对象,也不能是任何未完全解析的类型。如果您使用其他类型,例如整数或浮点数,则将其 AWS KMS 解释为文字字符串。

"encryptionContext": { "department": "10103.0" }

但是,kms:EncryptionContext:context-key条件键的值可以是IAM策略变量。在运行时根据请求中的值解析这些策略变量。例如,aws:CurrentTime 解析为请求的时间,aws:username 解析为调用方的友好名称。

您可以使用这些策略变量来创建一个策略语句,该语句包含的条件需要加密上下文中非常具体的信息,例如调用方的用户名。由于它包含一个变量,因此,您可以对所有能够代入该角色的用户使用相同的策略语句。您无需为每个用户编写单独的策略语句。

假设您希望所有可以扮演角色的用户都使用相同的KMS密钥来加密和解密其数据。但是,您希望仅允许这些用户解密其加密的数据。首先,要求每个请求都 AWS KMS 包含加密上下文,其中密钥是user,值是调用者的 AWS 用户名,例如以下内容。

"encryptionContext": { "user": "bob" }

然后,要强制执行此要求,您可以使用与以下示例中的策略语句类似的策略语句。此策略声明授予TestTeam角色使用密钥加密和解密数据的权限。KMS不过,此权限仅在请求中的加密上下文包含 "user": "<username>" 对时有效。为了表示用户名,条件使用 aws:username 策略变量。

在评估请求时,调用方的用户名将替换条件中的变量。同样地,条件要求 "user": "bob"(对于“bob”)和 "user": "alice"(对于“alice”)的加密上下文。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }

您只能在kms:EncryptionContext:context-key条件键的值中使用IAM策略变量。不能在键中使用变量。

也可以在变量中使用提供程序特定的上下文键。这些上下文密钥唯一标识使用 Web 联合身份验证登录 AWS 的用户。

与所有变量一样,这些变量只能用于 kms:EncryptionContext:context-key 策略条件,而不能用于实际加密上下文。此外,它们只能用于条件的值,而不能用于条件的键。

例如,以下键策略语句与上一个类似。不过,条件需要加密上下文,其中键为 sub,并且值唯一标识已登录 Amazon Cognito 用户池的用户。有关在 Amazon Cognito 中识别用户和角色的详细信息,请参阅 Amazon Cog nito 开发者指南中的IAM角色

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }

另请参阅

kms: EncryptionContextKeys

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:EncryptionContextKeys

字符串(列表)

多值

CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

RetireGrant

密钥政策和 IAM 策略

在请求加密操作时,您可以使用kms:EncryptionContextKeys条件密KMS钥根据加密上下文来控制对称加密密钥的访问权限。使用此条件键仅评估各个加密上下文对中的键。要同时评估加密上下文中的键和值,请使用 kms:EncryptionContext:context-key 条件键。

您不能在使用非对称密KMS钥或密钥的加密操作中指定加密上下文。HMAC KMS非对称算法和MAC算法不支持加密上下文。

注意

条件密钥值(包括加密上下文密钥)必须符合密 AWS KMS 钥策略的字符和编码规则。您可能无法使用此条件键来表示所有有效的加密上下文键。有关密钥策略文档规则的详细信息,请参阅 密钥策略格式。有关IAM策略文档规则的详细信息,请参阅《IAM用户指南》中的IAM名称要求

这是一个多值条件键。您可以在每个API请求中指定多个加密上下文对。 kms:EncryptionContextKeys将请求中的加密上下文密钥与策略中的加密上下文密钥集进行比较。要确定如何比较这些集,您必须在策略条件中提供 ForAnyValueForAllValues 集合运算符。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值

  • ForAnyValue:请求中的至少一个加密上下文键必须匹配策略条件中的加密上下文键。允许其他加密上下文键。如果请求中没有加密上下文,则不满足此条件。

  • ForAllValues:请求中的每个加密上下文键必须匹配策略条件中的加密上下文键。此集合运算符将加密上下文键限制为策略条件中的键。它不需要任何加密上下文键,但禁止未指定的加密上下文键。

以下示例密钥策略语句结合使用 kms:EncryptionContextKeys 条件键与 ForAnyValue 集合运算符。此策略声明允许将KMS密钥用于指定的操作,但前提是请求中至少有一个加密上下文对包含该AppName密钥,无论其值如何。

例如,此密钥策略语句允许包含两个加密上下文对 AppName=HelperProject=AlphaGenerateDataKey 请求,因为第一个加密上下文对满足此条件。只有 Project=Alpha 或没有加密上下文的请求都会失败。

由于StringEquals条件操作区分大小写,因此此策略声明要求加密上下文密钥的拼写和大小写。不过您可以使用忽略键大小写的条件运算符,例如 StringEqualsIgnoreCase

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

您也可以使用kms:EncryptionContextKeys条件密钥要求在使用该密KMS钥的加密操作中提供加密上下文(任何加密上下文);。

以下示例密钥策略语句使用kms:EncryptionContextKeys条件密钥和空条件运算符,仅当API请求中的加密上下文不为空时才允许访问KMS密钥。此条件不检查加密上下文的键或值。它只验证加密上下文是否存在。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }

另请参阅

kms: ExpirationModel

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:ExpirationModel

String

单值

ImportKeyMaterial

密钥政策和 IAM 策略

kms:ExpirationModel条件键根据请求中ExpirationModel参数的值控制对ImportKeyMaterial操作的访问权限。

ExpirationModel 是可选参数,用于确定导入的密钥材料是否过期。有效值为 KEY_MATERIAL_EXPIRESKEY_MATERIAL_DOES_NOT_EXPIRE。默认值为 KEY_MATERIAL_EXPIRES

到期日期和时间由ValidTo参数的值决定。除非 ExpirationModel 参数的值为 KEY_MATERIAL_DOES_NOT_EXPIRE,否则 ValidTo 参数是必需的。您也可以使用 k ms: ValidTo 条件密钥要求特定的到期日期作为访问条件。

以下示例策略声明使用kms:ExpirationModel条件密钥,仅当请求包含ExpirationModel参数且其值为时,才允许用户将KMS密钥材料导入密钥KEY_MATERIAL_DOES_NOT_EXPIRE

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }

您也可以使用 kms:ExpirationModel 条件键,以仅允许用户在密钥材料过期时导入密钥材料。以下示例密钥策略语句结合使用 kms:ExpirationModel 条件键和 空值条件运算符,以仅允许用户在请求没有 ExpirationModel 参数时导入密钥材料。的默认值 ExpirationModel 为KEY_MATERIAL_EXPIRES

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }

另请参阅

kms: GrantConstraintType

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:GrantConstraintType

String

单值

CreateGrant

RetireGrant

密钥政策和 IAM 策略

您可以使用此条件键根据请求中的授权约束类型来控制对CreateGrant操作的访问权限

创建授权时,您可以选择性地指定授权约束,以仅在存在特定加密上下文时允许授予操作权限。授权约束可以是以下两种类型之一:EncryptionContextEqualsEncryptionContextSubset。您可以使用此条件键来检查请求中包含哪种类型。

重要

不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。

以下示例密钥策略语句使用 kms:GrantConstraintType 条件键,以仅允许用户在请求中包含 EncryptionContextEquals 授权约束时创建授权。以下示例显示了密钥策略中的策略语句。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }

另请参阅

kms: GrantIsFor AWSResource

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:GrantIsForAWSResource

布尔值

单值

CreateGrant

ListGrants

RevokeGrant

密钥政策和 IAM 策略

仅当与之集成的AWS 服务代表用户 AWS KMS调用RevokeGrant操作时 CreateGrant,才允许或拒绝对ListGrants、或操作的权限。此策略条件不允许用户直接调用这些授权操作。

以下示例密钥策略语句使用 kms:GrantIsForAWSResource 条件键。它允许与 AWS KMS之集成的 AWS 服务(例如 AmazonEBS)代表指定的委托人为此KMS密钥创建授权。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

另请参阅

kms: GrantOperations

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:GrantOperations

String

多值

CreateGrant

密钥政策和 IAM 策略

您可以使用此条件密钥根据请求中的授权CreateGrant操作来控制对操作的访问权限。例如,您可以允许用户创建委托加密权限(但不委托解密权限)的授权。有关授权的更多信息,请参阅使用授权

这是一个多值条件键kms:GrantOperations 将比较 CreateGrant 请求中的授权操作集合与策略中的授权操作集合。要确定如何比较这些集,您必须在策略条件中提供 ForAnyValueForAllValues 集合运算符。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值

  • ForAnyValue:请求中的至少一个授权操作必须匹配策略条件中的授权操作之一。允许其他授权操作。

  • ForAllValues:请求中的每个授予操作都必须与策略条件中的授权操作相匹配。此集合运算符将授权操作限制为策略条件中指定的操作。它不需要任何授权操作,但它禁止未指定的授权操作。

    ForAllValues 当请求中没有授予操作但CreateGrant不允许时,也会返回 true。如果 Operations 参数缺失或具有 null 值,则 CreateGrant 请求失败。

以下示例密钥策略语句使用 kms:GrantOperations 条件键,以仅允许在授权操作为 EncryptReEncryptTo 或此两者时创建授权。如果授权包括任何其他操作,则 CreateGrant 请求失败。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }

如果将策略条件中的集合运算符更改为 ForAnyValue,则策略语句将要求授权中至少有一个授权操作是 EncryptReEncryptTo,但它允许其他授权操作,例如 DecryptReEncryptFrom

另请参阅

kms: GranteePrincipal

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:GranteePrincipal

String

单值

CreateGrant

IAM 和密钥策略

您可以使用此条件键根据请求中GranteePrincipal参数的值来控制对CreateGrant操作的访问权限。例如,只有当CreateGrant请求中的被授权者委托人与条件语句中指定的委托人匹配时,您才能创建使用KMS密钥的授权。

要指定被授权人委托人,请使用 AWS 委托人的 Amazon 资源名称 (ARN)。有效的委托人包括IAM用户 AWS 账户、IAM角色、联合用户和代入角色用户。有关委托人ARN语法的帮助,请参阅IAMARNsIAM用户指南》

以下示例密钥策略声明仅在授权中的被授权者委托人为时才使用kms:GranteePrincipal条件KMS密钥为密钥创建授权。LimitedAdminRole

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

另请参阅

kms: KeyAgreementAlgorithm

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:KeyAgreementAlgorithm

String

单值

DeriveSharedSecret

密钥政策和 IAM 策略

您可以使用kms:KeyAgreementAlgorithm条件键根据请求中KeyAgreementAlgorithm参数的值来控制对DeriveSharedSecret操作的访问权限。的唯一有效值KeyAgreementAlgorithmECDH

例如,以下密钥策略声明使用kms:KeyAgreementAlgorithm条件密钥拒绝所有访问权限, DeriveSharedSecret 除非KeyAgreementAlgorithmECDH

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringNotEquals": { "kms:KeyAgreementAlgorithm": "ECDH" } } }

另请参阅

kms: KeyOrigin

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:KeyOrigin

String

单值

CreateKey

KMS关键资源操作

IAM政策

密钥政策和 IAM 策略

kms:KeyOrigin条件键根据操作创建或使用的KMS密钥的Origin属性值来控制对操作的访问权限。它作为资源条件或请求条件工作。

您可以使用此条件键根据请求中 O rigin 参数的值来控制对CreateKey操作的访问权限。Origin 的有效值为 AWS_KMSAWS_CLOUDHSMEXTERNAL

例如,只有在 AWS KMS (AWS_KMS) 中生成KMS密钥材料、仅当密钥材料是在与自定义密钥存储库关联的 AWS CloudHSM 集群 () 中生成时,或者仅当密钥材料是从外部来源 (AWS_CLOUDHSMEXTERNAL) 导入时,才可以创建密钥。

以下示例密钥策略声明仅在创建密钥材料时才使用kms:KeyOrigin条件KMS密钥来 AWS KMS 创建密钥。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } } ] }

您还可以根据用于操作的密钥的Origin属性使用kms:KeyOrigin条件KMS密钥来控制对使用或管理KMS密钥的操作的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。

例如,以下IAM策略允许委托人执行指定的KMS密钥资源操作,但只能使用在自定义KMS密钥存储库中创建的账户中的密钥。

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } }

另请参阅

kms: KeySpec

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:KeySpec

String

单值

CreateKey

KMS关键资源操作

IAM政策

密钥政策和 IAM 策略

kms:KeySpec条件键根据操作创建或使用的KMS密钥的KeySpec属性值来控制对操作的访问权限。

您可以在IAM策略中使用此条件密钥,根据CreateKey请求中KeySpec参数的值来控制对CreateKey操作的访问权限。例如,您可以使用此条件允许用户仅创建对称加密KMS密钥或仅创建密HMACKMS钥。

以下示例IAM策略声明使用kms:KeySpec条件密钥仅允许委托人创建RSA非对称KMS密钥。权限仅在请求中的 KeySpecRSA_ 开头时有效。

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }

您还可以根据用于操作的密钥的KeySpec属性使用kms:KeySpec条件KMS密钥来控制对使用或管理KMS密钥的操作的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。

例如,以下IAM策略允许委托人执行指定的KMS密钥资源操作,但只能使用账户中的对称加密KMS密钥。

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } }

另请参阅

kms: KeyUsage

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:KeyUsage

String

单值

CreateKey

KMS关键资源操作

IAM政策

密钥政策和 IAM 策略

kms:KeyUsage条件键根据操作创建或使用的KMS密钥的KeyUsage属性值来控制对操作的访问权限。

您可以使用此条件键根据请求中KeyUsage参数的值来控制对CreateKey操作的访问权限。的有效值KeyUsageENCRYPT_DECRYPTSIGN_VERIFYGENERATE_VERIFY_MAC、和KEY_AGREEMENT

例如,您只能在KMS密钥为时创建密钥,ENCRYPT_DECRYPT或者在为时拒绝用户权限SIGN_VERIFYKeyUsage KeyUsage

以下示例IAM策略声明仅在kms:KeyUsage条件为时才使用条件KMS密钥创建密钥ENCRYPT_DECRYPTKeyUsage

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }

您还可以根据操作中密钥的KeyUsage属性使用kms:KeyUsage条件KMS密钥来控制对使用或管理密KMS钥的操作的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。

例如,以下IAM策略允许委托人执行指定的KMS密钥资源操作,但只能使用账户中用于签名和验证的KMS密钥。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyUsage": "SIGN_VERIFY" } } }

另请参阅

kms: MacAlgorithm

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:MacAlgorithm

String

单值

GenerateMac

VerifyMac

密钥政策和 IAM 策略

您可以使用kms:MacAlgorithm条件键根据请求中MacAlgorithm参数的值来控制对GenerateMacVerifyMac操作的访问。

以下示例密钥策略允许能够代入该testers角色的用户仅在请求中的MAC算法为HMAC_SHA_384或时使用HMACKMS密钥生成和验证HMAC标签HMAC_SHA_512。此策略使用两个独立的策略语句,每个语句都有自己的条件。如果您在单个条件语句中指定了多个MAC算法,则该条件需要两种算法,而不是其中一种算法。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_384" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_512" } } } ] }

另请参阅

kms: MessageType

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:MessageType

String

单值

Sign

Verify

密钥政策和 IAM 策略

kms:MessageType 条件键基于请求中 MessageType 参数的值控制对 SignVerify 操作的访问权限。MessageType 的有效值为 RAWDIGEST

例如,以下密钥策略声明使用kms:MessageType条件密钥使用非对称密KMS钥对消息进行签名,而不是对消息摘要进行签名。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }

另请参阅

kms: MultiRegion

AWS KMS 条件键 条件类型 值类型 API运营 策略类型

kms:MultiRegion

布尔值

单值

CreateKey

KMS关键资源操作

密钥政策和 IAM 策略

您可以使用此条件键以允许仅对单区域密钥或仅对多区域密钥进行操作。kms:MultiRegion条件键根据KMS密钥MultiRegion属性的值控制对按KMS键CreateKey操作和操作的访问权限。 AWS KMS 有效值为 true(多区域)或 false(单区域)。所有KMS钥匙都有一个MultiRegion属性。

例如,以下IAM策略声明使用kms:MultiRegion条件密钥仅允许委托人创建单区域密钥。

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:MultiRegion": false } } }

kms: MultiRegionKeyType

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:MultiRegionKeyType

String

单值

CreateKey

KMS关键资源操作

密钥政策和 IAM 策略

您可以使用此条件键以允许仅对多区域主键或仅对多区域副本密钥执行操作。kms:MultiRegionKeyType条件键根据KMS密钥的 AWS KMS MultiRegionKeyType属性控制对按键CreateKey操作的KMS访问权限和操作。有效值为 PRIMARYREPLICA。只有多区域密钥具有 MultiRegionKeyType 属性。

通常,您可以在IAM策略中使用kms:MultiRegionKeyType条件密钥来控制对多个KMS密钥的访问。但是,由于给定的多区域密钥可以更改为主密钥或副本密钥,因此您可能希望在密钥策略中使用此条件,以便仅当特定的多区域密钥为主密钥或副本密钥时才允许操作。

例如,以下IAM策略声明使用kms:MultiRegionKeyType条件密钥仅允许委托人计划和取消对指定中的多区域副本密钥的密钥删除。 AWS 账户

{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "kms:MultiRegionKeyType": "REPLICA" } } }

要允许或拒绝访问所有多区域密钥,您可以将这两个值或 null 值用于 kms:MultiRegionKeyType。但是,为此,建议使用 k ms: MultiRegion 条件密钥。

kms: PrimaryRegion

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:PrimaryRegion

字符串(列表)

单值

UpdatePrimaryRegion

密钥政策和 IAM 策略

您可以使用此条件键来限制UpdatePrimaryRegion操作中的目标区域。它们 AWS 区域 可以托管您的多区域主密钥。

kms:PrimaryRegion条件键根据PrimaryRegion参数的值控制对UpdatePrimaryRegion操作的访问权限。该PrimaryRegion参数指定要提升 AWS 区域 为主密钥的多区域副本密钥。条件的值是一个或多个 AWS 区域 名称,例如us-east-1ap-southeast-2,或者区域名称模式,例如 eu-*

例如,以下密钥策略语句使用 kms:PrimaryRegion 条件键,以允许委托人将多区域密钥的主区域更新为四个指定的区域之一。

{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Developer" }, "Resource": "*", "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-east-1", "us-west-2", "eu-west-3", "ap-southeast-2" ] } } }

kms: ReEncryptOnSameKey

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:ReEncryptOnSameKey

布尔值

单值

ReEncrypt

密钥政策和 IAM 策略

根据请求指定的目标密钥是否与用于原始加密的目标KMS密钥相同,您可以使用此条件密钥来控制对ReEncrypt操作的访问权限。

例如,以下密钥策略声明仅在目标密钥与用于原始加密的KMS密钥相同时才使用kms:ReEncryptOnSameKey条件密钥进行重新加密。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }

kms: RequestAlias

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:RequestAlias

字符串(列表)

单值

加密操作

DescribeKey

GetPublicKey

密钥政策和 IAM 策略

只有当请求使用特定别名来标识密钥时,您才可以使用此条件KMS键来允许操作。kms:RequestAlias条件密钥控制对加密操作中使用的KMS密钥的访问权限GetPublicKey,或者DescribeKey基于在请求中标识该KMS密钥的别名。(此策略条件对GenerateRandom操作没有影响,因为该操作不使用KMS密钥或别名。)

此条件支持中基于属性的访问控制 (ABAC) AWS KMS,允许您根据KMS密钥的标签和别名控制对密钥的访问权限。KMS您可以使用标签和别名来允许或拒绝对KMS密钥的访问,而无需更改策略或授权。有关更多信息,请参阅 AWS KMS 中的 ABAC

要在此策略条件下指定别名,请使用别名名称,例如 alias/project-alpha,或别名名称模式,例如 alias/*test*。您不能在此条件键的值ARN中指定别名

要满足此条件,请求中KeyId参数的值必须是匹配的别名或别名ARN。如果请求使用不同的密钥标识符,即使标识的是相同的KMS密钥,它也不能满足条件。

例如,以下密钥策略声明允许委托人对KMS密钥调用GenerateDataKey操作。但是,只有当请求中KeyId参数的值为alias/finance-key或ARN具有该别名的别名(例如)时,才允许这样做arn:aws:kms:us-west-2:111122223333:alias/finance-key

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/developer" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:RequestAlias": "alias/finance-key" } } }

您不能使用此条件键来控制对别名操作(例如CreateAlias或)的访问权限DeleteAlias。有关控制对别名操作的访问的信息,请参阅 控制对别名的访问

kms: ResourceAliases

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:ResourceAliases

字符串(列表)

多值 KMS关键资源操作

仅 IAM 策略

使用此条件密钥可根据与KMS密钥关联的别名来控制对KMS密钥的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。

此条件支持中基于属性的访问控制 (ABAC)。 AWS KMS使用ABAC,您可以根据分配给KMS密钥的标签和与密钥关联的别名来控制对KMS密KMS钥的访问权限。您可以使用标签和别名来允许或拒绝对KMS密钥的访问,而无需更改策略或授权。有关更多信息,请参阅 AWS KMS 中的 ABAC

别名在 AWS 账户 和区域中必须是唯一的,但是此条件允许您控制对同一区域中的多个KMS密钥(使用StringLike比较运算符)或每个账户中不同KMS密钥 AWS 区域 的访问权限。

注意

只有当密钥符合每个KMSKMS密钥配额的别名时,kms: ResourceAliases 条件才有效。如果KMS密钥超过此配额,则根据kms:ResourceAliases条件授权使用该KMS密钥的委托人将被拒绝访问该KMS密钥。

要在此策略条件下指定别名,请使用别名名称,例如 alias/project-alpha,或别名名称模式,例如 alias/*test*。您不能在此条件键的值ARN中指定别名。要满足条件,操作中使用的KMS密钥必须具有指定的别名。在操作请求中是否或如何识别KMS密钥并不重要。

这是一个多值条件密钥,用于将与密钥关联的别名集与KMS策略中的别名集进行比较。要确定如何比较这些集,您必须在策略条件中提供 ForAnyValueForAllValues 集合运算符。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值

  • ForAnyValue:至少有一个与KMS密钥关联的别名必须与策略条件中的别名相匹配。允许使用其他别名。如果KMS密钥没有别名,则不满足条件。

  • ForAllValues:与KMS密钥关联的每个别名都必须与策略中的别名相匹配。此集合运算符将与KMS密钥关联的别名限制为策略条件中的别名。它不需要任何别名,但它会禁止未指定的别名。

例如,以下IAM策略语句允许委托人对指定KMS AWS 账户 密钥中与finance-key别名关联的任何密钥调用该GenerateDataKey操作。(受影响KMS密钥的密钥策略还必须允许委托人的账户使用它们进行此操作。) 为了表示当可能与KMS密钥关联的众多别名之一为时满足条件alias/finance-key,该条件使用 se ForAnyValue t 运算符。

由于kms:ResourceAliases条件基于资源而不是请求,因此即使请求使用密钥 ID 或KMS密钥来标识密钥,对与finance-key别名关联的任何密钥的调用也会GenerateDataKey成功。ARN KMS

{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": "alias/finance-key" } } }

以下示例IAM策略声明允许委托人启用和禁用KMS密钥,但前提是密KMS钥的所有别名都包含 “” Test。 本政策声明使用两个条件。使用ForAllValues集合运算符的条件要求与KMS密钥关联的所有别名都包含 “Test”。使用ForAnyValue集合运算符的条件要求KMS密钥至少有一个带有 “Test” 的别名。如果没有这个ForAnyValue条件,本政策声明将允许委托人使用没有别名的KMS密钥。

{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKey", "kms:DisableKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] }, "ForAnyValue:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] } } }

kms: ReplicaRegion

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:ReplicaRegion

字符串(列表)

单值

ReplicateKey

密钥政策和 IAM 策略

您可以使用此条件密钥来限制委托人 AWS 区域 可以复制多区域密钥的范围。kms:ReplicaRegion条件键根据请求中ReplicaRegion参数的值控制对ReplicateKey操作的访问权限。此参数为新的副本密钥指定 AWS 区域 。

条件的值是一个或多个 AWS 区域 名称,例如us-east-1ap-southeast-2,或者名称模式,例如eu-*。有关 AWS KMS 支持的名称列表 AWS 区域 ,请参阅中的AWS Key Management Service 终端节点和配额 AWS 一般参考。

例如,以下密钥策略声明使用kms:ReplicaRegion条件密钥,仅当ReplicaRegion参数的值为指定区域之一时,委托人才能调用该ReplicateKey操作。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey" "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }

此条件键仅控制对ReplicateKey操作的访问权限。要控制对UpdatePrimaryRegion操作的访问权限,请使用 k ms: PrimaryRegion 条件密钥。

kms: RetiringPrincipal

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:RetiringPrincipal

字符串(列表)

单值

CreateGrant

密钥政策和 IAM 策略

您可以使用此条件键根据请求中RetiringPrincipal参数的值来控制对CreateGrant操作的访问权限。例如,您可以创建仅当CreateGrant请求中的与条件语句RetiringPrincipal中的匹配时才使用KMS密钥的授权。RetiringPrincipal

要指定即将退出的委托人,请使用 AWS 委托人的 Amazon 资源名称 (ARN)。有效的委托人包括IAM用户 AWS 账户、IAM角色、联合用户和代入角色用户。有关委托人ARN语法的帮助,请参阅IAMARNsIAM用户指南》

以下示例密钥策略声明允许用户为KMS密钥创建授权。kms:RetiringPrincipal条件键将权限限制为授予中即将退休的委托人为的CreateGrant请求。LimitedAdminRole

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

另请参阅

kms: RotationPeriodInDays

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:RotationPeriodInDays

数值

单值

EnableKeyRotation

密钥政策和 IAM 策略

您可以使用此条件键来限制委托人可以在EnableKeyRotation请求RotationPeriodInDays参数中指定的值。

RotationPeriodInDays指定每个自动密钥轮换日期之间的天数。 AWS KMS 允许您指定介于 90 到 2560 天之间的轮换周期,但您可以使用kms:RotationPeriodInDays条件键进一步限制轮换周期,例如在有效范围内强制规定最短轮换周期。

例如,以下密钥策略声明使用kms:RotationPeriodInDays条件密钥来防止在轮换周期小于或等于 180 天时委托人启用密钥轮换。

{ "Effect": "Deny", "Action": "kms:EnableKeyRotation", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:RotationPeriodInDays" : "180" } } }

kms: ScheduleKeyDeletionPendingWindowInDays

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:ScheduleKeyDeletionPendingWindowInDays

数值

单值

ScheduleKeyDeletion

密钥政策和 IAM 策略

您可以使用此条件键来限制委托人可以在ScheduleKeyDeletion请求PendingWindowInDays参数中指定的值。

PendingWindowInDays指定删除密钥之前 AWS KMS 要等待的天数。 AWS KMS 允许您指定 7 到 30 天之间的等待期,但您可以使用kms:ScheduleKeyDeletionPendingWindowInDays条件键进一步限制等待时间,例如在有效范围内强制规定最短等待时间。

例如,以下密钥政策语句使用 kms:ScheduleKeyDeletionPendingWindowInDays 条件键,以防止主体安排在等待时间小于或等于 21 天时删除密钥。

{ "Effect": "Deny", "Action": "kms:ScheduleKeyDeletion", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:ScheduleKeyDeletionPendingWindowInDays" : "21" } } }

kms: SigningAlgorithm

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:SigningAlgorithm

String

单值

Sign

Verify

密钥政策和 IAM 策略

您可以使用kms:SigningAlgorithm条件键根据请求中SigningAlgorithm参数的值来控制对 “签名” 和 “验证” 操作的访问权限。此条件密钥对以外执行的操作没有影响 AWS KMS,例如使用外部非对称密钥对中的公KMS钥验证签名。 AWS KMS

以下示例密钥策略允许能够代入该testers角色的用户仅在用于请求的签名算法是 RSASSA _ PSS 算法(例如)时才使用该KMS密钥对消息进行签名RSASSA_PSS_SHA512

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }

另请参阅

kms: ValidTo

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:ValidTo

Timestamp

单值

ImportKeyMaterial

密钥政策和 IAM 策略

kms:ValidTo条件密钥根据请求中ValidTo参数的值控制对ImportKeyMaterial操作的访问权限,该值决定了导入的密钥材料何时过期。此值用 Unix 时间表示。

默认情况下,ImportKeyMaterial 请求中需要 ValidTo 参数。但是,如果ExpirationModel参数的值为KEY_MATERIAL_DOES_NOT_EXPIRE,则该ValidTo参数无效。您也可以使用 k ms: ExpirationModel 条件键来要求ExpirationModel参数或特定的参数值。

以下示例策略声明允许用户将密钥材料导入KMS密钥。kms:ValidTo 条件键将权限限制为 ImportKeyMaterial 请求,其中 ValidTo 值小于或等于 1546257599.0(2018 年 12 月 31 日晚上 11:59:59)。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }

另请参阅

kms: ViaService

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:ViaService

String

单值

KMS关键资源操作

密钥政策和 IAM 策略

kms:ViaService条件密钥将密KMS钥的使用限制为来自指定 AWS 服务的请求。您可以在每个 kms:ViaService 条件键中指定一个或多个服务。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的ResourcesKMS key中查找值。

例如,以下密钥政策声明使用kms:ViaService条件密钥,仅当请求来自亚马逊EC2或代表美国西部(俄勒冈)地区的亚马逊或亚马逊RDS时,才允许将客户托管密钥用于指定操作ExampleRole

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }

当请求来自特定服务时,您还可以使用kms:ViaService条件KMS密钥拒绝使用密钥的权限。例如,密钥策略中的以下策略语句使用 kms:ViaService 条件键以防止在代表 ExampleRole 发出来自 AWS Lambda 的请求时将客户托管密钥用于 Encrypt 操作。

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
重要

在使用 kms:ViaService 条件键时,服务代表 AWS 账户中的委托人发出请求。这些委托人必须具有以下权限:

  • 使用KMS密钥的权限。委托人需要向集成服务授予这些权限,这样此服务才能代表委托人使用客户托管的密钥。有关更多信息,请参阅 AWS 服务如何使用 AWS KMS

  • 使用集成服务的权限。有关向用户提供与集成的 AWS 服务的访问权限的详细信息 AWS KMS,请参阅集成服务的文档。

所有 AWS 托管式密钥 都使用其密钥策略文档中的 kms:ViaService 条件键。此条件允许KMS密钥仅用于来自创建密KMS钥的服务发出的请求。要查看的密钥策略 AWS 托管式密钥,请使用GetKeyPolicy操作。

kms:ViaService条件密钥在关键IAM政策声明中有效。您指定的服务必须与 AWS KMS集成并支持 kms:ViaService 条件键。

支持 kms:ViaService 条件键的服务

下表列出了 AWS 与客户托管密钥集成 AWS KMS 并支持在客户托管密钥中使用kms:ViaService条件密钥的服务。此表中的服务可能并非在所有地区都可用。在所有 AWS 分区中使用 AWS KMS ViaService 名称的.amazonaws.com后缀。

注意

您可能需要水平或垂直滚动才能查看此表中的所有数据。

服务名称 AWS KMS ViaService 名字
AWS App Runner apprunner.AWS_region.amazonaws.com
AWS AppFabric appfabric.AWS_region.amazonaws.com
Amazon AppFlow appflow.AWS_region.amazonaws.com
AWS Application Migration Service mgn.AWS_region.amazonaws.com
Amazon Athena athena.AWS_region.amazonaws.com
AWS Audit Manager auditmanager.AWS_region.amazonaws.com
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup backup.AWS_region.amazonaws.com
AWS Backup 网关 backup-gateway.AWS_region.amazonaws.com
Amazon Chime SDK chimevoiceconnector.AWS_region.amazonaws.com
AWS CodeArtifact codeartifact.AWS_region.amazonaws.com
Amazon CodeGuru Reviewer codeguru-reviewer.AWS_region.amazonaws.com
Amazon Comprehend comprehend.AWS_region.amazonaws.com
Amazon Connect connect.AWS_region.amazonaws.com
Amazon Connect Customer Profiles profile.AWS_region.amazonaws.com
Amazon Q in Connect wisdom.AWS_region.amazonaws.com
AWS Database Migration Service (AWS DMS) dms.AWS_region.amazonaws.com
AWS Directory Service directoryservice.AWS_region.amazonaws.com
Amazon DynamoDB dynamodb.AWS_region.amazonaws.com
Amazon DocumentDB docdb-elastic.AWS_region.amazonaws.com
亚马逊 S EC2 ystems Manager (SSM) ssm.AWS_region.amazonaws.com
亚马逊 Elastic Block Store(亚马逊EBS) ec2.AWS_region.amazonaws.com(仅 EBS)
亚马逊弹性容器注册表(亚马逊ECR) ecr.AWS_region.amazonaws.com
亚马逊 Elastic File System(亚马逊EFS) elasticfilesystem.AWS_region.amazonaws.com
Amazon ElastiCache

在条件键值中包含两个 ViaService 名称:

  • elasticache.AWS_region.amazonaws.com

  • dax.AWS_region.amazonaws.com

AWS Elemental MediaTailor mediatailor.AWS_region.amazonaws.com
AWS 实体分辨率 entityresolution.AWS_region.amazonaws.com
Amazon EventBridge events.AWS_region.amazonaws.com
Amazon FinSpace finspace.AWS_region.amazonaws.com
Amazon Forecast forecast.AWS_region.amazonaws.com
Amazon FSx fsx.AWS_region.amazonaws.com
AWS Glue glue.AWS_region.amazonaws.com
AWS Ground Station groundstation.AWS_region.amazonaws.com
Amazon GuardDuty malware-protection.AWS_region.amazonaws.com
AWS HealthLake healthlake.AWS_region.amazonaws.com
AWS IoT SiteWise iotsitewise.AWS_region.amazonaws.com
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Keyspaces (for Apache Cassandra) cassandra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon Data Firehose firehose.AWS_region.amazonaws.com
Amazon Kinesis Video Streams kinesisvideo.AWS_region.amazonaws.com
AWS Lambda lambda.AWS_region.amazonaws.com
Amazon Lex lex.AWS_region.amazonaws.com
AWS License Manager license-manager.AWS_region.amazonaws.com
Amazon Location Service geo.AWS_region.amazonaws.com
Amazon Lookout for Equipment lookoutequipment.AWS_region.amazonaws.com
Amazon Lookout for Metrics lookoutmetrics.AWS_region.amazonaws.com
Amazon Lookout for Vision lookoutvision.AWS_region.amazonaws.com
Amazon Macie macie.AWS_region.amazonaws.com
AWS Mainframe Modernization m2.AWS_region.amazonaws.com
AWS Mainframe Modernization 应用程序测试 apptest.AWS_region.amazonaws.com
Amazon Managed Blockchain managedblockchain.AWS_region.amazonaws.com
适用于 Apache Kafka 的亚马逊托管流媒体 Kafka(亚马逊)MSK kafka.AWS_region.amazonaws.com
Amazon Apache Airflow 托管工作流程 () MWAA airflow.AWS_region.amazonaws.com
Amazon 内存 DB memorydb.AWS_region.amazonaws.com
Amazon Monitron monitron.AWS_region.amazonaws.com
Amazon MQ mq.AWS_region.amazonaws.com
Amazon Neptune rds.AWS_region.amazonaws.com
Amazon Nimble Studio nimble.AWS_region.amazonaws.com
AWS HealthOmics omics.AWS_region.amazonaws.com
亚马逊 OpenSearch 服务 es.AWS_region.amazonaws.com, aoss.AWS_region.amazonaws.com
AWS Proton proton.AWS_region.amazonaws.com
亚马逊 Quantum Ledger 数据库(亚马逊QLDB) qldb.AWS_region.amazonaws.com
Amazon Per RDS formance In rds.AWS_region.amazonaws.com
Amazon Redshift redshift.AWS_region.amazonaws.com
Amazon Redshift 查询编辑器 V2 sqlworkbench.AWS_region.amazonaws.com
Amazon Redshift Serverless redshift-serverless.AWS_region.amazonaws.com
Amazon Rekognition rekognition.AWS_region.amazonaws.com
亚马逊 Relational Database Service(亚马逊RDS) rds.AWS_region.amazonaws.com
Amazon 复制的数据存储 ards.AWS_region.amazonaws.com
Amazon SageMaker sagemaker.AWS_region.amazonaws.com
AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com
Amazon Security Lake securitylake.AWS_region.amazonaws.com
亚马逊简单电子邮件服务(亚马逊SES) ses.AWS_region.amazonaws.com
亚马逊简单通知服务(亚马逊SNS) sns.AWS_region.amazonaws.com
亚马逊简单队列服务(亚马逊SQS) sqs.AWS_region.amazonaws.com
Amazon Simple Storage Service (Amazon S3) s3.AWS_region.amazonaws.com
AWS Snowball importexport.AWS_region.amazonaws.com
AWS Step Functions states.AWS_region.amazonaws.com
AWS Storage Gateway storagegateway.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager ssm-incidents.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager 联系人 ssm-contacts.AWS_region.amazonaws.com
Amazon Timestream timestream.AWS_region.amazonaws.com
Amazon Translate translate.AWS_region.amazonaws.com
AWS Verified Access verified-access.AWS_region.amazonaws.com
Amazon WorkMail workmail.AWS_region.amazonaws.com
Amazon WorkSpaces workspaces.AWS_region.amazonaws.com
Amazon WorkSpaces 瘦客户机 thinclient.AWS_region.amazonaws.com
Amazon WorkSpaces Web workspaces-web.AWS_region.amazonaws.com
AWS X-Ray xray.AWS_region.amazonaws.com

kms: WrappingAlgorithm

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:WrappingAlgorithm

String

单值

GetParametersForImport

密钥政策和 IAM 策略

此条件键根据请求中WrappingAlgorithm参数的值控制对GetParametersForImport操作的访问权限。您可以使用此条件要求委托人在导入过程中使用特定算法来加密密钥材料。当对所需公有密钥和导入令牌的请求指定不同的包装算法时,它们会失败。

以下示例密钥策略语句使用 kms:WrappingAlgorithm 条件键为示例用户提供调用 GetParametersForImport 操作的权限,但阻止他们使用 RSAES_OAEP_SHA_1 包装算法。当 GetParametersForImport 请求中的 WrappingAlgorithmRSAES_OAEP_SHA_1 时,操作会失败。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }

另请参阅

kms: WrappingKeySpec

AWS KMS 条件键 条件类型 值类型 API操作 策略类型

kms:WrappingKeySpec

String

单值

GetParametersForImport

密钥政策和 IAM 策略

此条件键根据请求中WrappingKeySpec参数的值控制对GetParametersForImport操作的访问权限。您可以使用此条件,要求委托人在导入过程中使用特定的公有密钥类型。如果请求指定了不同密钥类型,它会失败。

由于 WrappingKeySpec 参数值的唯一有效值为 RSA_2048,阻止用户使用此值将有效阻止它们使用 GetParametersForImport 操作。

以下示例策略语句使用 kms:WrappingAlgorithm 条件键要求请求中的 WrappingKeySpecRSA_4096

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }

另请参阅