更新时间:2024-07-11 GMT+08:00

创建密钥

功能介绍

创建用户主密钥,用户主密钥可以为对称密钥或非对称密钥。

  • 对称密钥为长度为256位AES密钥或者128位SM4密钥,可用于小量数据的加密或者用于加密数据密钥。

  • 非对称密钥可以为RSA密钥对或者ECC密钥对(包含SM2密钥对),可用于加解密数据、数字签名及验签。

接口约束

别名“/default”为服务默认主密钥的后缀名,由服务自动创建。因此用户创建的主密钥别名不能与服务默认主密钥的别名相同,即后缀名不能为“/default”。 对于开通企业项目的用户,服务默认主密钥属于且只能属于默认企业项目下,且不支持企业资源的迁入迁出。服务默认主密钥为用户提供基础的云上加密功能,满足合规要求。因此,在企业多项目下,其他非默认企业项目下的用户均可使用该密钥。若客户有企业管理资源诉求,请自行创建和使用密钥。

调用方法

请参见如何调用API

URI

POST /v1.0/{project_id}/kms/create-key

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表3 请求Body参数

参数

是否必选

参数类型

描述

key_alias

String

非默认主密钥别名,取值范围为1到255个字符,满足正则匹配“^[a-zA-Z0-9:/_-]{1,255}$”,且不与系统服务创建的默认主密钥别名重名。

key_spec

String

密钥生成算法,默认为“AES_256”,枚举如下:

  • AES_256

  • SM4

  • RSA_2048

  • RSA_3072

  • RSA_4096

  • EC_P256

  • EC_P384

  • SM2

key_usage

String

密钥用途,对称密钥默认为“ENCRYPT_DECRYPT”,非对称密钥默认为“SIGN_VERIFY”,枚举如下:

  • ENCRYPT_DECRYPT

  • SIGN_VERIFY

key_description

String

密钥描述,取值0到255字符。

origin

String

密钥来源,默认为“kms”,枚举如下:

  • kms:表示密钥材料由kms生成。

  • external:表示密钥材料由外部导入。

enterprise_project_id

String

企业多项目ID。

  • 用户未开通企业多项目时,不需要输入该字段。

  • 用户开通企业多项目时,创建资源可以输入该字段。若用户户不输入该字段,默认创建属于默认企业多项目ID(ID为“0”)的资源。 注意:若用户没有默认企业多项目ID(ID为“0”)下的创建权限,则接口报错。

sequence

String

请求消息序列号,36字节序列号。 例如:919c82d4-8046-4722-9094-35c3c6524cff

keystore_id

String

密钥库ID,默认使用KMS默认密钥库

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

key_info

KeKInfo object

密钥详细信息。

表5 KeKInfo

参数

参数类型

描述

key_id

String

密钥ID。

domain_id

String

用户域ID。

状态码: 400

表6 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表7 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

状态码: 401

表8 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表9 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

状态码: 403

表10 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表11 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

状态码: 404

表12 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表13 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

状态码: 500

表14 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表15 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

状态码: 502

表16 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表17 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

状态码: 504

表18 响应Body参数

参数

参数类型

描述

error

Object

错误信息返回体。

表19 ErrorDetail

参数

参数类型

描述

error_code

String

错误请求返回的错误码

error_msg

String

错误请求返回的错误信息

请求示例

创建一个别名为"test"的密钥。

{
  "key_alias" : "test"
}

响应示例

状态码: 200

请求已成功

{
  "key_info" : {
    "key_id" : "bb6a3d22-dc93-47ac-b5bd-88df7ad35f1e",
    "domain_id" : "b168fe00ff56492495a7d22974df2d0b"
  }
}

状态码

状态码

描述

200

请求已成功

400

请求参数有误

401

被请求的页面需要用户名和密码

403

认证失败

404

资源不存在,资源未找到

500

服务内部错误

502

请求未完成。服务器从上游服务器收到一个无效的响应

504

网关超时

错误码

请参见错误码