CreateKey - 创建一个主密钥

创建一个主密钥。

接口说明

  • RAM 用户或 RAM 角色调用该 OpenAPI 需要被授予的权限策略详情,请参见访问控制

  • 阿里云 KMS 支持常见的对称密钥规格和非对称密钥规格。具体内容,请参见密钥管理类型和密钥规格

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

当前API暂无授权信息透出。

请求参数

名称

类型

必填

描述

示例值

Description

string

密钥的描述。
长度为 0~8192 个字符。

key description example

KeyUsage

string

密钥的用途。取值:

  • ENCRYPT/DECRYPT:数据加密和解密。

  • SIGN/VERIFY:产生和验证数字签名。

默认值:如果密钥支持签名验签,默认值为 SIGN/VERIFY,否则默认值为 ENCRYPT/DECRYPT。

ENCRYPT/DECRYPT

Origin

string

密钥材料来源。取值:

  • Aliyun_KMS(默认值):密钥材料由阿里云 KMS 生成。

  • EXTERNAL:密钥材料由您自行导入。

说明
  • 请注意区分大小写。

Aliyun_KMS

ProtectionLevel

string

您无需输入本参数,KMS 会为您的密钥设置合适的保护级别。

密钥的保护级别,取值:

  • SOFTWARE

  • HSM

说明
  • 如果指定了 DKMSInstanceId:本参数输入后不生效。当实例为 KMS 软件密钥管理实例时,密钥保护级别为 SOFTWARE;当实例为 KMS 硬件密钥管理实例时,密钥保护级别为 HSM。

  • 如果未指定 DKMSInstanceId:建议您不输入,由 KMS 设置。当 KMS 在该地域有托管密码机时,本参数将设置 HSM,否则为 SOFTWARE。更多信息,请参见托管密码机概述

SOFTWARE

EnableAutomaticRotation

boolean

是否开启密钥自动轮转。取值:

  • true:开启

  • false(默认值):不开启

仅当密钥所属的密钥管理类型支持自动轮转时,该参数值有效。具体内容,请参见密钥轮转

true

RotationInterval

string

自动轮转的时间周期。格式为 integer[unit],其中 integer 表示时间长度,unit 表示时间单位。合法的 unit 单位为:d(天)、h(小时)、m(分钟)、s(秒)。7d 或者 604800s 均表示 7 天的周期。

  • 当密钥为默认密钥时,取值为 365 天。

  • 当密钥为软件密钥时,取值为 7~365 天。

  • 当密钥为硬件密钥时,不支持自动轮转。

说明

当 EnableAutomaticRotation 参数为 true 时,必须设置此参数。

365d

KeySpec

string

密钥规格,不同密钥管理类型的取值不同。关于密钥规格、遵循的标准、密钥算法的详细介绍,请参见密钥管理类型和密钥规格

说明

不输入参数值时,密钥规格默认为 Aliyun_AES_256。

Aliyun_AES_256

DKMSInstanceId

string

KMS 实例的实例 ID。

说明

当您需要为 KMS 实例创建密钥时,必须指定本参数。当您需要创建默认密钥(主密钥)时,不需要指定本参数。

kst-bjj62d8f5e0sgtx8h****

Tags

string

为密钥绑定标签。每个标签由一个键值对(Key:Value)组成,包含标签键(Key)、标签值(Value)。

最多输入 20 个标签。输入多个标签时,格式为[{"TagKey":"key1","TagValue":"value1"},{"TagKey":"key2","TagValue":"value2"},...]

每个标签键(Key)和每个标签值(Value)最多支持 128 个字符,可以包含英文大小写字母、数字、正斜线(/)、反斜线(\)、下划线(_)、短划线(-)、半角句号(.)、加号(+)、等于号(=)、半角冒号(:)、字符 at(@)。

说明

标签键不能以 aliyun 和 acs:开头。

[{"TagKey":"disk-encryption","TagValue":"true"}]

Policy

string

密钥策略的具体内容,JSON 格式。最大长度为 32768 个字节。 关于密钥策略的详细介绍,请参见密钥策略概述。不输入该参数时,使用默认凭据策略。

