Amazon Key Management Service 的操作、资源和条件键 - 服务授权参考
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Key Management Service 的操作、资源和条件键

Amazon 密钥管理服务(服务前缀:kms)提供以下特定于服务的资源、操作和条件上下文密钥,供在 IAM 权限策略中使用。

参考:

Amazon Key Management Service 定义的操作

您可以在 IAM 策略语句的 Action 元素中指定以下操作。可以使用策略授予在 Amazon中执行操作的权限。您在策略中使用一项操作时,通常使用相同的名称允许或拒绝对 API 操作或 CLI 命令的访问。但在某些情况下,单一动作可控制对多项操作的访问。还有某些操作需要多种不同的动作。

操作表的资源类型列指示每项操作是否支持资源级权限。如果该列没有任何值,您必须在策略语句的 Resource 元素中指定策略应用的所有资源(“*”)。通过在 IAM policy 中使用条件来筛选访问权限,以控制是否可以在资源或请求中使用特定标签键。如果操作具有一个或多个必需资源,则调用方必须具有使用这些资源来使用该操作的权限。必需资源在表中以星号 (*) 表示。如果您在 IAM policy 中使用 Resource 元素限制资源访问权限,则必须为每种必需的资源类型添加 ARN 或模式。某些操作支持多种资源类型。如果资源类型是可选的(未指示为必需),则可以选择使用一种可选资源类型。

操作表的条件键列包括可以在策略语句的 Condition 元素中指定的键。有关与服务资源关联的条件键的更多信息,请参阅资源类型表的条件键列。

注意

资源条件键在资源类型表中列出。您可以在操作表的资源类型(* 为必需)列中找到应用于某项操作的资源类型的链接。资源类型表中的资源类型包括条件密钥列,这是应用于操作表中操作的资源条件键。

有关下表中各列的详细信息,请参阅操作表

操作 描述 访问级别 资源类型(* 为必需) 条件键 相关操作
CancelKeyDeletion 控制取消计划删除 Amazon KMS 密钥的权限 写入

key*

kms:CallerAccount

kms:ViaService

ConnectCustomKeyStore 控制将自定义密钥存储连接到或重新连接到其关联的 Cloud Amazon HSM 集群或外部密钥管理器的权限 Amazon 写入

kms:CallerAccount

CreateAlias 控制为 Amazon KMS 密钥创建别名的权限。别名是可选的友好名称,您可以将其与 KMS 密钥相关联 写入

alias*

key*

kms:CallerAccount

kms:ViaService

CreateCustomKeyStore 控制创建由 Amazon CloudHSM 集群或外部密钥管理器支持的自定义密钥存储库的权限 Amazon 写入

kms:CallerAccount

cloudhsm:DescribeClusters

iam:CreateServiceLinkedRole

CreateGrant 控制向 Amazon KMS 密钥添加授权的权限。您可以使用授权添加权限,而不更改密钥策略或 IAM policy 权限管理

key*

kms:CallerAccount

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:GrantConstraintType

kms:GranteePrincipal

kms:GrantIsForAWSResource

kms:GrantOperations

kms:RetiringPrincipal

kms:ViaService

CreateKey 控制创建可用于保护数据密 Amazon 钥和其他敏感信息的 KMS 密钥的权限 写入

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

kms:BypassPolicyLockoutSafetyCheck

kms:CallerAccount

kms:KeySpec

kms:KeyUsage

kms:KeyOrigin

kms:MultiRegion

kms:MultiRegionKeyType

kms:ViaService

iam:CreateServiceLinkedRole

kms:PutKeyPolicy

kms:TagResource

Decrypt 控制解密使用 KMS 密钥加密的密文的权限 Amazon 写入

key*

kms:CallerAccount

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:RecipientAttestation:ImageSha384

kms:RequestAlias

kms:ViaService

DeleteAlias 控制权限以删除别名。别名是可选的友好名称,您可以将其与 Amazon KMS 密钥相关联 写入

alias*

key*

kms:CallerAccount

kms:ViaService

DeleteCustomKeyStore 控制权限以删除自定义密钥存储 写入

kms:CallerAccount

