本文為您介紹輪轉通用憑據的典型情境和操作。
典型情境
憑據消費者和憑據產生者可以通過憑據管家,實現憑據相關功能。
- 憑據管家:託管憑據。例如:Secret管理API對憑據進行託管。
- 憑據消費者:需要使用憑據的應用。例如:業務端應用調用GetSecretValue介面擷取最新的憑據值。
- 憑據產生者:營運系統或管理員。例如:線下IDC、Elastic Compute Service和Function ComputeFC調用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憑據概述。