条件(Condition)即指定授权生效的限制条件,您可以在密钥策略、凭据策略、RAM的系统权限策略中设定条件键,以控制对KMS的访问。本文介绍KMS支持哪些条件键。

说明

示例中的Principal字段为密钥策略、凭据策略必填的字段,如果您使用RAM的自定义权限策略,无需设置该字段。

密钥相关的条件键

kms:tag

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:tag

根据密钥标签,筛选对API操作的访问权限。

字符串

  • Encrypt

  • Decrypt

  • ReEncrypt

  • ExportDataKey

  • GenerateDataKey

  • GenerateDataKeyWithoutPlaintext

  • GenerateAndExportDataKey

  • AsymmetricDecrypt

  • AsymmetricEncrypt

  • AsymmetricSign

  • AsymmetricVerify

  • GetPublicKey

  • DescribeKey

  • UpdateKeyDescription

  • EnableKey

  • DisableKey

  • CancelKeyDeletion

  • ScheduleKeyDeletion

  • ImportKeyMaterial

  • GetParametersForImport

  • DeleteKeyMaterial

  • CreateKeyVersion

  • DescribeKeyVersion

  • ListKeyVersions

  • UpdateRotationPolicy

  • SetDeletionProtection

您自定义的密钥标签。

  • RAM的自定义权限策略

  • 密钥策略

  • 凭据策略

kms:EncryptionAlgorithm

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:EncryptionAlgorithm

根据请求中的加密算法的取值,筛选对加密操作的访问权限。

字符串

  • Decrypt

  • Encrypt

  • GenerateDataKey

  • GenerateDataKeyWithoutPlaintext

  • ReEncrypt

  • AsymmetricDecrypt

  • AsymmetricEncrypt

  • ExportDataKey

  • GenerateAndExportDataKey

加密算法,例如SYMMETRIC_DEFAULT、RSAES_OAEP_SHA_256、ECIES_DH_SHA_1_XOR_HMAC等。

KMS支持的加密算法,请参见密钥管理类型和密钥规格

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示仅允许RAM用户key_ramuser1,使用RSAES_OAEP_SHA_256算法执行加密、解密或转加密操作。可以提高加密密钥使用的安全性和合规性,确保只使用指定的加密算法,防止不合规或不安全的加密算法被误用。

{
  "Sid": "Allow only one encryption algorithm with this asymmetric KMS key",
  "Effect": "Deny",
  "Principal": {
          "RAM": [
                    "acs:ram::119285303511****:user/key_ramuser1"
                ]
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT"
    }
  }
}

kms:EncryptionContext:${EncryptionContextKey}

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:EncryptionContext:${EncryptionContextKey}

根据加密操作中的加密上下文,筛选对KMS对称密钥的访问权限。

此条件可评估每个键值加密上下文对中的键和值。

字符串

  • Decrypt

  • Encrypt

  • GenerateDataKey

  • GenerateDataKeyWithoutPlaintext

  • ExportDataKey

  • GenerateAndExportDataKey

您自行设置的EncryptionContext。

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示允许阿里云账号119285303511****下的所有RAM用户,当加密上下文kms:EncryptionContext中的Project值为ProjectA时,执行生成数据密钥操作(kms:GenerateDataKey)。

{
 "Effect": "Allow",
 "Principal": {
	 "RAM": [
	 "acs:ram::119285303511****:*"
	 ]
	},
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
 "StringEquals": {
 "kms:EncryptionContext:Project": "ProjectA"
 }
 }
}

kms:EncryptionContextKeys

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:EncryptionContextKeys

根据加密操作中的加密上下文,筛选对KMS对称密钥的访问权限。

仅支持筛选每个键值加密上下文对中的键。

字符串数组

  • Decrypt

  • Encrypt

  • GenerateDataKey

  • GenerateDataKeyWithoutPlaintext

  • ExportDataKey

  • GenerateAndExportDataKey

由您自行设置,仅支持设置为EncryptionContext键值对中的键。

密钥策略

例如,如下示例表示允许阿里云账号119285303511****下的所有RAM用户在加密上下文(EncryptionContext)中包含键名为Project时,执行数据密钥生成操作(kms:GenerateDataKey)。

