本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS key
中查找值。如果您将这种类型的条件密钥用于未授权特定密KMS钥资源的操作(例如),则该权限将无效 ListKeys,因为条件永远无法满足。授权ListKeys
操作时不涉及任何KMS关键资源,也没有KeySpec
属性。
以下主题描述了每个 AWS KMS 条件键,并包括演示策略语法的示例策略语句。
使用带有条件键的集合运算符
当策略条件比较两组值(例如请求中的标签集和策略中的标签集)时,您需要告诉 AWS 如何比较这两组值。IAM为此,定义了两个集合运算符ForAllValues
,ForAnyValue
和。仅将集合运算符用于需要它们的多值条件键。不要将集合运算符用于单值条件键。像往常一样,在生产环境中使用策略语句之前,始终全面测试这些策略语句。
条件键是单值或多值。要确定 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.
有关ForAnyValue
和ForAllValues
集合运算符的详细信息,请参阅IAM用户指南中的使用多个键和值。有关在单值条件下使用ForAllValues
集合运算符的风险的信息,请参阅《IAM用户指南》中的 “安全警告- ForAllValues 使用单值密钥”。
主题
- kms: BypassPolicyLockoutSafetyCheck
- kms: CallerAccount
- kms:CustomerMasterKeySpec(已弃用)
- kms:CustomerMasterKeyUsage(已弃用)
- kms: DataKeyPairSpec
- kms: EncryptionAlgorithm
- kms:EncryptionContext: 上下文密钥
- kms: EncryptionContextKeys
- kms: ExpirationModel
- kms: GrantConstraintType
- kms: GrantIsFor AWSResource
- kms: GrantOperations
- kms: GranteePrincipal
- kms: KeyAgreementAlgorithm
- kms: KeyOrigin
- kms: KeySpec
- kms: KeyUsage
- kms: MacAlgorithm
- kms: MessageType
- kms: MultiRegion
- kms: MultiRegionKeyType
- kms: PrimaryRegion
- kms: ReEncryptOnSameKey
- kms: RequestAlias
- kms: ResourceAliases
- kms: ReplicaRegion
- kms: RetiringPrincipal
- kms: RotationPeriodInDays
- kms: ScheduleKeyDeletionPendingWindowInDays
- kms: SigningAlgorithm
- kms: ValidTo
- kms: ViaService
- kms: WrappingAlgorithm
- kms: WrappingKeySpec
kms: BypassPolicyLockoutSafetyCheck
AWS KMS 条件键 | 条件类型 | 值类型 | API运营 | 策略类型 |
---|---|---|---|---|
|
布尔值 |
单值 |
|
仅 IAM 策略 密钥政策和 IAM 策略 |
kms:BypassPolicyLockoutSafetyCheck
条件键根据请求中BypassPolicyLockoutSafetyCheck
参数的值控制对CreateKey和PutKeyPolicy操作的访问权限。
以下示例IAM策略声明通过拒绝用户在请求中的BypassPolicyLockoutSafetyCheck
参数值为时创建KMS密钥的权限来防止他们绕过策略锁定安全检查 CreateKey
true.
{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
您还可以在IAM策略或密钥策略中使用kms:BypassPolicyLockoutSafetyCheck
条件密钥来控制对PutKeyPolicy
操作的访问权限。以下来自密钥策略的示例策略声明可防止用户在更改密钥策略时绕过策略锁定安全检查。KMS
此策略语句不是使用显式 Deny
,而是结合使用 Allow
和 Null 条件运算符,以仅当请求不含 BypassPolicyLockoutSafetyCheck
参数时,允许访问。如果未使用此参数,则默认值为 false
。此较弱的策略语句在少数有必要绕过的情况下可覆盖。
{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
另请参阅
kms: CallerAccount
AWS KMS 条件键 | 条件类型 | 值类型 | API运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
KMS关键资源操作 自定义密钥存储操作 |
密钥政策和 IAM 策略 |
您可以使用此条件键允许或拒绝对 AWS 账户中所有身份(用户和角色)的访问。在密钥策略中,您可以使用 Principal
元素来指定策略语句所适用的身份。Principal
元素的语法未提供指定 AWS 账户账户中的所有身份的方式。但是你可以通过将此条件键与指定所有 AWS 身份的Principal
元素结合起来来实现这种效果。
您可以使用它来控制对任何KMS密钥资源操作(即使用特定密KMS钥的任何 AWS KMS 操作)的访问权限。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS 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:CustomerMasterKeySpec
和 kms:KeySpec
条件键的运行方式相同。只有名称不同。建议使用 kms:KeySpec
。但是,为避免重大更改, AWS KMS 支持两个条件键。
kms:CustomerMasterKeyUsage(已弃用)
kms:CustomerMasterKeyUsage
条件键已弃用。而是使用 kms: KeyUsage 条件密钥。
kms:CustomerMasterKeyUsage
和 kms:KeyUsage
条件键的运行方式相同。只有名称不同。建议使用 kms:KeyUsage
。但是,为避免重大更改, AWS KMS 支持两个条件键。
kms: DataKeyPairSpec
AWS KMS 条件键 | 条件类型 | 值类型 | API运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用此条件键根据请求中KeyPairSpec
参数的值来控制对GenerateDataKeyPair和GenerateDataKeyPairWithoutPlaintext操作的访问权限。例如,您可以仅允许用户生成特定类型的数据密钥对。
以下示例密钥策略声明使用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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
在请求加密操作时,您可以使用kms:EncryptionContext:context-key条件密KMS钥根据加密上下文来控制对称加密密钥的访问权限。使用此条件键可评估加密上下文对中的键和值。要仅评估加密上下文密钥或无论密钥或值如何,都需要加密上下文,请使用 k ms: EncryptionContextKeys 条件密钥。
注意
您不能在使用非对称密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
集合运算符的策略语句,则条件允许没有加密上下文的请求以及带有未在策略条件中指定的加密上下文对的请求。
警告
请勿将 ForAnyValue
或 ForAllValues
集合运算符用于此单值条件键。这些集合运算符可以创建一个策略条件,该条件不需要您计划要求的值,并允许您计划禁止的值。
如果您创建或更新包含带有 kms:: conte xt-key 的ForAllValues
集合运算符的策略, 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用户指南》中的创建包含多个键或值的条件。
注意
本主题的早期版本显示了使用和 se ForAllValues
t 运算符ForAnyValue
和 kms:EncryptionContext: conte xt-key 条件密钥的策略声明。将集合运算符与单值条件键结合使用可能会导致允许没有加密上下文和未指定加密上下文对的请求的策略。
例如,具有 Allow
效果、ForAllValues
集合运算符和 "kms:EncryptionContext:Department": "IT"
条件键的策略条件不会将加密上下文限制为“Department=IT”对。它允许没有加密上下文的请求和具有未指定加密上下文对的请求,例如 Stage=Restricted
。
请查看您的政策,并使用 kms:EncryptionContext: conte xt- key 将集合运算符从任何条件中删除。尝试使用此格式创建或更新策略失败,并显示 OverlyPermissiveCondition
异常。要纠正此错误,请删除集合运算符。
若需要多个加密上下文对,请列出相同条件下的对。以下示例密钥策略语句需要两个加密上下文对 Department=IT
和 Project=Alpha
。由于条件具有不同的键(kms:EncryptionContext:Department
和kms: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=IT
和Project=Alpha
对的加密上下文。它结合使用 kms:EncryptionContextKeys
条件键与 ForAllValues
集合运算符以仅允许 Department
和 Project
加密上下文键。
ForAllValues
集合运算符将请求中的加密上下文键限制为 Department
和 Project
。如果在条件中单独使用它,则此集合运算符将允许没有加密上下文的请求,但是在此配置中,此条件下的 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=Restricted
或 Stage=Production
.pair,则以下示例KMS密钥策略语句使用Deny
效果来禁止委托人使用密钥。
相同键 (kms:EncryptionContext:Stage
) 的多个值(Restricted
和 Production
)用 OR 隐式连接。有关详细信息,请参阅《IAM用户指南》中的具有多个键或值的条件的评估逻辑。
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }
加密上下文条件区分大小写
在解密操作中指定的加密上下文,与加密操作中指定的加密上下文必须是区分大小写的精确匹配。只有当加密上下文中有多个上下文对时,上下文对的顺序可以改变。
但是,在策略条件中,条件键不区分大小写。条件值是否区分大小写由您使用的策略条件运算符确定,例如 StringEquals
或 StringEqualsIgnoreCase
。
因此,条件键由前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运营 | 策略类型 |
---|---|---|---|---|
|
字符串(列表) |
多值 |
|
密钥政策和 IAM 策略 |
在请求加密操作时,您可以使用kms:EncryptionContextKeys
条件密KMS钥根据加密上下文来控制对称加密密钥的访问权限。使用此条件键仅评估各个加密上下文对中的键。要同时评估加密上下文中的键和值,请使用 kms:EncryptionContext:context-key
条件键。
您不能在使用非对称密KMS钥或密钥的加密操作中指定加密上下文。HMAC KMS非对称算法和MAC算法不支持加密上下文。
注意
这是一个多值条件键。您可以在每个API请求中指定多个加密上下文对。 kms:EncryptionContextKeys
将请求中的加密上下文密钥与策略中的加密上下文密钥集进行比较。要确定如何比较这些集,您必须在策略条件中提供 ForAnyValue
或 ForAllValues
集合运算符。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值。
-
ForAnyValue
:请求中的至少一个加密上下文键必须匹配策略条件中的加密上下文键。允许其他加密上下文键。如果请求中没有加密上下文,则不满足此条件。 -
ForAllValues
:请求中的每个加密上下文键必须匹配策略条件中的加密上下文键。此集合运算符将加密上下文键限制为策略条件中的键。它不需要任何加密上下文键,但禁止未指定的加密上下文键。
以下示例密钥策略语句结合使用 kms:EncryptionContextKeys
条件键与 ForAnyValue
集合运算符。此策略声明允许将KMS密钥用于指定的操作,但前提是请求中至少有一个加密上下文对包含该AppName
密钥,无论其值如何。
例如,此密钥策略语句允许包含两个加密上下文对 AppName=Helper
和 Project=Alpha
的 GenerateDataKey
请求,因为第一个加密上下文对满足此条件。只有 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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
kms:ExpirationModel
条件键根据请求中ExpirationModel参数的值控制对ImportKeyMaterial操作的访问权限。
ExpirationModel
是可选参数,用于确定导入的密钥材料是否过期。有效值为 KEY_MATERIAL_EXPIRES
和 KEY_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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用此条件键根据请求中的授权约束类型来控制对CreateGrant操作的访问权限。
创建授权时,您可以选择性地指定授权约束,以仅在存在特定加密上下文时允许授予操作权限。授权约束可以是以下两种类型之一:EncryptionContextEquals
或 EncryptionContextSubset
。您可以使用此条件键来检查请求中包含哪种类型。
重要
不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 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运营 | 策略类型 |
---|---|---|---|---|
|
布尔值 |
单值 |
|
密钥政策和 IAM 策略 |
仅当与之集成的AWS 服务代表用户 AWS KMS调用RevokeGrant
以下示例密钥策略语句使用 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运营 | 策略类型 |
---|---|---|---|---|
|
String |
多值 |
|
密钥政策和 IAM 策略 |
您可以使用此条件密钥根据请求中的授权CreateGrant操作来控制对操作的访问权限。例如,您可以允许用户创建委托加密权限(但不委托解密权限)的授权。有关授权的更多信息,请参阅使用授权。
这是一个多值条件键。kms:GrantOperations
将比较 CreateGrant
请求中的授权操作集合与策略中的授权操作集合。要确定如何比较这些集,您必须在策略条件中提供 ForAnyValue
或 ForAllValues
集合运算符。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值。
-
ForAnyValue
:请求中的至少一个授权操作必须匹配策略条件中的授权操作之一。允许其他授权操作。 -
ForAllValues:请求中的每个授予操作都必须与策略条件中的授权操作相匹配。此集合运算符将授权操作限制为策略条件中指定的操作。它不需要任何授权操作,但它禁止未指定的授权操作。
ForAllValues 当请求中没有授予操作但
CreateGrant
不允许时,也会返回 true。如果Operations
参数缺失或具有 null 值,则CreateGrant
请求失败。
以下示例密钥策略语句使用 kms:GrantOperations
条件键,以仅允许在授权操作为 Encrypt
、ReEncryptTo
或此两者时创建授权。如果授权包括任何其他操作,则 CreateGrant
请求失败。
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }
如果将策略条件中的集合运算符更改为 ForAnyValue
,则策略语句将要求授权中至少有一个授权操作是 Encrypt
或 ReEncryptTo
,但它允许其他授权操作,例如 Decrypt
或 ReEncryptFrom
。
另请参阅
kms: GranteePrincipal
AWS KMS 条件键 | 条件类型 | 值类型 | API运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
IAM 和密钥策略 |
您可以使用此条件键根据请求中GranteePrincipal参数的值来控制对CreateGrant操作的访问权限。例如,只有当CreateGrant
请求中的被授权者委托人与条件语句中指定的委托人匹配时,您才能创建使用KMS密钥的授权。
要指定被授权人委托人,请使用 AWS 委托人的 Amazon 资源名称 (ARN)。有效的委托人包括IAM用户 AWS 账户、IAM角色、联合用户和代入角色用户。有关委托人ARN语法的帮助,请参阅IAM用户指南IAMARNs中的。
以下示例密钥策略声明仅在授权中的被授权者委托人为时才使用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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用kms:KeyAgreementAlgorithm
条件键根据请求中KeyAgreementAlgorithm
参数的值来控制对DeriveSharedSecret操作的访问权限。的唯一有效值KeyAgreementAlgorithm
是ECDH
。
例如,以下密钥策略声明使用kms:KeyAgreementAlgorithm
条件密钥拒绝所有访问权限, DeriveSharedSecret 除非KeyAgreementAlgorithm
是ECDH
。
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringNotEquals": { "kms:KeyAgreementAlgorithm": "ECDH" } } }
另请参阅
kms: KeyOrigin
AWS KMS 条件键 | 条件类型 | 值类型 | API运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
KMS关键资源操作 |
IAM政策 密钥政策和 IAM 策略 |
kms:KeyOrigin
条件键根据操作创建或使用的KMS密钥的Origin
属性值来控制对操作的访问权限。它作为资源条件或请求条件工作。
您可以使用此条件键根据请求中 O rigin 参数的值来控制对CreateKey操作的访问权限。Origin
的有效值为 AWS_KMS
、AWS_CLOUDHSM
和 EXTERNAL
。
例如,只有在 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关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS 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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
KMS关键资源操作 |
IAM政策 密钥政策和 IAM 策略 |
kms:KeySpec
条件键根据操作创建或使用的KMS密钥的KeySpec
属性值来控制对操作的访问权限。
您可以在IAM策略中使用此条件密钥,根据CreateKey
请求中KeySpec参数的值来控制对CreateKey操作的访问权限。例如,您可以使用此条件允许用户仅创建对称加密KMS密钥或仅创建密HMACKMS钥。
以下示例IAM策略声明使用kms:KeySpec
条件密钥仅允许委托人创建RSA非对称KMS密钥。权限仅在请求中的 KeySpec
以 RSA_
开头时有效。
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }
您还可以根据用于操作的密钥的KeySpec
属性使用kms:KeySpec
条件KMS密钥来控制对使用或管理KMS密钥的操作的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS 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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
KMS关键资源操作 |
IAM政策 密钥政策和 IAM 策略 |
kms:KeyUsage
条件键根据操作创建或使用的KMS密钥的KeyUsage
属性值来控制对操作的访问权限。
您可以使用此条件键根据请求中KeyUsage参数的值来控制对CreateKey操作的访问权限。的有效值KeyUsage
为ENCRYPT_DECRYPT
SIGN_VERIFY
、GENERATE_VERIFY_MAC
、和KEY_AGREEMENT
。
例如,您只能在KMS密钥为时创建密钥,ENCRYPT_DECRYPT
或者在为时拒绝用户权限SIGN_VERIFY
。KeyUsage
KeyUsage
以下示例IAM策略声明仅在kms:KeyUsage
条件为时才使用条件KMS密钥创建密钥ENCRYPT_DECRYPT
。KeyUsage
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }
您还可以根据操作中密钥的KeyUsage
属性使用kms:KeyUsage
条件KMS密钥来控制对使用或管理密KMS钥的操作的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS 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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用kms:MacAlgorithm
条件键根据请求中MacAlgorithm
参数的值来控制对GenerateMac和VerifyMac操作的访问权限。
以下示例密钥策略允许能够代入该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运营 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
kms:MessageType
条件键基于请求中 MessageType
参数的值控制对 Sign 和 Verify 操作的访问权限。MessageType
的有效值为 RAW
和 DIGEST
。
例如,以下密钥策略声明使用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关键资源操作 |
密钥政策和 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操作 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
KMS关键资源操作 |
密钥政策和 IAM 策略 |
您可以使用此条件键以允许仅对多区域主键或仅对多区域副本密钥执行操作。kms:MultiRegionKeyType
条件键根据KMS密钥的 AWS KMS MultiRegionKeyType
属性控制对按键CreateKey操作的KMS访问权限和操作。有效值为 PRIMARY
和 REPLICA
。只有多区域密钥具有 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操作 | 策略类型 |
---|---|---|---|---|
|
字符串(列表) |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用此条件键来限制UpdatePrimaryRegion操作中的目标区域。它们 AWS 区域 可以托管您的多区域主密钥。
kms:PrimaryRegion
条件键根据PrimaryRegion
参数的值控制对UpdatePrimaryRegion操作的访问权限。该PrimaryRegion
参数指定要提升 AWS 区域 为主密钥的多区域副本密钥。条件的值是一个或多个 AWS 区域 名称,例如us-east-1
或ap-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操作 | 策略类型 |
---|---|---|---|---|
|
布尔值 |
单值 |
|
密钥政策和 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操作 | 策略类型 |
---|---|---|---|---|
|
字符串(列表) |
单值 |
密钥政策和 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关键资源操作 |
仅 IAM 策略 |
使用此条件密钥可根据与KMS密钥关联的别名来控制对KMS密钥的访问权限。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS 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策略中的别名集进行比较。要确定如何比较这些集,您必须在策略条件中提供 ForAnyValue
或 ForAllValues
集合运算符。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值。
-
ForAnyValue:至少有一个与KMS密钥关联的别名必须与策略条件中的别名相匹配。允许使用其他别名。如果KMS密钥没有别名,则不满足条件。
-
ForAllValues:与KMS密钥关联的每个别名都必须与策略中的别名相匹配。此集合运算符将与KMS密钥关联的别名限制为策略条件中的别名。它不需要任何别名,但它会禁止未指定的别名。
例如,以下IAM策略语句允许委托人对指定KMS AWS 账户 密钥中与finance-key
别名关联的任何密钥调用该GenerateDataKey操作。(受影响KMS密钥的密钥策略还必须允许委托人的账户使用它们进行此操作。) 为了表示当可能与KMS密钥关联的众多别名之一为时满足条件alias/finance-key
,该条件使用 se ForAnyValue
t 运算符。
{ "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操作 | 策略类型 |
---|---|---|---|---|
|
字符串(列表) |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用此条件密钥来限制委托人 AWS 区域 可以复制多区域密钥的范围。kms:ReplicaRegion
条件键根据请求中ReplicaRegion参数的值控制对ReplicateKey操作的访问权限。此参数为新的副本密钥指定 AWS 区域
。
条件的值是一个或多个 AWS 区域 名称,例如us-east-1
或ap-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操作 | 策略类型 |
---|---|---|---|---|
|
字符串(列表) |
单值 |
|
密钥政策和 IAM 策略 |
您可以使用此条件键根据请求中RetiringPrincipal参数的值来控制对CreateGrant操作的访问权限。例如,您可以创建仅当CreateGrant
请求中的与条件语句RetiringPrincipal
中的匹配时才使用KMS密钥的授权。RetiringPrincipal
要指定即将退出的委托人,请使用 AWS 委托人的 Amazon 资源名称 (ARN)。有效的委托人包括IAM用户 AWS 账户、IAM角色、联合用户和代入角色用户。有关委托人ARN语法的帮助,请参阅IAM用户指南IAMARNs中的。
以下示例密钥策略声明允许用户为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操作 | 策略类型 |
---|---|---|---|---|
|
数值 |
单值 |
|
密钥政策和 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操作 | 策略类型 |
---|---|---|---|---|
|
数值 |
单值 |
|
密钥政策和 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操作 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 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操作 | 策略类型 |
---|---|---|---|---|
|
Timestamp |
单值 |
|
密钥政策和 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操作 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
KMS关键资源操作 |
密钥政策和 IAM 策略 |
kms:ViaService
条件密钥将密KMS钥的使用限制为来自指定 AWS 服务的请求。您可以在每个 kms:ViaService
条件键中指定一个或多个服务。该操作必须是KMS密钥资源操作,即为特定KMS密钥授权的操作。要确定KMS关键资源操作,请在 “操作和资源” 表中,在该操作的Resources
列KMS 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 AppFabric | appfabric. |
Amazon AppFlow | appflow. |
AWS Application Migration Service | mgn. |
Amazon Athena | athena. |
AWS Audit Manager | auditmanager. |
Amazon Aurora | rds. |
AWS Backup | backup. |
AWS Backup 网关 | backup-gateway. |
Amazon 基岩模型副本 | bedrock. |
Amazon Chime SDK | chimevoiceconnector. |
AWS CodeArtifact | codeartifact. |
Amazon CodeGuru Reviewer | codeguru-reviewer. |
Amazon Comprehend | comprehend. |
Amazon Connect | connect. |
Amazon Connect Customer Profiles | profile. |
Amazon Q in Connect | wisdom. |
AWS Database Migration Service (AWS DMS) | dms. |
AWS Directory Service | directoryservice. |
Amazon DynamoDB | dynamodb. |
Amazon DocumentDB | docdb-elastic. |
亚马逊 S EC2 ystems Manager (SSM) | ssm. |
亚马逊 Elastic Block Store(亚马逊EBS) | ec2. (EBS仅限) |
亚马逊弹性容器注册表(亚马逊ECR) | ecr. |
亚马逊 Elastic File System(亚马逊EFS) | elasticfilesystem. |
Amazon ElastiCache |
在条件键值中包含两个 ViaService 名称:
|
AWS Elemental MediaTailor | mediatailor. |
AWS 实体分辨率 | entityresolution. |
Amazon EventBridge | events. |
Amazon FinSpace | finspace. |
Amazon Forecast | forecast. |
Amazon FSx | fsx. |
AWS Glue | glue. |
AWS Ground Station | groundstation. |
Amazon GuardDuty | malware-protection. |
AWS HealthLake | healthlake. |
AWS IoT SiteWise | iotsitewise. |
Amazon Kendra | kendra. |
Amazon Keyspaces (for Apache Cassandra) | cassandra. |
Amazon Kinesis | kinesis. |
Amazon Data Firehose | firehose. |
Amazon Kinesis Video Streams | kinesisvideo. |
AWS Lambda | lambda. |
Amazon Lex | lex. |
AWS License Manager | license-manager. |
Amazon Location Service | geo. |
Amazon Lookout for Equipment | lookoutequipment. |
Amazon Lookout for Metrics | lookoutmetrics. |
Amazon Lookout for Vision | lookoutvision. |
Amazon Macie | macie. |
AWS Mainframe Modernization | m2. |
AWS Mainframe Modernization 应用程序测试 | apptest. |
Amazon Managed Blockchain | managedblockchain. |
适用于 Apache Kafka 的亚马逊托管流媒体 Kafka(亚马逊)MSK | kafka. |
Amazon Apache Airflow 托管工作流程 () MWAA | airflow. |
Amazon MemoryDB | memorydb. |
Amazon Monitron | monitron. |
Amazon MQ | mq. |
Amazon Neptune | rds. |
Amazon Nimble Studio | nimble. |
AWS HealthOmics | omics. |
亚马逊 OpenSearch 服务 | es. ,
aoss. |
AWS Proton | proton. |
亚马逊 Quantum Ledger 数据库(亚马逊QLDB) | qldb. |
Amazon Per RDS formance In | rds. |
Amazon Redshift | redshift. |
Amazon Redshift 查询编辑器 V2 | sqlworkbench. |
Amazon Redshift Serverless | redshift-serverless. |
Amazon Rekognition | rekognition. |
亚马逊 Relational Database Service(亚马逊RDS) | rds. |
Amazon 复制的数据存储 | ards. |
Amazon SageMaker | sagemaker. |
AWS Secrets Manager | secretsmanager. |
Amazon Security Lake | securitylake. |
亚马逊简单电子邮件服务(亚马逊SES) | ses. |
亚马逊简单通知服务(亚马逊SNS) | sns. |
亚马逊简单队列服务(亚马逊SQS) | sqs. |
Amazon Simple Storage Service (Amazon S3) | s3. |
AWS Snowball | importexport. |
AWS Step Functions | states. |
AWS Storage Gateway | storagegateway. |
AWS Systems Manager Incident Manager | ssm-incidents. |
AWS Systems Manager Incident Manager 联系人 | ssm-contacts. |
Amazon Timestream | timestream. |
Amazon Translate | translate. |
AWS Verified Access | verified-access. |
Amazon WorkMail | workmail. |
Amazon WorkSpaces | workspaces. |
Amazon WorkSpaces 瘦客户机 | thinclient. |
Amazon WorkSpaces Web | workspaces-web. |
AWS X-Ray | xray. |
kms: WrappingAlgorithm
AWS KMS 条件键 | 条件类型 | 值类型 | API操作 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
此条件键根据请求中WrappingAlgorithm参数的值控制对GetParametersForImport操作的访问权限。您可以使用此条件要求委托人在导入过程中使用特定算法来加密密钥材料。当对所需公有密钥和导入令牌的请求指定不同的包装算法时,它们会失败。
以下示例密钥策略语句使用 kms:WrappingAlgorithm
条件键为示例用户提供调用 GetParametersForImport
操作的权限,但阻止他们使用 RSAES_OAEP_SHA_1
包装算法。当 GetParametersForImport
请求中的 WrappingAlgorithm
是 RSAES_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操作 | 策略类型 |
---|---|---|---|---|
|
String |
单值 |
|
密钥政策和 IAM 策略 |
此条件键根据请求中WrappingKeySpec参数的值控制对GetParametersForImport操作的访问权限。您可以使用此条件,要求委托人在导入过程中使用特定的公有密钥类型。如果请求指定了不同密钥类型,它会失败。
由于 WrappingKeySpec
参数值的唯一有效值为 RSA_2048
,阻止用户使用此值将有效阻止它们使用 GetParametersForImport
操作。
以下示例策略语句使用 kms:WrappingAlgorithm
条件键要求请求中的 WrappingKeySpec
为 RSA_4096
。
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }
另请参阅