业务应用通常需将数据库账号口令配置在代码或配置文件中,存在泄露风险。通过 KMS 凭据托管 RDS 账号口令,应用可通过 SDK 动态获取凭据值,并支持自动轮转,有效降低凭据泄露风险。
功能介绍
使用 RDS 凭据,应用程序无需在代码或配置文件中硬编码静态数据库账号口令。管理员在 KMS 创建 RDS 凭据后,应用程序调用 GetSecretValue 接口获取数据库账号和口令信息,用于访问 RDS 数据库。常见使用场景如下:
-
云上应用数据库访问:应用部署在 ECS、ACK 等阿里云产品上,需集中管理数据库访问凭证,避免多实例部署时分散管理口令。
-
定期安全合规要求:企业安全规范强制要求定期更换数据库口令,通过 KMS 凭据自动轮转可满足合规审计要求。
-
多环境凭据管理:生产、测试、开发等多环境需要隔离数据库访问凭证,通过凭据标签功能实现按维度分组管理。
请勿在云数据库 RDS修改或删除账号口令,以避免业务失败。
使用说明
-
支持的数据库类型:RDS MySQL、RDS MariaDB、RDS SQL Server(2017 集群版除外)和 RDS PostgreSQL。
-
KMS 密钥准备:需在 KMS 实例中创建用于加密的对称密钥,且密钥与凭据属于同一实例。具体操作,请参见创建密钥。
-
RAM 权限配置:若使用 RAM 用户或角色,主账号需授予其系统策略
AliyunKMSSecretAdminAccess。具体操作,请参见为RAM用户授权或管理RAM角色的权限。 -
使用限制:请勿将同一 RDS 数据库账号的口令托管到多个 RDS 凭据中,凭据轮转会导致未同步更新的凭据因口令失效而无法登录。
创建 RDS 凭据
创建凭据时可以设置凭据全自动的定期轮转,从而降低凭据泄露的安全风险。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
-
单击数据库凭据页签,选择实例ID后,单击,完成各项配置后单击确定。
说明-
RDS 凭据不支持批量创建。
-
建议设置凭据全自动的定期轮转,从而降低凭据泄露安全风险。
配置项
说明
数据库类型
选择RDS凭据。
凭据名称
自定义凭据名称,需确保名称在当前地域内唯一。
RDS实例
选择阿里云账号下已有的 RDS 实例。
账号托管
双账号托管(推荐):适用于程序化访问数据库场景。托管两个相同权限的账号,保证口令重置切换的瞬间,程序访问数据库不被中断。
单击新建账号,配置账号名、选择数据库并指定权限。
说明一键创建和授权不会立即配置新账号,需审核确认凭据信息后才会创建。
RDS PostgreSQL 配置后,在创建阶段无法获取数据库名称,需手动设置 DBName。
单击导入已有账号,选择用户名、配置口令。
说明建议将口令配置为创建 RDS 实例用户账号时对应的密码。如果导入的账号和口令不匹配,可在凭据首次轮转后获取正确的账号和口令。
单账号托管:适用于高权限账号或人工运维账号托管场景。口令重置切换的瞬间,凭据当前版本可能暂时无法使用。
单击新建账号,配置账号名、选择账号类型。
支持普通账号和高权限账号两种账号类型。选择普通账号时,还需选择数据库并指定权限。
单击导入已有账号页签,选择用户名、配置口令。
加密主密钥
选择用于加密凭据值的对称密钥。密钥和凭据必须属于同一个 KMS 实例。
重要密钥和凭据需要属于同一个 KMS 实例,且密钥必须为对称密钥。关于 KMS 支持哪些对称密钥,请参见密钥管理类型和密钥规格。
如果是 RAM 用户、RAM 角色,需要具备使用加密主密钥执行 GenerateDataKey 操作的权限。
自动轮转
选择是否启用自动轮转功能。启用后,KMS 将按照设定的周期自动更新凭据值,降低凭据泄露风险。
轮转周期
仅在开启开启自动轮转时设置。支持设置为 6 小时~365 天。
表示轮转周期,设置后 KMS 将定期更新凭据值。
描述信息
填写凭据的补充描述信息,便于后续识别和管理。
设置凭据的访问权限策略,可控制哪些 RAM 用户或角色可以读取或修改此凭据。
可先选择默认策略,创建后根据业务需要修改。
-
-
创建完成后,在数据库凭据列表中查看新建的凭据,状态显示为正常即表示创建成功。
说明系统会自动创建服务关联角色
AliyunServiceRoleForKMSSecretsManagerForRDS,并为其授权权限策略AliyunServiceRolePolicyForKMSSecretsManagerForRDS。KMS 使用该角色管理 RDS 凭据,完成 RDS 账号口令的轮转等任务。
管理 RDS 凭据
轮转 RDS 凭据
RDS 凭据轮转机制
KMS(密钥管理服务)支持对关联的 RDS(关系型数据库服务)实例凭据进行自动轮转。在轮转过程中,KMS 会重置对应 RDS 账号的口令,但数据库账号名称保持不变。
-
轮转模式:KMS 托管 RDS 凭据支持单账号托管和双账号托管两种模式。
对比项
单账号托管
双账号托管
适用场景
简单场景,对短暂中断不敏感的业务。
高可用场景,对业务连续性要求较高的核心业务。
轮转原理
轮转时为账号生成新口令。
维护两个交替使用的账号(User A 和 User B)。
可用性
存在短暂不可用窗口:在口令切换瞬间,旧凭据失效而新凭据尚未完全生效,可能导致连接暂时失败。建议业务配置重试策略。
全程高可用:轮转过程中,始终有一个账号的凭据处于有效状态,业务无感知。
-
双账号轮转原理图:创建凭据时已有第一个用户的 RDS 账号口令。第一次轮转时,KMS 调用 RDS API 创建第二个用户的账号口令。第二次轮转时,修改第一个用户的口令。此后每次轮转,KMS 交替修改两个用户的口令。
注意事项
-
应用接入确认:轮转前,请确保所有业务应用均已配置为从 KMS 动态获取凭据。若应用硬编码了旧密码,轮转后将导致连接失败。
-
资源状态校验:建议在轮转前使用“检测凭据账号”功能,验证凭据关联的 RDS 实例及账号是否存在且状态正常。
-
严禁删除资源:在轮转期间或轮转配置生效后,请勿删除关联的 RDS 实例或数据库账号,否则将直接导致轮转任务失败。
操作步骤
通过配置凭据的周期性自动轮转,可有效降低因长期未更新导致的泄露风险;同时支持控制台即时轮转功能,以便在发生泄露事件时快速响应,及时阻断潜在的安全威胁。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
-
单击数据库凭据页签,选择实例ID后,定位到要立即轮转的凭据名称,单击操作列的详情。
-
在凭据详情页面下方的版本列表区域,单击设置轮转。
-
定时自动轮转:开启后需选择轮转周期,支持设置为 6 小时~365 天。
说明也可在创建凭据时,开启自动轮转并配置轮转周期。
-
立即轮转:手动触发立即轮转。
-
检测凭据账号
KMS 检测凭据保护的 RDS 数据库账号是否属于配置的RDS 实例。检测成功说明凭据可正常轮转,否则需删除后重新创建 RDS 凭据。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
-
单击数据库凭据页签,选择实例ID后,定位到目标凭据,单击操作列的详情。
-
在版本列表区域,单击检测账号,验证完成后查看验证结果。
配置数据库(DBName)
RDS 凭据创建后,如需更换凭据关联的 RDS 数据库名称,请在拓展配置中填写正确的 DBName。具体操作如下:
RDS PostgreSQL 必须手动添加 DBName,否则无法使用 RDS 凭据。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
-
在自管凭据页签选择数据库凭据,选择目标 KMS 实例后,单击目标凭据的操作列的详情。
-
在拓展配置页签,单击
CustomData操作列的编辑。 -
在编辑自定义数据弹窗内,单击新增键值对,参考如下信息完成配置。
说明若已存在
DBName键值对,只需修改配置值即可。-
配置键:
DBName。 -
配置值:目标 RDS 实例的数据库名称,可登录 RDS 控制台,在实例详情页签中获取。
-
配置凭据标签
凭据可以设置标签,用于分类管理。每个标签由一个键值对(Key : Value)组成,包含标签键(Key)和标签值(Value)。
标签使用说明
标签键和标签值最多 128 个字符,支持字母、数字及特殊字符(/ \ _ - . + = : @)和空格。
标签键不能以 aliyun 或 acs: 开头。标签值无此限制。
每个凭据最多可设置 20 个标签。
操作步骤
为单个凭据配置标签
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
单击相应的凭据类型页签,选择实例ID后,定位到目标凭据。
通过以下任意入口进入标签编辑:
入口一:在凭据列表中,单击目标凭据标签列的
图标。入口二:单击操作列的详情,进入凭据详情页面,单击标签后的
图标。
为多个凭据批量配置标签
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
单击相应的凭据类型页签,选择实例ID后,在凭据列表中勾选要操作的凭据。
增加标签:在凭据列表的最下方,单击增加标签,输入多个标签键和标签值后,单击确定。
删除标签:在凭据列表的最下方,单击删除标签,在批量解绑标签对话框勾选要解绑的标签,单击取消,然后在变更提示对话框中单击关闭。
删除 RDS 凭据
删除凭据前,确认该凭据已不再使用,否则可能导致业务失败。
可选择计划删除和立即删除两种方式。删除 RDS 凭据仅删除 KMS 中的凭据信息,不会删除 RDS 中的账户和口令。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
-
单击数据库凭据页签,选择实例ID后,定位到要删除的凭据名称,单击操作列的计划删除凭据。
在计划删除凭据对话框中,选择凭据删除方式,并单击确定。
计划删除凭据:设置预删除周期(7~30 天),系统将在预删除周期结束后删除凭据。
立即删除凭据:系统将立即删除凭据。
在预删除周期内,可以单击目标凭据操作列的还原凭据,取消删除操作。
应用程序集成 RDS 凭据
KMS 提供多种方式获取 RDS 凭据值,包括阿里云 SDK、凭据客户端、凭据 JDBC 客户端、KMS Agent 和 KMS 实例 SDK。建议按以下优先级选择:
建议做好错误重试机制提升业务稳定性。
KMS 提供了多种认证方式,为了更高的安全性,推荐优先使用 ECS 实例 RAM 角色或 RAM 角色。
接入点说明:
共享网关对应的接入点 Endpoint:请参见接入点说明。
专属网关对应的接入点 Endpoint:
{实例 ID}.cryptoservice.kms.aliyuncs.com。
|
优先级 |
使用场景说明 |
支持的网关类型 |
|
优先级 1:凭据 JDBC 客户端 |
说明
凭据 JDBC 客户端封装了业务逻辑、最佳实践和设计模式,可直接完成数据库连接身份鉴别,建立连接后通过 JDBC 接口访问数据库。 |
|
|
优先级 2:凭据客户端 |
应用开发语言为 Java(Java 8 及以上版本)、Go 或者 Python。 |
|
|
优先级 3:阿里云 SDK |
应用开发语言为 Java(Java 6 及以上版本)、PHP、Go、Python、.NET(仅 C#)、C++、Node.js。 |
|
|
优先级 4:KMS Agent |
|
|
|
优先级 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 策略还可实现基于标签的权限控制。建议创建凭据时就规划好标签策略。