
# 凭据管理概述
"凭据"用于验证身份和授权访问的证明信息。在信息安全和身份认证领域，凭据是确保只有授权用户才能访问系统、资源或服务的关键机制。凭据的类型包括：用户名和密码、数字证书、密钥对（公钥和私钥）、令牌、生物识别信息、一次性密码、智能卡等。
#### 为什么使用凭据管理
数据库账号口令、服务器账号口令、SSH Key、访问密钥等凭据的泄露，是当今数据安全面临的主要威胁之一。为了降低数据泄露的安全风险，执行有效的凭据保护和周期性轮转非常关键。使用DEW的凭据管理功能可以为您带来以下安全优势：
- DEW对凭据值使用高安全强度的加密算法加密存储，防止凭据硬编码带来的凭据泄露以及高价值资产泄露，提升数据安全性。
- 提供安全便捷的客户端接入方式，应用程序以无代码或者低代码的方式，动态使用凭据。
- 具备应急处置能力，当您通过立即轮转的方式更新凭据时，应用程序和业务不受影响。
- 支持高频次轮转的全动态凭据，缩小凭据的有效时间窗口，降低凭据被破解的风险。
- 支持通过API、Terraform等运维编排工具，满足中心化、规模化的安全管理需求。
 
#### 操作视频
本视频为您介绍凭据使用指导。
<video controls="controls" preload="none" id="object17217143318437" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/DEW/1758770703061540176.mp4" title="凭据使用指导" poster="https://support.huaweicloud.com/usermanual-dew/zh-cn_image_0000002485539917.jpg" height="300.0000" width="600.0000"></video>
#### 支持的凭据类型
DEW支持两种凭据类型：通用凭据、轮转凭据，两者差异如下。
 表1支持的凭据类型 
| 凭据类型 | 说明                                                                                                            | 凭据类型子类                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 使用场景                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 是否支持自动轮转                                                                                                               |
|:---|:---|:---|:---|:---|
| 通用凭据 | 通用凭据支持在各场景下进行自定义凭据的全生命周期管理，用户可以通过凭据管理服务实现对数据库账号口令、服务器口令、SSH Key、访问密钥等各类型凭据的统一管理、检索与安全存储，且支持多个版本管理，方便用户实现凭据轮转。 | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 各场景下自定义凭据的全生命周期管理                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | **否**，需要用户自行触发轮转                                                                                                       |
| 轮转凭据 | 数据库凭据泄露是导致数据泄露的主要途径。凭据管理服务支持托管RDS、TaurusDB凭据，能够全自动的定期轮转与手动立即轮转，满足各类数据库凭据管理场景，降低业务数据面临的安全风险。                   | - RDS凭据：MySQL、PostgreSQL、SQLServer、MariaDB、TaurusDB。  - TaurusDB凭据：TaurusDB实例，原GaussDB(for MySQL)实例。  - GaussDB凭据：GaussDB实例。  - APIG凭据：APIG实例。  - DCS REDIS凭据：分布式缓存redis实例。  - DMS Kafka凭据：分布式消息Kafka实例。  - DMS RabbitMQ凭据：分布式消息RabbitMQ实例。  - DMS RocketMQ凭据：分布式消息RocketMQ实例。   | 不同凭据的使用场景如下： - RDS凭据：自动托管华为云RDS数据库凭据  - TaurusDB凭据：自动托管华为云TaurusDB数据库凭据  - GaussDB凭据：自动托管华为云GaussDB数据库凭据  - APIG凭据：自动托管APIG凭据  - DCS REDIS凭据：自动托管DCS REDIS凭据  - DMS Kafka凭据：自动托管Kafka凭据。  - DMS RabbitMQ凭据：自动托管RabbitMQ凭据。  - DMS RocketMQ凭据：自动托管RocketMQ凭据。   | **是**，支持单双用户两种经典轮转模型 说明： APIG、MRS和DCS REDIS凭据不支持单双用户两种经典轮转模型。 |
   
