更新时间:2026-04-07 GMT+08:00
分享

凭据管理概述

“凭据”用于验证身份和授权访问的证明信息。在信息安全和身份认证领域,凭据是确保只有授权用户才能访问系统、资源或服务的关键机制。凭据的类型包括:用户名和密码、数字证书、密钥对(公钥和私钥)、令牌、生物识别信息、一次性密码、智能卡等。

为什么使用凭据管理

数据库账号口令、服务器账号口令、SSH Key、访问密钥等凭据的泄露,是当今数据安全面临的主要威胁之一。为了降低数据泄露的安全风险,执行有效的凭据保护和周期性轮转非常关键。使用DEW的凭据管理功能可以为您带来以下安全优势:

  • DEW对凭据值使用高安全强度的加密算法加密存储,防止凭据硬编码带来的凭据泄露以及高价值资产泄露,提升数据安全性。
  • 提供安全便捷的客户端接入方式,应用程序以无代码或者低代码的方式,动态使用凭据。
  • 具备应急处置能力,当您通过立即轮转的方式更新凭据时,应用程序和业务不受影响。
  • 支持高频次轮转的全动态凭据,缩小凭据的有效时间窗口,降低凭据被破解的风险。
  • 支持通过API、Terraform等运维编排工具,满足中心化、规模化的安全管理需求。

操作视频

本视频为您介绍凭据使用指导。

支持的凭据类型

DEW支持两种凭据类型:通用凭据、轮转凭据,两者差异如下。

表1 支持的凭据类型。

凭据类型

说明

凭据类型子类

使用场景

是否支持自动轮转

通用凭据

通用凭据支持在各场景下进行自定义凭据的全生命周期管理,用户可以通过凭据管理服务实现对数据库账号口令、服务器口令、SSH Key、访问密钥等各类型凭据的统一管理、检索与安全存储,且支持多个版本管理,方便用户实现凭据轮转。

-

各场景下自定义凭据的全生命周期管理

,需要用户自行触发轮转

轮转凭据

数据库凭据泄露是导致数据泄露的主要途径。凭据管理服务支持托管RDS、TaurusDB凭据,能够全自动的定期轮转与手动立即轮转,满足各类数据库凭据管理场景,降低业务数据面临的安全风险。

  • RDS凭据:MySQL、PostgreSQL、SQLServer、MariaDB、TaurusDB。
  • TaurusDB凭据:TaurusDB实例,原GaussDB(for MySQL)实例。
  • GaussDB凭据:GaussDB实例。
  • APIG凭据:APIG实例。

不同凭据的使用场景如下:

  • RDS凭据:自动托管华为云RDS数据库凭据
  • TaurusDB凭据:自动托管华为云TaurusDB数据库凭据
  • GaussDB凭据:自动托管华为云GaussDB数据库凭据
  • APIG凭据:自动托管APIG凭据

,支持单双用户两种经典轮转模型

凭据的组成

凭据由元数据、一或多个凭据版本组成。您可以在凭据管理页面查看凭据详情。

  • 元数据

    包含凭据名称、凭据ID、创建时间、凭据类型、加密密钥等信息。

  • 凭据版本

    一个凭据可以有多个凭据版本。每个凭据版本包含版本号、版本状态、凭据值。

    • 内置版本状态:
      • SYSCURRENT:凭据的当前版本,即最新存入的凭据值的状态。
      • SYSPREVIOUS:凭据的上一个版本。
      • SYSPending:待处理版本,轮转过程中会产生该版本,轮转完成后不会出现该状态。
      • 通过接口获取凭据值时读取SYSCURRENT对应的凭据值。
      • 内置版本状态类似指针。例如,第一次存入一个凭据版本,版本号设置为v1,存入后内置版本状态为SYSCURRENT,此时继续存入一个凭据版本,版本号设置为v2,则v2对应的内置版本状态为SYSCURRENT,v1对应的版本状态会自动改为SYSPREVIOUS。
    • 自定义版本状态:每个凭据版本可以自定义多个版本状态。
  • 凭据值:您存入的凭据信息,可以是字符串或二进制值。

凭据轮转

凭据轮转即基于凭据支持多个版本的特征,通过存入新的凭据版本来更新凭据,以提升凭据的安全性。新创建的凭据版本被标记为“SYSCURRENT”状态,业务应用会动态读取“SYSCURRENT”对应的凭据值。

轮转过程

轮转方式

  • 周期性自动轮转:设置轮转周期后,您无需关注轮转的过程以及时间,到期后系统自动完成轮转。轮转凭据支持您在CSMS中配置轮转周期,通用凭据不支持在CSMS配置轮转周期,但您可以通过函数计算编码的方式设置轮转周期。
  • 立即轮转:当您的凭据泄露时,可以通过立即轮转进行应急处理。轮转凭据支持立即轮转,通用凭据仅支持通过手动存入凭据值进行立即轮转。

轮转策略

创建轮转凭据时,根据“设置凭据值”的选择来决定采用哪种轮转策略。

  • “设置凭据值”选择“单账号托管”时,采用“单用户轮转策略”
  • “双账号托管”时,采用“双用户轮转策略”
表2 轮转策略

轮转策略

说明

单用户轮转策略

单用户轮转策略适用于单一用户场景,多用于低频次轮转、可靠性要求不高的账号,这是最简单的轮换策略,适用于大多数用例。但是在密码重置切换的瞬间,凭据的当前版本可能暂时无法使用。

您可以使用单用户轮换来实现:

  • 在创建时选择或者新建一个数据库账户作为凭据值储存。
  • 访问数据库。凭据轮换时不会删除数据库连接,轮换后的新连接使用新凭据。

双用户轮转策略

双用户轮转多用于轮转频次较高、轮转可靠性要求高的账号,托管两个相同权限的账号,每次轮转SYSPREVIOUS的凭据版本,保证密码重置切换的瞬间,程序访问不被中断。在轮转时先将新版本的凭据改为SYSPENDING状态,通过调用RDS接口重置密码,重置完成后新版本凭据的SYSPENDING状态会改为SYSCURRENT,之前SYSCURRENT状态的凭据变为SYSPREVIOUS,即视为完成整个轮转流程。

  • 在创建时选择或者新建两个数据库账户作为凭据值储存。
  • 两个凭据值交替轮转,用户每次都是去获取的SYSCURRENT的凭据值。

轮转凭据使用流程

图1 产品架构

步骤一:轮转凭据创建委托

首次开启轮转时,当用户确认授权后,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。

步骤二:创建一个轮转凭据

  • 设置凭据名称、标签等。
  • 配置自动轮转策略。

详细操作请参见创建轮转凭据

步骤三:获取凭据值并开启周期性自动轮转凭据

  1. 应用系统在使用过程中需要访问数据库时,可以向CSMS服务请求访问凭据,获取凭据值,调用API接口详情请参见查询凭据版本和凭据值
  2. 应用系统通过访问返回的凭据值解析明文数据,获取账号和密码后,可以访问该用户对应的目标数据库。
  3. 开启周期性自动轮转凭据
    开启自动轮转后,数据库实例所托管的密码将定时轮转更新,请确认使用该数据库实例的应用端已完成代码适配,可在数据库连接建立时,动态获取最新凭据。

    不要轻易缓存凭据中的任何信息,避免账号密码轮转后失效,导致数据库连接失败。

相关文档