# 创建凭据 - CreateSecret
#### 功能介绍
创建新的凭据，并将凭据值存入凭据的初始版本
凭据管理服务将凭据值加密后，存储在凭据对象下的版本中。每个版本可与多个凭据版本状态相关联，凭据版本状态用于标识凭据版本处于的阶段，没有版本状态标记的版本视为已弃用，可用凭据管理服务自动删除
初始版本的状态被标记为SYSCURRENT
#### 接口约束
您可以指定一个对称密钥类型的用户主密钥作为保护凭据的加密密钥。当不指定kms_key_id参数时，凭据管理服务将默认使用名为csms/default的默认主密钥，用于加密您账号在本项目中创建的凭据。如果用户账号下不存在该名称的主密钥，则凭据管理服务会自动为您创建该名称的密钥
如果您指定主密钥，则需要同时具备相应主密钥的kms:dek:create权限，用于凭据值进行加密
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-dew/dew_02_0002.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-dew/dew_02_0308.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                | 访问级别  | 资源类型（\*为必须）   | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 别名 | 依赖的授权项                |
  |:---|:---|:---|:---|:---|:---|
  | csms:secret:create | Write | secretName \* | - csms:Type   - csms:KmsKeyId                                                                                                                                                                                          | -  | kms:cmk:createDataKey |
  | csms:secret:create | Write | -             | - g:EnterpriseProjectId   - g:RequestTag/\<tag-key\>   - g:TagKeys    | -  | kms:cmk:createDataKey |
     
  
 
