管理及使用 RDS 凭据

更新时间:
复制为 MD 格式

业务应用通常需将数据库账号口令配置在代码或配置文件中,存在泄露风险。通过 KMS 凭据托管 RDS 账号口令,应用可通过 SDK 动态获取凭据值,并支持自动轮转,有效降低凭据泄露风险。

功能介绍

使用 RDS 凭据,应用程序无需在代码或配置文件中硬编码静态数据库账号口令。管理员在 KMS 创建 RDS 凭据后,应用程序调用 GetSecretValue 接口获取数据库账号和口令信息,用于访问 RDS 数据库。常见使用场景如下:

  • 云上应用数据库访问:应用部署在 ECS、ACK 等阿里云产品上,需集中管理数据库访问凭证,避免多实例部署时分散管理口令。

  • 定期安全合规要求:企业安全规范强制要求定期更换数据库口令,通过 KMS 凭据自动轮转可满足合规审计要求。

  • 多环境凭据管理:生产、测试、开发等多环境需要隔离数据库访问凭证,通过凭据标签功能实现按维度分组管理。

重要

请勿在云数据库 RDS修改或删除账号口令,以避免业务失败。

image

使用说明

  • 支持的数据库类型:RDS MySQL、RDS MariaDB、RDS SQL Server(2017 集群版除外)和 RDS PostgreSQL。

  • KMS 密钥准备:需在 KMS 实例中创建用于加密的对称密钥,且密钥与凭据属于同一实例。具体操作,请参见创建密钥

  • RAM 权限配置:若使用 RAM 用户或角色,主账号需授予其系统策略 AliyunKMSSecretAdminAccess。具体操作,请参见RAM用户授权管理RAM角色的权限

  • 使用限制:请勿将同一 RDS 数据库账号的口令托管到多个 RDS 凭据中,凭据轮转会导致未同步更新的凭据因口令失效而无法登录。

创建 RDS 凭据

创建凭据时可以设置凭据全自动的定期轮转,从而降低凭据泄露的安全风险。

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 单击数据库凭据页签,选择实例ID后,单击创建凭据 > 创建单个凭据,完成各项配置后单击确定

    说明
    • RDS 凭据不支持批量创建。

    • 建议设置凭据全自动的定期轮转,从而降低凭据泄露安全风险。

    配置项

    说明

    数据库类型

    选择RDS凭据

    凭据名称

    自定义凭据名称,需确保名称在当前地域内唯一。

    RDS实例

    选择阿里云账号下已有的 RDS 实例。

    账号托管

    • 双账号托管(推荐):适用于程序化访问数据库场景。托管两个相同权限的账号,保证口令重置切换的瞬间,程序访问数据库不被中断。

      • 单击新建账号,配置账号名、选择数据库并指定权限。

        说明
        • 一键创建和授权不会立即配置新账号,需审核确认凭据信息后才会创建。

        • RDS PostgreSQL 配置后,在创建阶段无法获取数据库名称,需手动设置 DBName。

      • 单击导入已有账号,选择用户名、配置口令。

        说明

        建议将口令配置为创建 RDS 实例用户账号时对应的密码。如果导入的账号和口令不匹配,可在凭据首次轮转后获取正确的账号和口令。

    • 单账号托管:适用于高权限账号或人工运维账号托管场景。口令重置切换的瞬间,凭据当前版本可能暂时无法使用。

      • 单击新建账号,配置账号名、选择账号类型。

        支持普通账号高权限账号两种账号类型。选择普通账号时,还需选择数据库并指定权限。

      • 单击导入已有账号页签,选择用户名、配置口令。

    加密主密钥

    选择用于加密凭据值的对称密钥。密钥和凭据必须属于同一个 KMS 实例。

    重要
    • 密钥和凭据需要属于同一个 KMS 实例,且密钥必须为对称密钥。关于 KMS 支持哪些对称密钥,请参见密钥管理类型和密钥规格

    • 如果是 RAM 用户、RAM 角色,需要具备使用加密主密钥执行 GenerateDataKey 操作的权限。

    标签

    为凭据添加标签,便于分类管理。每个标签由键值对(Key:Value)组成。

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

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

    • 每个凭据最多可以设置 20 个标签键值对。

    自动轮转

    选择是否启用自动轮转功能。启用后,KMS 将按照设定的周期自动更新凭据值,降低凭据泄露风险。

    轮转周期

    仅在开启开启自动轮转时设置。支持设置为 6 小时~365 天。

    表示轮转周期,设置后 KMS 将定期更新凭据值。

    描述信息

    填写凭据的补充描述信息,便于后续识别和管理。

    高级设置 > 策略配置

    设置凭据的访问权限策略,可控制哪些 RAM 用户或角色可以读取或修改此凭据。

    可先选择默认策略,创建后根据业务需要修改。

  3. 创建完成后,在数据库凭据列表中查看新建的凭据,状态显示为正常即表示创建成功。

    说明

    系统会自动创建服务关联角色 AliyunServiceRoleForKMSSecretsManagerForRDS,并为其授权权限策略 AliyunServiceRolePolicyForKMSSecretsManagerForRDS。KMS 使用该角色管理 RDS 凭据,完成 RDS 账号口令的轮转等任务。