密钥策略内容包含:

  • Version:密钥策略的版本,目前版本仅支持设置为 1。

  • Statement:密钥策略的语句,每个密钥策略包含一个或多个语句。

密钥策略格式为:

{
  "Version": "1",
  "Statement": [
    {
      "Sid": "Enable RAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "RAM": ["acs:ram::112890462****:root"]
      },
      "Action": [
        "kms:*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "condition operator": {
          "condition key": "condition value"
        }
      }
    }
  ]
}

Statement 详细介绍:

  • Sid:可选,表示自定义的语句标识符。内容长度小于等于 128 字符,支持的字符为:大写英文字母(A-Z)、小写英文字母(a-z)、数字(0-9),特殊字符( _/+=.@-)。

  • Effect:必选,表示是允许还是拒绝该策略语句中的权限。取值为:Allow 或 Deny。

  • Principal:必选,表示权限策略的授权主体,支持设置为当前阿里云账号(即密钥所属的阿里云账号),当前阿里云账号下的 RAM 用户、RAM 角色,其他阿里云账号下的 RAM 用户、RAM 角色。

  • Action:必选,表示要允许或拒绝的 API 操作,内容必须以"kms:"开头。操作权限列表的范围,请参见密钥策略概述。如果您设置了列表外的操作,设置后也不会生效。

  • Resource:必选,取值只能是*,表示本 KMS 密钥。

  • Condition:可选,表示授权生效的限制条件。通过使用条件可以评估 API 请求的上下文,以确定策略语句是否适用。格式为"Condition": {"condition operator": {"condition key": "condition value"}}。详细介绍,请参见密钥策略概述

说明

授权给其他阿里云账号下的 RAM 用户、RAM 角色后,您仍需在访问控制 RAM 侧,使用该 RAM 用户、RAM 角色的阿里云账号为其授权使用该密钥,RAM 用户、RAM 角色才能使用该密钥。集体操作,请参见密钥管理服务自定义权限策略参考为 RAM 用户授权为 RAM 角色授权

{"Statement":[{"Action":["kms:*"],"Effect":"Allow","Principal":{"RAM":["acs:ram::119285303511****:*"]},"Resource":["*"],"Sid":"kms default key policy"},{"Action":["kms:List*","kms:Describe*","kms:Create*","kms:Enable*","kms:Disable*","kms:Get*","kms:Set*","kms:Update*","kms:Delete*","kms:Cancel*","kms:TagResource","kms:UntagResource","kms:ImportKeyMaterial","kms:ScheduleKeyDeletion"],"Effect":"Allow","Principal":{"RAM":["acs:ram::119285303511****:user/for_test_policy"]},"Resource":["*"]}],"Version":"1"}

KeyStorageMechanism

string

密钥存储位置,仅当 DKMSInstanceId 输入的是 KMS 硬件密钥管理实例时生效。取值:

  • HsmInternal(默认):密钥存储在密码机中,不支持轮转。

  • HsmEncryptedDatabase:密钥存储在数据库中。
    • 对称密钥:支持轮转。

    • 非对称密钥:不支持轮转。

HsmInternal

关于公共请求参数的详情,请参见公共参数

返回参数

名称

类型

描述

示例值

object

RequestId

string

本次调用请求的 ID,是由阿里云为该请求生成的唯一标识符,可用于排查和定位问题。

381D5D33-BB8F-395F-8EE4-AE3BB4B523C4

KeyMetadata

object

密钥的元数据。

KeyId

string

密钥的全局唯一标识符。

key-hzz62f1cb66fa42qo****

NextRotationDate

string

密钥下一次轮转的时间。

仅当 AutomaticRotation 参数值为 Enabled 或 Suspended 时,才返回该值。

2024-03-25T10:00:00Z

KeyState

string

密钥的状态。
更多信息,请参见用户主密钥的状态对 API 调用的影响

Enabled

RotationInterval

string

