本文为您介绍轮转通用凭据的典型场景和操作。

典型场景

凭据消费者和凭据产生者可以通过凭据管家,实现凭据相关功能。
  • 凭据管家:托管凭据。例如:Secret管理API对凭据进行托管。
  • 凭据消费者:需要使用凭据的应用。例如:业务端应用调用GetSecretValue接口获取最新的凭据值。
  • 凭据产生者:运维系统或管理员。例如:线下IDC、云服务器ECS和函数计算FC调用CreateSecret接口创建凭据,调用PutSecretValue接口轮转凭据。
轮转通用凭据

前提条件

轮转通用凭据前,请确保您已经完成以下操作:

  • 运维系统已经为凭据存入了初始版本,初始版本默认被凭据管家标记为ACSCurrent
  • 使用凭据的应用,调用GetSecretValue接口获取所需的凭据值,客户端仅需要指定凭据的名称,服务端返回被标记为ACSCurrent版本的凭据值。

通过一个API轮转通用凭据

如果目标系统中有已生效的凭据,当您需要将该凭据存入凭据管家时,可以调用一个API轮转通用凭据。例如:常见的OAuth 2.0系统中的应用密钥(App Secret)通常由系统生成,您可以将它们托管在凭据管家。轮转流程如下:
  1. 管理员在OAuth 2.0应用管理系统中,生成新的App Secret。
  2. 您可以使用CLI将新的App Secret存入托管的凭据中,同时新存入的App Secret所在版本会被标记为ACSCurrentACSCurrent标记的上一个版本被自动标记为ACSPrevious
    aliyun kms PutSecretValue \
      --SecretName MyOAuthAppSecret 
      --SecretData sample-app-secret \
      --VersionId v2
  3. 调用GetSecretValue接口返回被标记为ACSCurrent状态的版本的凭据值,即为最新的App Secret。

通过多个API轮转通用凭据

大多情况下,目标系统并不会自动生成凭据,例如:RDS数据库的账号和ECS实例的SSH Key。您可以将创建的新凭据存储到凭据管家中,作为已有凭据的待定状态的版本。然后将新的凭据值注册到目标系统,将KMS凭据的待定版本轮转为当前版本。

您可以使用CLI轮转托管在凭据管家的数据库用户口令,具体操作如下:
  1. 调用GetRandomPassword接口,使用轮转程序为新的口令产生一个随机的字符串。
    aliyun kms GetRandomPassword --ExcludePunctuation true 

    KMS返回以下结果:

    {
        "RequestId": "e36ca295-6e47-4dfb-9df1-48d19df41545",
        "RandomPassword": "v2GwsgcuNylyYw9JGJNE5yBViGSi****"
    }
  2. 将数据库的新用户和新密码,作为一个新的版本存入凭据中。

    执行以下命令,保持ACSCurrentACSPrevious标记的版本不变,将新创建的版本标记为MyPendingLabel

    aliyun kms PutSecretValue \
        --SecretName db_cred 
        --SecretData "{\"uname\": \"alice\", \"pwd\": \"v2GwsgcuNylyYw9JGJNE5yBViGSiZ****"}" \
        --VersionId v2 \
        --VersionStages "[\"MyPendingLabel\"]"
  3. 在目标数据库中,注册上述新的用户名和口令。

    凭据对象db_cred内的版本号为v2的凭据值,才可以用于访问目标数据库。

  4. 执行以下命令,将凭据对象中新存入的凭据版本设置为ACSCurrent状态。
    aliyun kms UpdateSecretVersionStage \
        --SecretName db_cred \
        --VersionStage ACSCurrent \
        --MoveToVersion v2
  5. 调用GetSecretValue接口返回被标记为ACSCurrent状态的版本的凭据值,即为最新的账号口令。
说明 您也可以直接使用RDS凭据,由凭据管家帮您完成自动轮转的任务。更多信息,请参见动态RDS凭据概述