本文為您介紹輪轉(zhuǎn)通用憑據(jù)的典型場(chǎng)景和操作。

典型場(chǎng)景

憑據(jù)消費(fèi)者和憑據(jù)產(chǎn)生者可以通過憑據(jù)管家,實(shí)現(xiàn)憑據(jù)相關(guān)功能。
  • 憑據(jù)管家:托管憑據(jù)。例如:Secret管理API對(duì)憑據(jù)進(jìn)行托管。
  • 憑據(jù)消費(fèi)者:需要使用憑據(jù)的應(yīng)用。例如:業(yè)務(wù)端應(yīng)用調(diào)用GetSecretValue接口獲取最新的憑據(jù)值。
  • 憑據(jù)產(chǎn)生者:運(yùn)維系統(tǒng)或管理員。例如:線下IDC、云服務(wù)器ECS和函數(shù)計(jì)算FC調(diào)用CreateSecret接口創(chuàng)建憑據(jù),調(diào)用PutSecretValue接口輪轉(zhuǎn)憑據(jù)。
輪轉(zhuǎn)通用憑據(jù)

前提條件

輪轉(zhuǎn)通用憑據(jù)前,請(qǐng)確保您已經(jīng)完成以下操作:

  • 運(yùn)維系統(tǒng)已經(jīng)為憑據(jù)存入了初始版本,初始版本默認(rèn)被憑據(jù)管家標(biāo)記為ACSCurrent
  • 使用憑據(jù)的應(yīng)用,調(diào)用GetSecretValue接口獲取所需的憑據(jù)值,客戶端僅需要指定憑據(jù)的名稱,服務(wù)端返回被標(biāo)記為ACSCurrent版本的憑據(jù)值。

通過一個(gè)API輪轉(zhuǎn)通用憑據(jù)

如果目標(biāo)系統(tǒng)中有已生效的憑據(jù),當(dāng)您需要將該憑據(jù)存入憑據(jù)管家時(shí),可以調(diào)用一個(gè)API輪轉(zhuǎn)通用憑據(jù)。例如:常見的OAuth 2.0系統(tǒng)中的應(yīng)用密鑰(App Secret)通常由系統(tǒng)生成,您可以將它們托管在憑據(jù)管家。輪轉(zhuǎn)流程如下:
  1. 管理員在OAuth 2.0應(yīng)用管理系統(tǒng)中,生成新的App Secret。
  2. 您可以使用CLI將新的App Secret存入托管的憑據(jù)中,同時(shí)新存入的App Secret所在版本會(huì)被標(biāo)記為ACSCurrentACSCurrent標(biāo)記的上一個(gè)版本被自動(dòng)標(biāo)記為ACSPrevious
    aliyun kms PutSecretValue \
      --SecretName MyOAuthAppSecret 
      --SecretData sample-app-secret \
      --VersionId v2
  3. 調(diào)用GetSecretValue接口返回被標(biāo)記為ACSCurrent狀態(tài)的版本的憑據(jù)值,即為最新的App Secret。

通過多個(gè)API輪轉(zhuǎn)通用憑據(jù)

大多情況下,目標(biāo)系統(tǒng)并不會(huì)自動(dòng)生成憑據(jù),例如:RDS數(shù)據(jù)庫(kù)的賬號(hào)和ECS實(shí)例的SSH Key。您可以將創(chuàng)建的新憑據(jù)存儲(chǔ)到憑據(jù)管家中,作為已有憑據(jù)的待定狀態(tài)的版本。然后將新的憑據(jù)值注冊(cè)到目標(biāo)系統(tǒng),將KMS憑據(jù)的待定版本輪轉(zhuǎn)為當(dāng)前版本。

您可以使用CLI輪轉(zhuǎn)托管在憑據(jù)管家的數(shù)據(jù)庫(kù)用戶口令,具體操作如下:
  1. 調(diào)用GetRandomPassword接口,使用輪轉(zhuǎn)程序?yàn)樾碌目诹町a(chǎn)生一個(gè)隨機(jī)的字符串。
    aliyun kms GetRandomPassword --ExcludePunctuation true 

    KMS返回以下結(jié)果:

    {
        "RequestId": "e36ca295-6e47-4dfb-9df1-48d19df41545",
        "RandomPassword": "v2GwsgcuNylyYw9JGJNE5yBViGSi****"
    }
  2. 將數(shù)據(jù)庫(kù)的新用戶和新密碼,作為一個(gè)新的版本存入憑據(jù)中。

    執(zhí)行以下命令,保持ACSCurrentACSPrevious標(biāo)記的版本不變,將新創(chuàng)建的版本標(biāo)記為MyPendingLabel

    aliyun kms PutSecretValue \
        --SecretName db_cred 
        --SecretData "{\"uname\": \"alice\", \"pwd\": \"v2GwsgcuNylyYw9JGJNE5yBViGSiZ****"}" \
        --VersionId v2 \
        --VersionStages "[\"MyPendingLabel\"]"
  3. 在目標(biāo)數(shù)據(jù)庫(kù)中,注冊(cè)上述新的用戶名和口令。

    憑據(jù)對(duì)象db_cred內(nèi)的版本號(hào)為v2的憑據(jù)值,才可以用于訪問目標(biāo)數(shù)據(jù)庫(kù)。

  4. 執(zhí)行以下命令,將憑據(jù)對(duì)象中新存入的憑據(jù)版本設(shè)置為ACSCurrent狀態(tài)。
    aliyun kms UpdateSecretVersionStage \
        --SecretName db_cred \
        --VersionStage ACSCurrent \
        --MoveToVersion v2
  5. 調(diào)用GetSecretValue接口返回被標(biāo)記為ACSCurrent狀態(tài)的版本的憑據(jù)值,即為最新的賬號(hào)口令。
說明 您也可以直接使用RDS憑據(jù),由憑據(jù)管家?guī)湍瓿勺詣?dòng)輪轉(zhuǎn)的任務(wù)。更多信息,請(qǐng)參見動(dòng)態(tài)RDS憑據(jù)概述