DeleteImportedKeyMaterial 控制删除您导入 Amazon KMS 密钥的加密材料的权限。此操作会使此密钥变得无法使用 Write

key*

kms:CallerAccount

kms:ViaService

DescribeCustomKeyStores 控制权限以查看有关账户和区域中的自定义密钥存储的详细信息 读取

kms:CallerAccount

DescribeKey 控制查看 Amazon KMS 密钥详细信息的权限 读取

key*

kms:CallerAccount

kms:RequestAlias

kms:ViaService

DisableKey 控制禁用 Amazon KMS 密钥的权限,从而防止将其用于加密操作 写入

key*

kms:CallerAccount

kms:ViaService

DisableKeyRotation 控制禁用客户管理的 Amazon KMS 密钥自动轮换的权限 写入

key*

kms:CallerAccount

kms:ViaService

DisconnectCustomKeyStore 控制将自定义密钥存储与其关联的 Amazon CloudHSM 集群或外部密钥管理器断开连接的权限 Amazon 写入

kms:CallerAccount

EnableKey 控制将 Amazon KMS 密钥状态更改为已启用的权限。这允许将 KMS 密钥用于加密操作中 写入

key*

kms:CallerAccount

kms:ViaService

EnableKeyRotation 控制允许自动轮换 Amazon KMS 密钥中的加密材料的权限 写入

key*

kms:CallerAccount

kms:RotationPeriodInDays

kms:ViaService

Encrypt 控制使用指定的 Amazon KMS 密钥加密数据和数据密钥的权限 写入

key*

kms:CallerAccount

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:RequestAlias

kms:ViaService

GenerateDataKey 控制使用 Amazon KMS 密钥生成数据密钥的权限。您可以使用数据密钥对 Amazon KMS 之外的数据进行加密 写入

key*

kms:CallerAccount

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:RecipientAttestation:ImageSha384

kms:RequestAlias

kms:ViaService

GenerateDataKeyPair 控制使用 Amazon KMS 密钥生成数据密钥对的权限 写入

key*

kms:CallerAccount

kms:DataKeyPairSpec

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:RequestAlias

kms:ViaService

GenerateDataKeyPairWithoutPlaintext 控制使用 Amazon KMS 密钥生成数据密钥对的权限。与 GenerateDataKeyPair 操作不同,此操作返回的不是纯文本副本的加密私钥 写入

key*

kms:CallerAccount

kms:DataKeyPairSpec

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:RequestAlias

kms:ViaService

GenerateDataKeyWithoutPlaintext 控制使用 Amazon KMS 密钥生成数据密钥的权限。与 GenerateDataKey 操作不同,此操作返回的加密数据密钥没有纯文本版本的数据密钥 写入

key*

kms:CallerAccount

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:RequestAlias

kms:ViaService

GenerateMac 控制使用 Amazon KMS 密钥生成消息身份验证码的权限 写入

key*

kms:CallerAccount

kms:MacAlgorithm

kms:RequestAlias

kms:ViaService

GenerateRandom 控制从 KMS 获取加密安全的随机字节字符串的 Amazon 权限 写入

kms:RecipientAttestation:ImageSha384

GetKeyPolicy 控制查看指定 Amazon KMS 密钥的密钥策略的权限 读取

key*

kms:CallerAccount

kms:ViaService

GetKeyRotationStatus 控制查看 Amazon KMS 密钥的密钥轮换状态的权限 读取

key*

kms:CallerAccount

kms:ViaService

GetParametersForImport 控制权限以获取将加密材料导入到客户托管密钥所需的数据,包括公有密钥和导入令牌 读取

key*

kms:CallerAccount

kms:ViaService

kms:WrappingAlgorithm

kms:WrappingKeySpec

GetPublicKey 控制下载非对称 KMS 密钥的公 Amazon 钥的权限 读取

key*

kms:CallerAccount

kms:RequestAlias

kms:ViaService

ImportKeyMaterial 控制将加密材料导入 Amazon KMS 密钥的权限 写入

key*

kms:CallerAccount

kms:ExpirationModel

kms:ValidTo

kms:ViaService