{
 "Effect": "Allow",
 "Principal": {
	 "RAM": [
	 "acs:ram::119285303511****:*"
	 ]
	},
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
 "StringEquals": {
 "kms:EncryptionContextKeys": "Project"
 }
 }
}

kms:ExpirationModel

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:ExpirationModel

根据请求中ExpirationModel参数的值,筛选对ImportKeyMaterial操作的访问权限。

字符串

ImportKeyMaterial

  • KEY_MATERIAL_DOES_NOT_EXPIRE:密钥材料不过期

  • KEY_MATERIAL_EXPIRES:密钥材料过期

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示仅支持密钥材料的过期模型为KEY_MATERIAL_DOES_NOT_EXPIRE的情况下,才允许阿里云账号119285303511****下的所有RAM用户执行kms:ImportKeyMaterial操作(导入密钥材料)。

{
  "Effect": "Allow",
  "Principal": {
    "RAM": "acs:ram::119285303511****:*"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE"
    }
  }
}

kms:ValidTo

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:ValidTo

根据请求中ValidTo参数的值,筛选对ImportKeyMaterial操作的访问权限。

您可以使用此条件键以允许用户仅当在指定的日期到期时才能导入密钥材料。

日期

ImportKeyMaterial

Unix时间戳格式

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示仅在2024年6月20日之前,允许阿里云账号 119285303511**** 下的所有 RAM 用户导入密钥材料。

{
  "Effect": "Allow",
  "Principal": {
    "RAM": "acs:ram::119285303511****:*"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "NumericLessThanEquals": {
      "kms:ValidTo": "1718841600"
    }
  }
}

kms:KeyOrigin

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:KeyOrigin

根据由操作创建或在操作中使用的KMS的Origin属性,筛选对API操作的访问权限。

使用它可以限定对 CreateKey操作或为KMS 密钥资源授权的任何操作的授权。

字符串

所有密钥相关的OpenAPI。具体列表,请参见API概览

  • Aliyun_KMS

  • EXTERNAL

  • KmsInstance

  • RAM的自定义权限策略

  • 密钥策略

kms:KeySpec

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:KeySpec

根据由操作创建或在操作中使用的KMS的KeySpec属性筛选对API操作的访问权限。

字符串

所有密钥相关的OpenAPI。具体列表,请参见API概览

密钥规格,例如Aliyun_AES_256、RSA_2048等。

KMS支持的密钥规格,请参见密钥管理类型和密钥规格

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示允许阿里云账号119285303511****下的所有RAM用户和RAM角色执行创建密钥操作(kms:CreateKey),但仅限于创建RSA密钥。

{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Principal": {
    "RAM": "acs:ram::119285303511****:*"
  },
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:KeySpec": "RSA_*"
    }
  }
}

kms:KeyUsage

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:KeyUsage

根据创建或在操作中使用的KMS的KeyUsage 属性,筛选对API操作的访问权限。

字符串

所有密钥相关的OpenAPI。具体列表,请参见API概览

  • ENCRYPT_DECRYPT:加解密

  • SIGN_VERIFY:签名验签

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示允许执行创建密钥操作(kms:CreateKey),但仅限于创建用途为 ENCRYPT_DECRYPT 的密钥。

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

kms:ScheduleKeyDeletionPendingWindowInDays

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:ScheduleKeyDeletionPendingWindowInDays

根据请求中PendingWindowInDays参数的值,筛选对ScheduleKeyDeletion操作的访问权限。

数值

ScheduleKeyDeletion

密钥的预删除周期,取值为天数。

  • RAM的自定义权限策略

  • 密钥策略

例如,如下示例表示当预删除周期小于或等于21天时,拒绝所有用户和角色执行密钥计划删除操作(kms:ScheduleKeyDeletion)。

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

kms:SigningAlgorithm

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:SigningAlgorithm

根据请求中的签名算法,筛选对Sign和Verify操作的访问权限。

字符串

  • AsymmetricSign

  • AsymmetricVerify

签名算法,例如RSA_PSS_SHA_256、ECDSA_SHA_256等。

支持的签名算法列表,请参见密钥管理类型和密钥规格

  • RAM的自定义权限策略

  • 密钥策略

kms:WrappingAlgorithm

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:WrappingAlgorithm

根据请求中WrappingAlgorithm参数的值,筛选对GetParametersForImport操作的访问权限。

字符串

GetParametersForImport

包装算法。

