当您的应用需要访问RDS数据库时,您可以将RDS账号口令存储在KMS的凭据中(即RDS凭据),业务应用通过集成阿里云SDK、KMS实例SDK或凭据SDK向KMS动态获取账号口令,您还可以为凭据配置轮转,以减少账号口令的泄露风险。本文介绍如何管理及使用RDS凭据。
功能介绍
使用RDS凭据,应用程序将无需配置静态数据库账号口令。管理员在KMS创建RDS凭据,应用程序调用GetSecretValue接口获取RDS数据库账号和口令信息,用于访问RDS数据库。
您在KMS托管RDS账号口令后,请勿在云数据库 RDS修改或删除账号口令,以避免您的业务失败。
RDS凭据轮转
KMS为您转轮RDS凭据时,会重置对应RDS账号的密码(口令),数据库账号名称不变。正常情况下,RDS凭据轮转即时完成。如果轮转超过2分钟没有完成,请检查RDS实例状态及RDS账号是否正常。
RDS凭据轮转时请勿删除凭据关联的RDS实例和RDS账号,避免轮转失败。
在KMS托管RDS凭据时,支持单账号托管和双账号托管,其轮转策略不同:
单账号
轮转即为账号生成一个新的口令,轮转时在口令切换的瞬间,凭据的当前版本可能暂时无法使用。因此建议您做好重试策略。
多账号
假设创建凭据时您有一个用户的RDS账号口令。第一次轮转时,KMS会调用RDS的API创建第二个用户的账号口令。第二次轮转时,会修改第一个用户的口令,以后每次轮转凭据时,KMS会交替修改这两个用户的口令。具体如下图所示。
使用限制
支持的RDS数据库为:RDS MySQL、RDS MariaDB、RDS SQL Server(2017集群版除外)和RDS PostgreSQL。
前提条件
已购买并启用KMS实例。具体操作,请参见购买和启用KMS实例。
已创建密钥。具体操作,请参见密钥管理快速入门。
已完成阿里云RDS实例创建。具体操作,请参见创建RDS MySQL实例。
如果您使用RAM用户(子账号)或RAM角色管理RDS凭据,请确保阿里云账号(主账号)已将系统策略AliyunKMSSecretAdminAccess授予RAM用户或RAM角色。具体操作,请参见为RAM用户授权或为RAM角色授权。
步骤一:创建RDS凭据
创建凭据时可以设置凭据全自动的定期轮转,从而降低凭据泄露的安全风险。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
单击数据库凭据页签,选择实例ID后,单击
,完成各项配置后单击确定。说明RDS凭据不支持批量创建。
创建RDS凭据时,系统会自动创建服务关联角色AliyunServiceRoleForKMSSecretsManagerForRDS,并为其授权权限策略AliyunServiceRolePolicyForKMSSecretsManagerForRDS。KMS使用该角色为您管理RDS凭据,完成RDS账号口令的轮转等任务。
您可以登录RAM控制台查看服务关联角色和权限策略的详细信息,具体操作,请参见查看RAM角色和查看权限策略基本信息。
配置项
说明
数据库类型
选择RDS凭据。
凭据名称
自定义的凭据名称。
RDS实例
选择阿里云账号下已有的RDS实例。
账号托管
长度不超过30720字节(30KB)。
双账号托管(推荐):适用于程序化访问数据库场景。托管两个相同权限的账号,保证口令重置切换的瞬间,程序访问数据库不被中断。
单击新建账号,配置账号名、选择数据库并指定权限。
说明一键创建和授权不会立即为您配置新的账号,而是在您审核确认凭据信息之后进行配置。
单击导入已有账号,选择用户名、配置口令。
说明建议您将口令配置为创建RDS实例用户账号时对应的密码。如果导入的账号和口令不匹配,您可以在凭据首次轮转之后,获取正确的账号和口令。
单账号托管:适用于高权限账号或者人工运维账号托管场景。口令重置切换的瞬间,凭据的当前版本可能暂时无法使用。
单击新建账号,配置账号名、选择账号类型。
您可以选择普通账号和高权限账号两种账号类型。当您选择普通账号时,还需选择数据库并指定权限。
单击导入已有账号页签,选择用户名、配置口令。
加密主密钥
选择用于加密凭据值的密钥。
重要密钥和凭据需要属于同一个KMS实例,且密钥必须为对称密钥。关于KMS支持哪些对称密钥,请参见密钥管理类型和密钥规格。
如果是RAM用户、RAM角色,需要具备使用加密主密钥执行GenerateDataKey操作的权限。
标签
凭据的标签,方便您对凭据进行分类管理。每个标签由一个键值对(Key:Value)组成,包含标签键(Key)、标签值(Value)。
说明标签键和标签值的格式:最多支持128个字符,可以包含英文大小写字母、数字、正斜线(/)、反斜线(\)、下划线(_)、短划线(-)、半角句号(.)、加号(+)、等于号(=)、半角冒号(:)、字符at(@)、空格。
标签键不能以aliyun或acs:开头。
每个凭据最多可以设置20个标签键值对。
自动轮转
选择开启或关闭凭据的周期性自动轮转。
轮转周期
仅当开启自动轮转时需要设置。支持设置为6小时~365天。
表示轮转的周期,设置后KMS将定期为您更新凭据值。
描述信息
凭据的描述信息。
策略配置
凭据的策略配置。关于凭据策略更详细的介绍,请参见凭据策略概述。
默认策略:凭据由当前主账号使用,或者资源共享单元中的主账号使用,请选择默认策略。
实例未共享给其他账号:仅当前主账号能管理及使用凭据。
实例已共享给其他账号:以主账号1将KMS实例A共享给主账号2为例介绍。
主账号1创建的凭据:仅主账号1能管理及使用凭据。
主账号2创建的凭据:主账号1和主账号2,都能管理及使用凭据。
自定义策略:如果凭据需要授权给RAM用户、RAM角色,或授权给其他账号使用,请选择自定义策略。
重要选择管理员、使用者时不消耗访问管理数量配额。选择其他账号使用者时,会消耗KMS实例的访问管理数量配额,按主账号个数计算消耗的配额,如果您取消了授权,请等待约5分钟,再查看配额,配额的消耗数量会相应减少。
使用凭据时,还需要授予使用对应密钥进行解密(Decrypt)的权限。
管理员:对凭据进行管控类操作,不支持使用凭据(即获取凭据值)。支持选择当前账号下的RAM用户和RAM角色。
使用者:支持使用凭据,即获取凭据值。支持选择当前账号下的RAM用户和RAM角色。
其他账号使用者:仅支持使用凭据,即获取凭据值。可以是其他阿里云账号的RAM用户或RAM角色。
RAM用户:格式为
acs:ram::<userId>:user/<ramuser>
,例如acs:ram::119285303511****:user/testpolicyuser
。RAM角色:格式为
acs:ram::<userId>:role/<ramrole>
,例如acs:ram::119285303511****:role/testpolicyrole
。
说明授权给RAM用户、RAM角色后,您仍需在访问控制RAM侧,使用该RAM用户、RAM角色的主账号为其授权使用该凭据,RAM用户、RAM角色才能使用该凭据。
具体操作,请参见密钥管理服务自定义权限策略参考、为RAM用户授权、为RAM角色授权。
步骤二:应用程序集成RDS凭据
KMS提供了阿里云SDK、KMS实例SDK、凭据客户端、凭据JDBC客户端,用于获取凭据值,应用可以通过这些SDK集成RDS凭据。凭据JDBC客户端封装了业务逻辑、最佳实践和设计模式,应用程序可通过在KMS保存的RDS凭据完成数据库连接身份鉴别,在建立数据库连接后通过JDBC接口访问数据库。关于各SDK的详细介绍,请参见SDK参考。
如果您的应用程序编程语言是Java,推荐您使用凭据JDBC客户端。详细信息,请参见凭据JDBC客户端。如果您的应用程序编程语言是Python或Go,推荐您使用凭据客户端。详细信息,请参见凭据客户端。其它编程语言,您可使用KMS实例SDK或阿里云SDK。
如果您使用SDK进行管控类操作,例如创建RDS凭据、修改RDS标签等,仅支持使用阿里云SDK。
更多操作
轮转RDS凭据
轮转RDS凭据时,KMS将请求RDS重置相应数据库账号的密码(ResetAccountPassword)。在轮转RDS凭据前请确保您所有应用均从KMS获取RDS凭据,以免造成相关业务应用不可用。
如果您在RDS中删除了对应数据库实例或账号,KMS将无法正常对该RDS凭据完成轮转。建议您在轮转前进行一次“检测账号”,且看到KMS提示检验成功后再进行轮转。
您可以为凭据设置周期性自动轮转,降低凭据泄露的安全风险。也可以在凭据泄露时,通过控制台立即轮转功能快速轮转凭据,阻断入侵威胁。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
单击数据库凭据页签,选择实例ID后,定位到要立即轮转的凭据名称,单击操作列的详情。
在凭据详情页面下方的版本列表区域,单击设置轮转。
定时自动轮转:开启后需要选择轮转周期,支持设置为6小时~365天。
立即轮转:手动触发立即轮转。
检测凭据值
KMS将检测凭据保护的RDS数据库账号是否属于您配置的RDS实例,检测成功说明该凭据可以正常轮转,否则您需要删除后重新创建RDS凭据。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
单击数据库凭据页签,选择实例ID后,定位到目标凭据,单击操作列的详情。
在版本列表区域,单击检测账号,验证完成后,查看验证结果。
删除RDS凭据
删除凭据前,请确认该凭据已不再使用,否则可能导致您的业务失败。
您可以选择计划删除凭据和立即删除凭据两种方式,删除不需要的凭据。删除RDS凭据仅删除KMS的RDS凭据信息,不会删除RDS中的账户和口令。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
单击数据库凭据页签,选择实例ID后,定位到要删除的凭据名称,单击操作列的计划删除凭据。
在计划删除凭据对话框中,选择凭据删除方式,并单击确定。
计划删除凭据:设置预删除周期(7~30天),系统将在预删除周期结束后删除凭据。
立即删除凭据:系统将立即删除凭据。
在预删除周期内,您可以单击目标凭据操作列的还原凭据,取消删除操作。
为凭据配置标签
凭据的标签,方便您对凭据进行分类管理。每个标签由一个键值对(Key:Value)组成,包含标签键(Key)、标签值(Value)。
标签键和标签值的格式:最多支持128个字符,可以包含英文大小写字母、数字、正斜线(/)、反斜线(\)、下划线(_)、短划线(-)、半角句号(.)、加号(+)、等于号(=)、半角冒号(:)、字符at(@)、空格。
标签键不能以aliyun或acs:开头。
每个凭据最多可以设置20个标签键值对。
为单个凭据配置标签
方式 | 操作 |
方式一:在凭据管理页面配置标签 |
|
方式二:在凭据详情页面配置标签 |
|
为多个凭据批量配置标签
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
单击相应的凭据类型页签,选择实例ID后,在凭据列表中勾选要操作的凭据。
增加标签:在凭据列表的最下方,单击增加标签,输入多个标签键和标签值后,单击确认,然后在变更提示对话框中单击关闭。
删除标签:在凭据列表的最下方,单击删除标签,在批量解绑标签对话框勾选要解绑的标签,单击解绑标签,然后在变更提示对话框中单击关闭。