ListAliases 控制权限以查看在账户中定义的别名。别名是可选的友好名称,您可以将其与 Amazon KMS 密钥相关联 列出
ListGrants 控制查看 Amazon KMS 密钥所有授权的权限 列出

key*

kms:CallerAccount

kms:GrantIsForAWSResource

kms:ViaService

ListKeyPolicies 控制查看 Amazon KMS 密钥的密钥策略名称的权限 列出

key*

kms:CallerAccount

kms:ViaService

ListKeyRotations 控制查看 Amazon KMS 密钥已完成的密钥轮换列表的权限 列出

key*

kms:CallerAccount

kms:ViaService

ListKeys 控制查看账户中所有 Amazon KMS 密钥的密钥 ID 和亚马逊资源名称 (ARN) 的权限 列出
ListResourceTags 控制查看附加到 Amazon KMS 密钥的所有标签的权限 列出

key*

kms:CallerAccount

kms:ViaService

ListRetirableGrants 控制权限以查看其中指定的委托人为停用委托人的授权。其他委托人可能能够停用此授权,而且此委托人可能能够停用其他授权 列出
PutKeyPolicy 控制替换指定 Amazon KMS 密钥的密钥策略的权限 权限管理

key*

kms:BypassPolicyLockoutSafetyCheck

kms:CallerAccount

kms:ViaService

ReEncryptFrom 控制在 KMS 中解密和重新加密数据的过程中的数据解密权限 Amazon 写入

key*

kms:CallerAccount

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:ReEncryptOnSameKey

kms:RequestAlias

kms:ViaService

ReEncryptTo 在 KMS 中对数据进行解密和重新加密,控制对数据进行加密的权限 Amazon 写入

key*

kms:CallerAccount

kms:EncryptionAlgorithm

kms:EncryptionContext:${EncryptionContextKey}

kms:EncryptionContextKeys

kms:ReEncryptOnSameKey

kms:RequestAlias

kms:ViaService

ReplicateKey 控制复制多区域主键的权限 Write

key*

iam:CreateServiceLinkedRole

kms:CreateKey

kms:PutKeyPolicy

kms:TagResource

kms:CallerAccount

kms:ReplicaRegion

kms:ViaService

RetireGrant 控制权限以停用授权。该 RetireGrant 操作通常由授权用户在完成授权允许他们执行的任务后调用 权限管理

key*

RevokeGrant 控制权限以撤销授权,这会对所有依赖于此授权的操作拒绝权限 权限管理

key*

kms:CallerAccount

kms:GrantIsForAWSResource

kms:ViaService

RotateKeyOnDemand 控制调用 Amazon KMS 密钥中加密材料的按需轮换的权限 写入

key*

kms:CallerAccount

kms:ViaService

ScheduleKeyDeletion 控制计划删除 Amazon KMS 密钥的权限 写入

key*

kms:CallerAccount

kms:ScheduleKeyDeletionPendingWindowInDays

kms:ViaService

Sign 控制权限以便为消息生成数字签名 Write

key*

kms:CallerAccount

kms:MessageType

kms:RequestAlias

kms:SigningAlgorithm

kms:ViaService

SynchronizeMultiRegionKey [仅权限] 控制对可同步多区域密钥的内部 API 的访问 写入

key*

TagResource 控制创建或更新附加到 Amazon KMS 密钥的标签的权限 标记

key*

aws:RequestTag/${TagKey}

aws:TagKeys

kms:CallerAccount

kms:ViaService

UntagResource 控制删除附加到 Amazon KMS 密钥的标签的权限 标记

key*

aws:TagKeys

kms:CallerAccount

kms:ViaService

UpdateAlias 控制将别名与其他 Amazon KMS 密钥关联的权限。别名是可选的友好名称,您可以将其与 KMS 密钥相关联 写入

alias*

key*

kms:CallerAccount

kms:ViaService

UpdateCustomKeyStore 控制权限以更改自定义密钥存储的属性 写入

kms:CallerAccount

UpdateKeyDescription 控制删除 KMS 密钥或更改 Amazon KMS 密钥描述的权限 写入

key*

kms:CallerAccount

kms:ViaService