密钥自动轮转的周期。单位为秒,格式为整数值后加上字符 s。例如:7 天的轮转周期为 604800s。

仅当 AutomaticRotation 参数值为 Enabled 或 Suspended 时,才返回该值。

31536000s

Arn

string

密钥的 ARN。

acs:kms:cn-qingdao:154035569884****:key/key-hzz62f1cb66fa42qo****

Creator

string

密钥的创建者。

154035569884****

LastRotationDate

string

最近一次轮转的时间(UTC)。
如果是新创建密钥,则为初始密钥版本生成时间。

2023-03-25T10:00:00Z

DeleteDate

string

密钥的预计删除时间。 更多信息,请参见 ScheduleKeyDeletion

仅当 KeyState 值为 PendingDeletion 时,才返回该参数。

2025-03-25T10:00:00Z

PrimaryKeyVersion

string

密钥的当前主版本标识符。

7ce1d081-06cb-42e6-aab6-5c5de030****

Description

string

密钥的描述。

key description example

KeySpec

string

密钥的规格。

Aliyun_AES_256

Origin

string

密钥材料来源。

Aliyun_KMS

MaterialExpireTime

string

密钥材料的过期时间(UTC)。
当该值为空时,表示密钥材料不会过期。

2025-03-25T10:00:00Z

AutomaticRotation

string

是否开启了密钥自动轮转,取值:

  • Enabled:自动轮转处于开启状态。

  • Disabled:自动轮转处于未开启状态。

  • Suspended:自动轮转被暂停执行。

Enabled

ProtectionLevel

string

密钥的保护级别。

SOFTWARE

KeyUsage

string

密钥的用途。

ENCRYPT/DECRYPT

CreationDate

string

密钥创建的日期和时间(UTC)。

2024-03-25T10:00:00Z

DKMSInstanceId

string

KMS 实例的实例 ID。

kst-bjj62d8f5e0sgtx8h****

示例

正常返回示例

JSON格式

{
  "RequestId": "381D5D33-BB8F-395F-8EE4-AE3BB4B523C4",
  "KeyMetadata": {
    "KeyId": "key-hzz62f1cb66fa42qo****",
    "NextRotationDate": "2024-03-25T10:00:00Z",
    "KeyState": "Enabled",
    "RotationInterval": "31536000s",
    "Arn": "acs:kms:cn-qingdao:154035569884****:key/key-hzz62f1cb66fa42qo****",
    "Creator": "154035569884****",
    "LastRotationDate": "2023-03-25T10:00:00Z",
    "DeleteDate": "2025-03-25T10:00:00Z",
    "PrimaryKeyVersion": "7ce1d081-06cb-42e6-aab6-5c5de030****",
    "Description": "key description example",
    "KeySpec": "Aliyun_AES_256",
    "Origin": "Aliyun_KMS",
    "MaterialExpireTime": "2025-03-25T10:00:00Z",
    "AutomaticRotation": "Enabled",
    "ProtectionLevel": "SOFTWARE",
    "KeyUsage": "ENCRYPT/DECRYPT",
    "CreationDate": "2024-03-25T10:00:00Z",
    "DKMSInstanceId": "kst-bjj62d8f5e0sgtx8h****"
  }
}

错误码

HTTP status code

错误码

错误信息

描述

400 Rejected.LimitExceeded The request was rejected because user create resource limit was exceeded 创建的资源达到上限,请求被拒绝。
400 InvalidParameter The specified parameter is not valid. 参数非法。
400 UnsupportedOperation This action is not supported. 不支持的操作
400 Forbidden.NoPermission This operation is forbidden by permission system. 该操作无权限
400 Rejected.ShareQuotaExceedLimit Instance Share Quota Exceed Limit. 实例份额配额超过限制。
500 InternalFailure Internal Failure 内部错误
403 Forbidden.DKMSInstanceNotFound The specified DKMS Instance is not found. 您指定的专属kms实例未找到。
503 SerivceUnvailableTemporary Service Unvailable Temporary 服务临时不可用。

访问错误中心查看更多错误码。

变更历史

更多信息,参考变更详情