KMS支持的包装算法,请参见导入对称密钥材料导入非对称密钥材料

  • RAM的自定义权限策略

  • 密钥策略

kms:WrappingKeySpec

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:WrappingKeySpec

根据请求中WrappingKeySpec参数的值,筛选对GetParametersForImport操作的访问权限。

字符串

GetParametersForImport

包装公钥的类型。

KMS支持的包装公钥类型,请参见导入对称密钥材料导入非对称密钥材料

  • RAM的自定义权限策略

  • 密钥策略

凭据相关的条件键

kms:tag

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:tag

根据凭据标签,筛选对API操作的访问权限。

字符串

  • DescribeSecret

  • GetSecretValue

  • PutSecretValue

  • UpdateSecret

  • UpdateSecretVersionStage

  • RestoreSecret

  • ListSecretVersionIds

  • RotateSecret

  • UpdateSecretRotationPolicy

  • DeleteSecret

您自定义的凭据标签。

  • RAM的自定义权限策略

  • 凭据策略

  • 密钥策略

kms:SecretName

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:SecretName

根据请求中的Secretname 值,筛选对API操作的访问权限。

字符串

所有凭据相关的OpenAPI。具体列表,请参见API概览

您自定义的凭据名称。

  • RAM的自定义权限策略

  • 凭据策略

kms:EncryptionKeyId

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:EncryptionKeyId

根据访问凭据请求中的加密密钥的ID,筛选对API操作的访问权限。

字符串

  • CreateSecret

  • GetSecretValue

  • PutSecretValue

密钥ID。

  • RAM的自定义权限策略

  • 凭据策略

kms:SecretVersionId

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:SecretVersionId

根据请求中凭据版本的唯一标识符,筛选对API操作的访问权限。

字符串

  • GetSecretValue

  • PutSecretValue

凭据的版本号。

  • RAM的自定义权限策略

  • 凭据策略

kms:SecretVersionStage

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:SecretVersionStage

根据请求中的凭据版本状态列表,筛选对API操作的访问权限。

字符串

  • GetSecretValue

  • UpdateSecretVersionStage

  • ACSCurrent

  • ACSPrevious

  • 您自定义的凭据版本状态

  • RAM的自定义权限策略

  • 凭据策略

kms:SecretType

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:SecretType

根据请求中的凭据类型,筛选对API操作的访问权限。

字符串

所有凭据相关的OpenAPI。具体列表,请参见API概览

  • Generic:通用凭据。

  • Rds:RDS凭据。

  • RAMCredentials:RAM凭据。

  • ECS:ECS凭据。

  • Redis:Redis凭据。

  • RAM的自定义权限策略

  • 凭据策略

kms:ForceDeleteWithoutRecovery

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:ForceDeleteWithoutRecovery

是否强制删除凭据,且不允许恢复。

布尔值

DeleteSecret

  • true

  • false

  • RAM的自定义权限策略

  • 凭据策略

kms:RecoveryWindowInDays

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:RecoveryWindowInDays

按照可恢复的方式删除凭据,且指定可恢复的窗口(天数)。

数值

DeleteSecret

天数。

  • RAM的自定义权限策略

  • 凭据策略

例如,如下示例表示当设置的恢复窗口期小于或等于10天时,拒绝所有用户和角色执行 kms:DeleteSecret 操作。

{
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "kms:DeleteSecret",
      "Principal": "*",
      "Resource": "*",
      "Condition": {
        "NumericLessThanEquals": {
          "kms:RecoveryWindowInDays": "10"
        }
      }
    }
  ]
}

其他

kms:TlsVersion

条件键

说明

条件类型

API操作

取值范围

策略类型

kms:TlsVersion

根据请求中的TLS版本,筛选对API操作的访问权限。

字符串

所有需要鉴权的OpenAPI。

说明

不涉及的鉴权的API:例如DescribeRegions

1.2

  • RAM的自定义权限策略

  • 密钥策略

  • 凭据策略

例如,如下示例表示当请求中TLS版本小于1.2时,拒绝对指定的密钥进行任何操作。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "kms:*",
            "Resource": "acs:kms:*:*:key/key-hzz653f1f8fybn5qa****",
            "Condition": {
                "NumericLessThan": {
                    "kms:TlsVersion": [
                        "1.2"
                    ]
                }
            }
        }
    ]
}