UpdatePrimaryRegion 控制更新多区域主键的主区域的权限 写入

key*

kms:CallerAccount

kms:PrimaryRegion

kms:ViaService

Verify 控制使用指定 Amazon KMS 密钥验证数字签名的权限 写入

key*

kms:CallerAccount

kms:MessageType

kms:RequestAlias

kms:SigningAlgorithm

kms:ViaService

VerifyMac 控制使用 Amazon KMS 密钥验证消息身份验证码的权限 写入

key*

kms:CallerAccount

kms:MacAlgorithm

kms:RequestAlias

kms:ViaService

Amazon Key Management Service 定义的资源类型

以下资源类型是由该服务定义的,可以在 IAM 权限策略语句的 Resource 元素中使用这些资源类型。操作表中的每个操作指定了可以使用该操作指定的资源类型。您也可以在策略中包含条件键,从而定义资源类型。这些键显示在表的最后一列。有关下表中各列的详细信息,请参阅资源类型表

资源类型 ARN 条件键
alias arn:${Partition}:kms:${Region}:${Account}:alias/${Alias}
key arn:${Partition}:kms:${Region}:${Account}:key/${KeyId}

aws:ResourceTag/${TagKey}

kms:KeyOrigin

kms:KeySpec

kms:KeyUsage

kms:MultiRegion

kms:MultiRegionKeyType

kms:ResourceAliases

Amazon Key Management Service 的条件键

Amazon 密钥管理服务定义了以下条件密钥,这些条件密钥可用于 IAM 策略的Condition元素。您可以使用这些键进一步细化应用策略语句的条件。有关下表中各列的详细信息,请参阅条件键表

要查看适用于所有服务的全局条件键,请参阅可用的全局条件键