#### URI
POST /v1/{project_id}/secrets
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目ID。可参考[获取项目ID](https://support.huaweicloud.com/api-dew/dew_02_0009.html)获取。 **约束限制：** 不涉及 **取值范围：** 以IAM服务接口返回值为准，字符长度32-32 **默认取值：** 不涉及 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token。 通过调用IAM服务查询用户Token接口获取（响应消息头中X-Subject-Token的值）。使用AK、SK等认证方式，此处非必选 **约束限制：** 不涉及 **取值范围：** IAM服务查询用户Token接口为准 **默认取值：** 不涉及 |
   
表3请求Body参数 
| 参数                    | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| name                  | 是    | String           | **参数解释：** 待创建凭据的名称 **约束限制：** 不涉及 **取值范围：** 需要满足正则表达式：\^\[a-zA-Z0-9_-\]{1,64}$ **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| kms_key_id            | 否    | String           | **参数解释：** 用于加密保护凭据值的KMS主密钥ID，如果您未指定此参数，凭据管理服务将默认使用名为csms/default的默认主密钥，用于加密您账号在本项目中创建的凭据值。如果用户账号下不存在该名称的主密钥，则凭据管理服务自动为您创建该名称的密钥 **约束限制：** 不涉及 **取值范围：** 需要满足正则表达式：\^\[0-9a-z\]{8}-\[0-9a-z\]{4}-\[0-9a-z\]{4}-\[0-9a-z\]{4}-\[0-9a-z\]{12}$ **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| description           | 否    | String           | **参数解释：** 凭据的描述信息 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| secret_binary         | 否    | String           | **参数解释：** 二进制类型凭据在base64编码后的明文，凭据管理服务将其加密后，存入凭据的初始版本中 **约束限制：** secret_binary和secret_string必须且只能设置一个，最大64K **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| secret_string         | 否    | String           | **参数解释：** 文本类型凭据的明文，凭据管理服务将其加密后，存入凭据的初始版本中 **约束限制：** secret_binary和secret_string必须且只能设置一个，最大64K **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| secret_type           | 否    | String           | **参数解释：** 凭据类型 **约束限制：** 不涉及 **取值范围：** - COMMON：通用凭据(默认)。用于应用系统中的各种敏感信息储存   - RDS：RDS凭据 。专门针对RDS的凭据，用于存储RDS的账号信息（已不支持，使用RDS-FG替代）   - RDS-FG：RDS凭据 。专门针对RDS的凭据，用于存储RDS的账号信息   - GaussDB-FG：TaurusDB凭据。专门针对TaurusDB的凭据，用于存储TaurusDB的账号信息    **默认取值：** COMMON |
| auto_rotation         | 否    | Boolean          | **参数解释：** 自动轮转，仅特定类型的凭据支持配置此参数 **约束限制：** 不涉及 **取值范围：** true 开启 ，false 关闭 (默认) **默认取值：** false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| rotation_period       | 否    | String           | **参数解释：** 轮转周期，当开启自动轮转时，必须填写该值 **约束限制：** Integer\[unit\] ，Integer表示时间长度 。unit表示时间单位，d（天）、h（小时）、m（分钟）、s（秒）。例如 1d 表示一天，24h也表示一天 **取值范围：** 4小时-8，760小时 （365天） **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| rotation_config       | 否    | String           | **参数解释：** 轮转配置 **约束限制：** - 范围不超过1024个字符   - 当secret_type为RDS-FG、GaussDB-FG时，必须填写本参数，参数格式为{"InstanceId":"","SecretSubType":""}    参数说明：InstanceId为实例ID，SecretSubType为轮转子类型，取值为：SingleUser，MultiUser SingleUser：指定轮转类型为单用户模式轮转，每次轮转将指定账号重置为新的口令 MultiUser：指定轮转类型为双用户模式轮转，SYSCURRENT和SYSPREVIOUS分别引用其中一个账号。凭据轮转时，SYSPREVIOUS引用的账号口令会被重置为新的随机口令，随后凭据交换SYSCURRENT和SYSPREVIOUS对账号的引用 **取值范围：** 不涉及 **默认取值：** 不涉及                                                      |
| event_subscriptions   | 否    | Array of strings | **参数解释：** 凭据订阅的事件列表。当事件包含的基础事件触发时，通知消息将发送到事件对应的通知主题 **约束限制：** 当前最大可订阅一个事件 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| enterprise_project_id | 否    | String           | **参数解释：** 该参数针对企业用户使用。如果您是企业用户，且已创建企业项目，则请从下拉列表中为密钥选择需要绑定的企业项目，默认项目为"default" **约束限制：** 未开通企业管理的用户页面则没有"企业项目"参数项，无需进行配置 **取值范围：** 不涉及 **默认取值：** 企业项目用户默认为0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| rotation_func_urn     | 否    | String           | **参数解释：** 凭据轮转函数，对应FunctionGraph函数的urn。当开启自动轮转时，必须填写 **约束限制：** 已创建好凭据轮转函数 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数     | 参数类型                                            | 描述                                                                                                                             |
|:---|:---|:---|
| secret | [Secret] object | **参数解释：** 凭据详细信息 **取值范围：** 不涉及 |
   
 表5Secret 
| 参数                    | 参数类型                                                        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| id                    | String                                                      | **参数解释：** 凭据的资源标识符 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| name                  | String                                                      | **参数解释：** 凭据名称 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| state                 | String                                                      | **参数解释：** 凭据状态 **取值范围：** - ENABLED：表示启用状态   - DISABLED：表示禁用状态   - PENDING_DELETE：表示待删除状态   - FROZEN：表示冻结状态                                                                                                                          |
| kms_key_id            | String                                                      | **参数解释：** 用于加密凭据值的KMS主密钥的ID值 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| description           | String                                                      | **参数解释：** 凭据的描述信息 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| create_time           | Long                                                        | **参数解释：** 凭据创建时间，时间戳，即从1970年1月1日至该时间的总毫秒数 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| update_time           | Long                                                        | **参数解释：** 凭据上次更新时间，时间戳，即从1970年1月1日至该时间的总毫秒数 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| scheduled_delete_time | Long                                                        | **参数解释：** 凭据计划删除时间，时间戳，即从1970年1月1日至该时间的总毫秒数 凭据不在删除计划中时，本项值为null **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| secret_type           | String                                                      | **参数解释：** 凭据类型 **取值范围：** - COMMON：通用凭据(默认)。用于应用系统中的各种敏感信息储存   - RDS：RDS凭据 。专门针对RDS的凭据，用于存储RDS的账号信息（已不支持，使用RDS-FG替代）   - RDS-FG：RDS凭据 。专门针对RDS的凭据，用于存储RDS的账号信息   - GaussDB-FG：TaurusDB凭据。专门针对TaurusDB的凭据，用于存储TaurusDB的账号信息           |
| auto_rotation         | Boolean                                                     | **参数解释：** 自动轮转 **取值范围：** true 开启， false 关闭(默认)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| rotation_period       | String                                                      | **参数解释：** 轮转周期 **取值范围：** 4小时-8，760小时 （365天）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| rotation_config       | String                                                      | **参数解释：** 轮转配置 **取值范围：** - 不超过1024个字符   - 当secret_type为RDS-FG、GaussDB-FG时，配置为{"InstanceId":"","SecretSubType":""}    说明：当secret_type为RDS-FG、GaussDB-FG时，必须填写该值 InstanceId为实例ID，SecretSubType为轮转子类型，取值为：SingleUser，MultiUser SingleUser：指定轮转类型为单用户模式轮转，每次轮转将指定账号重置为新的口令 MultiUser：指定轮转类型为双用户模式轮转，SYSCURRENT和SYSPREVIOUS分别引用其中一个账号。凭据轮转时，SYSPREVIOUS引用的账号口令会被重置为新的随机口令，随后凭据交换SYSCURRENT和SYSPREVIOUS对账号的引用 |
| rotation_time         | Long                                                        | **参数解释：** 轮转时间戳 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| next_rotation_time    | Long                                                        | **参数解释：** 下一次轮转时间戳 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| last_used_time        | Long                                                        | **参数解释：** 最近一次获取凭据值的时间 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| event_subscriptions   | Array of strings                                            | **参数解释：** 凭据订阅的事件列表，当前最大可订阅一个事件。当事件包含的基础事件触发时，通知消息将发送到事件对应的通知主题 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| enterprise_project_id | String                                                      | **参数解释：** 企业项目ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| rotation_func_urn     | String                                                      | **参数解释：** FunctionGraph函数的urn **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| domain_id             | String                                                      | **参数解释：** 凭据所属的租户的id **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| replica_type          | String                                                      | **参数解释：** 多 Region 凭据类型 **取值范围：** - STANDALONE：表示当前凭据没有 多Region 副本   - PRIMARY：表示当前凭据有多 Region 副本，当前凭据为主凭据   - REPLICA：表示当前凭据有多 Region 副本，当前凭据为副本凭据                                                                                                                                                                                                                                   |
| replicas              | Array of [Replica] objects | **参数解释：** 副本凭据信息 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
 表6Replica 
| 参数           | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| id           | String | **参数解释：** 凭据资源标识符 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| kms_key_id   | String | **参数解释：** 用于加密凭据值的KMS密钥的ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| project_id   | String | **参数解释：** 凭据所属的 project_id **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| region       | String | **参数解释：** 凭据所属的 region 名称 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| replica_type | String | **参数解释：** 多 Region 凭据类型 **取值范围：** - PRIMARY：当前凭据为主凭据   - REPLICA：当前凭据为副本凭据                                                                                                                                                                           |
| status       | String | **参数解释：** 副本凭据同步状态 **取值范围：** - IN_PROGRESS：副本凭据待同步   - IN_SYNC：副本与主凭据同步   - FAILED：副本凭据与主凭据同步失败    |
| created_at   | Long   | **参数解释：** 创建时间戳 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| updated_at   | Long   | **参数解释：** 更新时间戳 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
#### 请求示例
创建一个名字为demo的凭据，使用kms密钥ID为0d0466b0-e727-4d9c-b35d-f84bb474a37f对"this is a demo secret string"凭据值加密
```
{
  "name" : "demo",
  "kms_key_id" : "0d0466b0-e727-4d9c-b35d-f84bb474a37f",
  "secret_string" : "this is a demo secret string"
}
```
#### 响应示例
**状态码：200**
请求已成功
```
{
  "secret" : {
    "id" : "bb6a3d22-dc93-47ac-b5bd-88df7ad35f1e",
    "name" : "test",
    "state" : "ENABLED",
    "kms_key_id" : "b168fe00ff56492495a7d22974df2d0b",
    "description" : "description",
    "create_time" : 1581507580000,
    "update_time" : 1581507580000,
    "scheduled_delete_time" : 1581507580000,
    "secret_type" : "RDS-FG",
    "auto_rotation" : true,
    "rotation_config" : "{\"InstanceId\":\"63616bceef2c45409575d762a498318bin01\",\"SecretSubType\":\"MultiUser\"}",
    "rotation_period" : "1d",
    "rotation_time" : 1668567940000,
    "next_rotation_time" : 1668629140000,
    "event_subscriptions" : [ "pocEvent" ],
    "rotation_func_urn" : "urn:fss:{region}:46b6f338fc3445b8846c71dfb1fbxxxx:function:default:test2-0:latest"
  }
}
```
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求已成功 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-dew/ErrorCode.html)。