管理 RDS 凭据

轮转 RDS 凭据

RDS 凭据轮转机制

KMS(密钥管理服务)支持对关联的 RDS(关系型数据库服务)实例凭据进行自动轮转。在轮转过程中,KMS 会重置对应 RDS 账号的口令,但数据库账号名称保持不变。

  • 轮转模式:KMS 托管 RDS 凭据支持单账号托管和双账号托管两种模式。

    对比项

    单账号托管

    双账号托管

    适用场景

    简单场景,对短暂中断不敏感的业务。

    高可用场景,对业务连续性要求较高的核心业务。

    轮转原理

    轮转时为账号生成新口令。

    维护两个交替使用的账号(User A 和 User B)。

    可用性

    存在短暂不可用窗口:在口令切换瞬间,旧凭据失效而新凭据尚未完全生效,可能导致连接暂时失败。建议业务配置重试策略。

    全程高可用:轮转过程中,始终有一个账号的凭据处于有效状态,业务无感知。

  • 双账号轮转原理图:创建凭据时已有第一个用户的 RDS 账号口令。第一次轮转时,KMS 调用 RDS API 创建第二个用户的账号口令。第二次轮转时,修改第一个用户的口令。此后每次轮转,KMS 交替修改两个用户的口令。

    image

注意事项

  • 应用接入确认:轮转前,请确保所有业务应用均已配置为从 KMS 动态获取凭据。若应用硬编码了旧密码,轮转后将导致连接失败。

  • 资源状态校验:建议在轮转前使用“检测凭据账号”功能,验证凭据关联的 RDS 实例及账号是否存在且状态正常。

  • 严禁删除资源:在轮转期间或轮转配置生效后,请勿删除关联的 RDS 实例或数据库账号,否则将直接导致轮转任务失败。

操作步骤

通过配置凭据的周期性自动轮转,可有效降低因长期未更新导致的泄露风险;同时支持控制台即时轮转功能,以便在发生泄露事件时快速响应,及时阻断潜在的安全威胁。

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 单击数据库凭据页签,选择实例ID后,定位到要立即轮转的凭据名称,单击操作列的详情

  3. 在凭据详情页面下方的版本列表区域,单击设置轮转

    • 定时自动轮转:开启后需选择轮转周期,支持设置为 6 小时~365 天。

      说明

      也可在创建凭据时,开启自动轮转并配置轮转周期

    • 立即轮转:手动触发立即轮转。

检测凭据账号

KMS 检测凭据保护的 RDS 数据库账号是否属于配置的RDS 实例。检测成功说明凭据可正常轮转,否则需删除后重新创建 RDS 凭据。

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 单击数据库凭据页签,选择实例ID后,定位到目标凭据,单击操作列的详情

  3. 版本列表区域,单击检测账号,验证完成后查看验证结果。

配置数据库(DBName)

RDS 凭据创建后,如需更换凭据关联的 RDS 数据库名称,请在拓展配置中填写正确的 DBName。具体操作如下:

重要

RDS PostgreSQL 必须手动添加 DBName,否则无法使用 RDS 凭据。

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 自管凭据页签选择数据库凭据,选择目标 KMS 实例后,单击目标凭据的操作列的详情

  3. 拓展配置页签,单击 CustomData 操作列的编辑

  4. 编辑自定义数据弹窗内,单击新增键值对,参考如下信息完成配置。

    说明

    若已存在 DBName 键值对,只需修改配置值即可。

    • 配置键DBName

    • 配置值:目标 RDS 实例的数据库名称,可登录 RDS 控制台,在实例详情页签中获取。

配置凭据标签

凭据可以设置标签,用于分类管理。每个标签由一个键值对(Key : Value)组成,包含标签键(Key)和标签值(Value)。

标签使用说明

  • 标签键和标签值最多 128 个字符,支持字母、数字及特殊字符(/ \ _ - . + = : @)和空格。

  • 标签键不能以 aliyun 或 acs: 开头。标签值无此限制。

  • 每个凭据最多可设置 20 个标签。

操作步骤

为单个凭据配置标签
  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 单击相应的凭据类型页签,选择实例ID后,定位到目标凭据。

  3. 通过以下任意入口进入标签编辑:

    • 入口一:在凭据列表中,单击目标凭据标签列的image.png图标。

    • 入口二:单击操作列的详情,进入凭据详情页面,单击标签后的image.png图标。

  4. 编辑标签对话框中输入多个标签键标签值后,单击确定

为多个凭据批量配置标签
  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 单击相应的凭据类型页签,选择实例ID后,在凭据列表中勾选要操作的凭据。

    • 增加标签:在凭据列表的最下方,单击增加标签,输入多个标签键标签值后,单击确定

    • 删除标签:在凭据列表的最下方,单击删除标签,在批量解绑标签对话框勾选要解绑的标签,单击取消,然后在变更提示对话框中单击关闭