条件键 描述 类型
aws:RequestTag/${TagKey} 根据请求中标签的密钥和值筛选对指定 Amazon KMS 操作的访问权限 String
aws:ResourceTag/${TagKey} 根据分配给 Amazon KMS 密钥的标签筛选对指定 Amazon KMS 操作的访问权限 String
aws:TagKeys 根据请求中的标签密钥筛选对指定 Amazon KMS 操作的访问权限 ArrayOfString
kms:BypassPolicyLockoutSafetyCheck 根据请求中 BypassPolicyLockoutSafetyCheck 参数的值筛选对 CreateKey 和 PutKeyPolicy 操作的访问权限 布尔型
kms:CallerAccount 根据调用者的 Amazon Web Services 账户 ID 筛选对指定 Amazon KMS 操作的访问权限。您可以使用此条件密钥在一份政策声明中允许或拒绝所有 IAM 用户和角色 Amazon Web Services 账户 的访问权限 String
kms:CustomerMasterKeySpec kms: CustomerMasterKeySpec 条件密钥已弃用。而是使用 kms: KeySpec 条件密钥 String
kms:CustomerMasterKeyUsage kms: CustomerMasterKeyUsage 条件密钥已弃用。而是使用 kms: KeyUsage 条件密钥 String
kms:DataKeyPairSpec 根据请求中 KeyPairSpec 参数的值筛选访问权限 GenerateDataKeyPair 和 GenerateDataKeyPairWithoutPlaintext 操作 String
kms:EncryptionAlgorithm 根据请求中的加密算法的值筛选对加密操作的访问权限 String
kms:EncryptionContext:${EncryptionContextKey} 根据加密操作中的加密上下文筛选对称 Amazon KMS 密钥的访问权限。此条件可评估每个键值加密上下文对中的键和值 String
kms:EncryptionContextKeys 根据加密操作中的加密上下文筛选对称 Amazon KMS 密钥的访问权限。此条件键仅评估每个键值加密上下文对中的键 ArrayOfString
kms:ExpirationModel 根据请求中 ExpirationModel 参数的值筛选对 ImportKeyMaterial 操作的访问权限 String
kms:GrantConstraintType 根据请求中的授权限制筛选对 CreateGrant 操作的访问权限 String
kms:GrantIsForAWSResource 当请求来自指定 Amazon 服务时,筛选对 CreateGrant 操作的访问权限 布尔型
kms:GrantOperations 根据授权中的 CreateGrant 操作筛选对操作的访问权限 ArrayOfString
kms:GranteePrincipal 根据授权中的被授权人委托人筛选对 CreateGrant 操作的访问权限 String
kms:KeyOrigin 根据操作创建或使用的 Amazon KMS 密钥的 Origin 属性筛选对 API 操作的访问权限。使用它来限定对 KMS 密钥授权的 CreateKey 操作或任何操作的授权 String
kms:KeySpec 根据操作创建或使用的 Amazon KMS 密钥的 KeySpec 属性筛选对 API 操作的访问权限。使用它来限定对 KMS 密钥资源授权的 CreateKey 操作或任何操作的授权 String
kms:KeyUsage 根据操作创建或使用的 Amazon KMS 密钥的 KeyUsage 属性筛选对 API 操作的访问权限。使用它来限定对 KMS 密钥资源授权的 CreateKey 操作或任何操作的授权 String
kms:MacAlgorithm 根据请求中的 MacAlgorithm 参数筛选对 GenerateMac 和 VerifyMac 操作的访问权限 String
kms:MessageType 根据请求中 MessageType 参数的值筛选对 “签名和验证” 操作的访问权限 String
kms:MultiRegion 根据操作创建或使用的 Amazon KMS 密钥的 MultiRegion 属性筛选对 API 操作的访问权限。使用它来限定对 KMS 密钥资源授权的 CreateKey 操作或任何操作的授权 布尔型
kms:MultiRegionKeyType 根据操作创建或使用的 Amazon KMS 密钥的 MultiRegionKeyType 属性筛选对 API 操作的访问权限。使用它来限定对 KMS 密钥资源授权的 CreateKey 操作或任何操作的授权 String
kms:PrimaryRegion 根据请求中 PrimaryRegion 参数的值筛选对 UpdatePrimaryRegion 操作的访问权限 String
kms:ReEncryptOnSameKey 当 ReEncrypt 操作使用的密钥与用于加密操作的相同 Amazon KMS 密钥时,会筛选对该操作的访问权限 布尔型
kms:RecipientAttestation:ImageSha384 根据请求中认证文档中的图像哈希筛选对 Decrypt 的访问权限和 GenerateRandom 操作 GenerateDataKey String
kms:RecipientAttestation:PCR 根据请求中认证文档中的平台配置寄存 GenerateDataKey器 (PCR) 筛选对 Decrypt 的访问权限和 GenerateRandom 操作 String
kms:ReplicaRegion 根据请求中 ReplicaRegion 参数的值筛选对 ReplicateKey 操作的访问权限 String
kms:RequestAlias GetPublicKey 根据请求中的别名筛选对加密操作 DescribeKey、和的访问权限 String
kms:ResourceAliases 根据与 Amazon KMS 密钥关联的别名筛选对指定 Amazon KMS 操作的访问权限 ArrayOfString
kms:RetiringPrincipal 根据补助金中即将退休的本金筛选对 CreateGrant 操作的访问权限 String
kms:RotationPeriodInDays 根据请求中 RotationPeriodInDays 参数的值筛选对 EnableKeyRotation 操作的访问权限 数值
kms:ScheduleKeyDeletionPendingWindowInDays 根据请求中 PendingWindowInDays 参数的值筛选对 ScheduleKeyDeletion 操作的访问权限 数值
kms:SigningAlgorithm 根据请求中的签名算法筛选对 Sign 和 Verify 操作的访问权限 String
kms:ValidTo 根据请求中 ValidTo 参数的值筛选对 ImportKeyMaterial 操作的访问权限。您可以使用此条件键以允许用户仅当在指定的日期到期时才能导入密钥材料 Date
kms:ViaService 当委托人代表委托人提出的请求来自指定 Amazon 服务时,筛选访问权限 String
kms:WrappingAlgorithm 根据请求中 WrappingAlgorithm 参数的值筛选对 GetParametersForImport 操作的访问权限 String
kms:WrappingKeySpec 根据请求中 WrappingKeySpec 参数的值筛选对 GetParametersForImport 操作的访问权限 String