本文为您介绍轮转通用凭据的典型场景和操作。
典型场景
凭据消费者和凭据产生者可以通过凭据管家,实现凭据相关功能。
- 凭据管家:托管凭据。例如:Secret管理API对凭据进行托管。
- 凭据消费者:需要使用凭据的应用。例如:业务端应用调用GetSecretValue接口获取最新的凭据值。
- 凭据产生者:运维系统或管理员。例如:线下IDC、云服务器ECS和函数计算FC调用CreateSecret接口创建凭据,调用PutSecretValue接口轮转凭据。
前提条件
轮转通用凭据前,请确保您已经完成以下操作:
- 运维系统已经为凭据存入了初始版本,初始版本默认被凭据管家标记为ACSCurrent。
- 使用凭据的应用,调用GetSecretValue接口获取所需的凭据值,客户端仅需要指定凭据的名称,服务端返回被标记为ACSCurrent版本的凭据值。
通过一个API轮转通用凭据
如果目标系统中有已生效的凭据,当您需要将该凭据存入凭据管家时,可以调用一个API轮转通用凭据。例如:常见的OAuth 2.0系统中的应用密钥(App Secret)通常由系统生成,您可以将它们托管在凭据管家。轮转流程如下:
- 管理员在OAuth 2.0应用管理系统中,生成新的App Secret。
- 您可以使用CLI将新的App Secret存入托管的凭据中,同时新存入的App Secret所在版本会被标记为ACSCurrent。ACSCurrent标记的上一个版本被自动标记为ACSPrevious。
aliyun kms PutSecretValue \ --SecretName MyOAuthAppSecret --SecretData sample-app-secret \ --VersionId v2
- 调用GetSecretValue接口返回被标记为ACSCurrent状态的版本的凭据值,即为最新的App Secret。
通过多个API轮转通用凭据
大多情况下,目标系统并不会自动生成凭据,例如:RDS数据库的账号和ECS实例的SSH Key。您可以将创建的新凭据存储到凭据管家中,作为已有凭据的待定状态的版本。然后将新的凭据值注册到目标系统,将KMS凭据的待定版本轮转为当前版本。
您可以使用CLI轮转托管在凭据管家的数据库用户口令,具体操作如下:
- 调用GetRandomPassword接口,使用轮转程序为新的口令产生一个随机的字符串。
aliyun kms GetRandomPassword --ExcludePunctuation true
KMS返回以下结果:
{ "RequestId": "e36ca295-6e47-4dfb-9df1-48d19df41545", "RandomPassword": "v2GwsgcuNylyYw9JGJNE5yBViGSi****" }
- 将数据库的新用户和新密码,作为一个新的版本存入凭据中。
执行以下命令,保持ACSCurrent和ACSPrevious标记的版本不变,将新创建的版本标记为MyPendingLabel。
aliyun kms PutSecretValue \ --SecretName db_cred --SecretData "{\"uname\": \"alice\", \"pwd\": \"v2GwsgcuNylyYw9JGJNE5yBViGSiZ****"}" \ --VersionId v2 \ --VersionStages "[\"MyPendingLabel\"]"
- 在目标数据库中,注册上述新的用户名和口令。
凭据对象db_cred内的版本号为v2的凭据值,才可以用于访问目标数据库。
- 执行以下命令,将凭据对象中新存入的凭据版本设置为ACSCurrent状态。
aliyun kms UpdateSecretVersionStage \ --SecretName db_cred \ --VersionStage ACSCurrent \ --MoveToVersion v2
- 调用GetSecretValue接口返回被标记为ACSCurrent状态的版本的凭据值,即为最新的账号口令。
说明 您也可以直接使用RDS凭据,由凭据管家帮您完成自动轮转的任务。更多信息,请参见动态RDS凭据概述。