#### 凭据的组成
凭据由元数据、一或多个凭据版本组成。您可以在凭据管理页面查看凭据详情。
- 元数据 包含凭据名称、凭据ID、创建时间、凭据类型、加密密钥等信息。
  ![](https://support.huaweicloud.com/usermanual-dew/zh-cn_image_0000002536078708.png "点击放大")
  
- 凭据版本 一个凭据可以有多个凭据版本。每个凭据版本包含版本号、版本状态、凭据值。
  ![](https://support.huaweicloud.com/usermanual-dew/zh-cn_image_0000002535923572.png "点击放大")
  - 内置版本状态：
    - SYSCURRENT：凭据的当前版本，即最新存入的凭据值的状态。
    
    - SYSPREVIOUS：凭据的上一个版本。
    
    - SYSPending：待处理版本，轮转过程中会产生该版本，轮转完成后不会出现该状态。
    
    
    ![](https://support.huaweicloud.com/usermanual-dew/public_sys-resources/note_3.0-zh-cn.png)
    - 通过接口获取凭据值时读取SYSCURRENT对应的凭据值。
    
    - 内置版本状态类似指针。例如，第一次存入一个凭据版本，版本号设置为v1，存入后内置版本状态为SYSCURRENT，此时继续存入一个凭据版本，版本号设置为v2，则v2对应的内置版本状态为SYSCURRENT，v1对应的版本状态会自动改为SYSPREVIOUS。
      
  
  
  
  - 自定义版本状态：每个凭据版本可以自定义多个版本状态。
   
- 凭据值：您存入的凭据信息，可以是字符串或二进制值。
 
#### 凭据轮转
凭据轮转即基于凭据支持多个版本的特征，通过存入新的凭据版本来更新凭据，以提升凭据的安全性。新创建的凭据版本被标记为"SYSCURRENT"状态，业务应用会动态读取"SYSCURRENT"对应的凭据值。
#### 轮转过程
![](https://support.huaweicloud.com/usermanual-dew/zh-cn_image_0000002536069812.png "点击放大")
#### 轮转方式
- **周期性自动轮转** ：设置轮转周期后，您无需关注轮转的过程以及时间，到期后系统自动完成轮转。[轮转凭据]支持您在CSMS中配置轮转周期，通用凭据不支持在CSMS配置轮转周期，但您可以通过函数计算编码的方式设置轮转周期。
- **立即轮转** ：当您的凭据泄露时，可以通过立即轮转进行应急处理。[轮转凭据]支持立即轮转，通用凭据仅支持通过手动存入凭据值进行立即轮转。
 
 #### 轮转策略
[创建轮转凭据](https://support.huaweicloud.com/usermanual-dew/dew_01_9993.html#dew_01_9993__section68768527382)时，根据"设置凭据值"的选择来决定采用哪种轮转策略。
- "设置凭据值"选择"单账号托管"时，采用"单用户轮转策略"。
- "双账号托管"时，采用"双用户轮转策略"。
表2轮转策略 
| 轮转策略    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| 单用户轮转策略 | 单用户轮转策略适用于单一用户场景，多用于低频次轮转、可靠性要求不高的账号，这是最简单的轮换策略，适用于大多数用例。但是在密码重置切换的瞬间，凭据的当前版本可能暂时无法使用。 您可以使用单用户轮换来实现： - 在创建时选择或者新建一个数据库账户作为凭据值储存。  - 访问数据库。凭据轮换时不会删除数据库连接，轮换后的新连接使用新凭据。                                                                   |
| 双用户轮转策略 | 双用户轮转多用于轮转频次较高、轮转可靠性要求高的账号，托管两个相同权限的账号，每次轮转SYSPREVIOUS的凭据版本，保证密码重置切换的瞬间，程序访问不被中断。在轮转时先将新版本的凭据改为SYSPENDING状态，通过调用RDS接口重置密码，重置完成后新版本凭据的SYSPENDING状态会改为SYSCURRENT，之前SYSCURRENT状态的凭据变为SYSPREVIOUS，即视为完成整个轮转流程。 - 在创建时选择或者新建两个数据库账户作为凭据值储存。  - 两个凭据值交替轮转，用户每次都是去获取的SYSCURRENT的凭据值。   |
   
#### 轮转凭据使用流程
图1产品架构   
![](https://support.huaweicloud.com/usermanual-dew/zh-cn_image_0000002294322753.png "点击放大")
#### 步骤一：轮转凭据创建委托
首次开启轮转时，当用户确认授权后，CSMS会在当前区域当前项目下，帮助用户自动创建委托授权。因此，用户需要确认账号拥有IAM相关权限：iam:permissions:grantRoleToAgencyOnProject、iam:agencies:listAgencies、iam:roles:listRoles、iam:agencies:createAgency、iam:permissions:checkRoleForAgencyOnProject、iam:roles:createRole。
根据轮转凭据类型不同，创建的委托不同：
- **RDS凭据**
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphAgencyForRotateRDSByCSMSV3** 委托 ，云服务是**FunctionGraph** ，权限名称是**FunctionGraphAgencyForRotateRDSByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secret:getVersion、csms:secret:listVersion、csms:secret:createVersion、csms:secret:getStage、csms:secret:get、csms:secret:updateStage。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:cmk:createDataKey、kms:cmk:decryptDataKey。
    
    - **云数据库（RDS）**的相关权限：rds:password:update。
     
   
- **TaurusDB凭据**
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphAgencyForRotateGaussDBByCSMSV3** 委托 ，云服务是**FunctionGraph** ，权限名称是**FunctionGraphAgencyForRotateGaussDBByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:dek:create、kms:dek:decrypt。
    
    - **云数据库** **TaurusDB**的相关权限：gaussdb:user:modify。
     
   
- **APIG凭据**
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphAgencyForRotateGaussDBByCSMSV3** 委托 ，云服务是**FunctionGraph** ，权限名称是**FunctionGraphAgencyForRotateGaussDBByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:dek:create、kms:dek:decrypt。
    
    - **API网关（APIG)**的相关权限：apig:apps:update, apig:instances:get, apig:apps:get, apig:appCodes:create, apig:appCodes:get, apig:appCodes:delete。
     
   
- **GaussDB凭据**
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphAgencyForRotateGaussDBByCSMSV3** 委托 ，云服务是**FunctionGraph** ，权限名称是**FunctionGraphAgencyForRotateGaussDBByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:dek:create、kms:dek:decrypt。
    
    - **云数据库（GaussDB）**的相关权限：gaussdb:instance:modify。
     
   
- **DCS REDIS凭据**
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphAgencyForRotateDCSRedisByCSMSV3** 委托 ，云服务是**FunctionGraph** ，权限名称是**FunctionGraphAgencyForRotateDCSRedisByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）** 的相关权限：kms:dek:create、kms:dek:decrypt。
      **分布式缓存服务（DCS REDIS）**的相关权限：dcs:aclaccount:modify、dcs:aclaccount:list。
      
     
   
- **DMS Kafka凭据** ：
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphTrustAgencyForRotateDMSKafkaByCSMSV3** 委托，云服务是**FunctionGraph** ，权限名称是**FunctionGraphTrustAgencyForRotateDMSKafkaByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:dek:create、kms:dek:decrypt。
    
    - **分布式消息服务（DMS）**的相关权限：dms:instance:modify。
     
   
- **DMS RabbitMQ凭据** ：
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphTrustAgencyForRotateDMSRabbitMQByCSMSV3** 委托，云服务是**FunctionGraph** ，权限名称是**FunctionGraphTrustAgencyForRotateDMSRabbitMQByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:dek:create、kms:dek:decrypt。
    
    - **分布式消息服务（DMS）**的相关权限：dms:instance:modify。
     
   
- **DMS RocketMQ凭据** ：
  - 创建一个名为**CSMSAccessFunctionGraph** 的委托 ，账号是**op_svc_kms** ，权限名称是**CSMSAccessFunctionGraph** ，使用项目级服务策略，包含**函数工作流服务（FunctionGraph）**的同步执行函数的权限（functiongraph:function:invoke）。
  
  - 创建一个名为**FunctionGraphTrustAgencyForRotateDMSRocketMQByCSMSV3** 委托，云服务是**FunctionGraph** ，权限名称是**FunctionGraphTrustAgencyForRotateDMSRocketMQByCSMSV3** ，使用项目级服务策略，包含：
    - **凭据管理服务（CSMS）**的相关权限：csms:secretVersion:get、csms:secretVersion:list、csms:secretVersion:create、csms:secretStage:get、csms:secret:get、csms:secretStage:update。
    
    - **虚拟私有云云服务（VPC）**的相关权限：vpc:ports:create、vpc:vpcs:get、vpc:ports:get、vpc:ports:delete、vpc:subnets:get。
    
    - **密钥管理服务（KMS）**的相关权限：kms:dek:create、kms:dek:decrypt。
    
    - **分布式消息服务（DMS）**的相关权限：dms:instance:modify。
     
   
 
#### 步骤二：创建一个轮转凭据
- 设置凭据名称、标签等。
- 配置自动轮转策略。
详细操作请参见[创建轮转凭据](https://support.huaweicloud.com/usermanual-dew/dew_01_9993.html#dew_01_9993__section68768527382)。
#### 步骤三：获取凭据值并开启周期性自动轮转凭据
1. 应用系统在使用过程中需要访问数据库时，可以向CSMS服务请求访问凭据，获取凭据值，调用API接口详情请参见[查询凭据版本和凭据值](https://support.huaweicloud.com/api-dew/ShowSecretVersion.html)。
2. 应用系统通过访问返回的凭据值解析明文数据，获取账号和密码后，可以访问该用户对应的目标数据库。
3. [开启周期性自动轮转凭据](https://support.huaweicloud.com/usermanual-dew/dew_01_2005.html#section2)。
   开启自动轮转后，数据库实例所托管的密码将定时轮转更新，请确认使用该数据库实例的应用端已完成代码适配，可在数据库连接建立时，动态获取最新凭据。
   ![](https://support.huaweicloud.com/usermanual-dew/public_sys-resources/caution_3.0-zh-cn.png)
   不要轻易缓存凭据中的任何信息，避免账号密码轮转后失效，导致数据库连接失败。
   
 
#### 相关文档
- [创建凭据](https://support.huaweicloud.com/usermanual-dew/dew_01_9993.html)
- [管理凭据版本](https://support.huaweicloud.com/usermanual-dew/dew_01_8882.html)
- [轮转凭据](https://support.huaweicloud.com/usermanual-dew/dew_01_2005.html)
- [为凭据添加标签](https://support.huaweicloud.com/usermanual-dew/dew_01_8886.html)
- [为凭据关联事件](https://support.huaweicloud.com/usermanual-dew/dew_01_2006.html)
 