删除 RDS 凭据

警告

删除凭据前,确认该凭据已不再使用,否则可能导致业务失败。

可选择计划删除和立即删除两种方式。删除 RDS 凭据仅删除 KMS 中的凭据信息,不会删除 RDS 中的账户和口令。

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 凭据管理

  2. 单击数据库凭据页签,选择实例ID后,定位到要删除的凭据名称,单击操作列的计划删除凭据

  3. 计划删除凭据对话框中,选择凭据删除方式,并单击确定

    • 计划删除凭据:设置预删除周期(7~30 天),系统将在预删除周期结束后删除凭据。

    • 立即删除凭据:系统将立即删除凭据。

    在预删除周期内,可以单击目标凭据操作列的还原凭据,取消删除操作。

应用程序集成 RDS 凭据

KMS 提供多种方式获取 RDS 凭据值,包括阿里云 SDK、凭据客户端、凭据 JDBC 客户端、KMS Agent 和 KMS 实例 SDK。建议按以下优先级选择:

说明
  • 建议做好错误重试机制提升业务稳定性。

  • KMS 提供了多种认证方式,为了更高的安全性,推荐优先使用 ECS 实例 RAM 角色或 RAM 角色。

  • 接入点说明:

    共享网关对应的接入点 Endpoint:请参见接入点说明

    专属网关对应的接入点 Endpoint:{实例 ID}.cryptoservice.kms.aliyuncs.com

优先级

使用场景说明

支持的网关类型

优先级 1:凭据 JDBC 客户端

  • 应用开发语言为 Java(Java 8 及以上版本)

  • 且数据库类型为 MySQL、SQL Server、PostgreSQL 和 MariaDB 之一。

说明

凭据 JDBC 客户端封装了业务逻辑、最佳实践和设计模式,可直接完成数据库连接身份鉴别,建立连接后通过 JDBC 接口访问数据库。

  • 共享网关

  • 专属网关

优先级 2:凭据客户端

应用开发语言为 Java(Java 8 及以上版本)、Go 或者 Python。

  • 共享网关

  • 专属网关

优先级 3:阿里云 SDK

应用开发语言为 Java(Java 6 及以上版本)、PHP、Go、Python、.NET(仅 C#)、C++、Node.js。

  • 专属网关(推荐)

  • 共享网关

优先级 4:KMS Agent

  • 适用于业务应用集中部署的大规模场景,应用访问 KMS。

  • KMS Agent 基于标准化 HTTP 接口提供服务,支持任意编程语言的业务应用调用。

  • 专属网关(推荐)

  • 共享网关

优先级 5:KMS 实例 SDK(不推荐)

应用开发语言为 Java(Java 8 及以上版本)、PHP、Go、Python、.NET(仅 C#)。

专属网关

常见问题

凭据轮转

  • 设置轮转策略或立即轮转时,提示“您的凭据在轮转中,请稍后再试”?

    凭据类型

    可能原因

    RAM凭据

    RAM凭据正在轮转中。

    RAM凭据轮转需要一段时间(轮转窗口)来完成,周期性自动轮转的轮转窗口约为48小时,立即轮转的轮转窗口为您设置的时长。

    如果没有在轮转窗口内完成轮转,请在访问控制(RAM)中检查RAM用户是否仍存在。

    RDS凭据

    正常情况下,RDS凭据轮转即时完成。 如果轮转超过2分钟没有完成,请检查RDS实例状态及RDS账号是否正常。

    ECS凭据

    正常情况下,ECS凭据轮转即时完成。 如果轮转超过2分钟没有完成,请检查ECS实例状态及ECS账号是否正常。

  • 凭据状态为不可用或调用凭据相关API时返回“Rejected.Unavailable”?

    凭据所在的KMS实例已超期,请在超期15个自然日内对KMS实例进行续费,否则KMS实例将被释放。具体操作,请参见产品计费

    如果暂时不使用KMS实例,但以后可能会用到该实例中的密钥或凭据,建议提前备份。具体操作,请参见备份管理

凭据配置

  • PostgreSQL 类型的RDS凭据为什么不能用?

    RDS PostgreSQL 不会自动填充 DBName,需手动在扩展配置中添加。参见配置数据库(DBName)

  • 同一 RDS 账号可以托管到多个凭据中吗?

    不建议。每个凭据轮转时会独立重置口令,若多个凭据关联同一账号,其中一个轮转后其他凭据的值将失效。多应用应从同一凭据获取值,通过 RAM 策略控制访问权限。

权限与管理

  • 在 KMS 中删除凭据和在 RDS 中删除账号有什么区别?

    在 KMS 中删除凭据仅删除加密的凭据信息,不影响 RDS 中的实际账号,在 RDS 中删除账号会导致 KMS 凭据中保存的口令失效,轮转失败。

  • 凭据标签有什么用途?

    用于按环境、项目等维度对凭据分类管理和快速检索,结合 RAM 策略还可实现基于标签的权限控制。建议创建凭据时就规划好标签策略。