設定自動旋轉 AWS CLI - AWS Secrets Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定自動旋轉 AWS CLI

本教學課程說明如何使用 AWS CLI. 由 Lambda 函數旋轉 當您輪換秘密時,會更新秘密以及該秘密所針對資料庫或服務中的憑證。

您也可以使用控制台設定旋轉。如需資料庫秘密,請參閱資料庫秘密的自動輪換 (主控台)。如需所有其他類型的機密,請參閱 非資料庫密碼的自動輪替 (主控台)

若要使用設定旋轉 AWS CLI,如果您要旋轉資料庫密碼,您首先需要選擇旋轉策略。如果您選擇交替使用者策略,必須儲存具有資料庫超級使用者憑證的另外秘密。接下來,您會撰寫輪換函數程式碼。Secrets Manager 提供範本,您可以用來撰寫函數。您接著可以使用程式碼建立 Lambda 函數,並為 Lambda 函數和 Lambda 執行角色設定許可。下一個步驟是確保 Lambda 函數可以透過網路存取 Secrets Manager 和您的資料庫或服務。最後,您可以設定秘密以進行輪換。

資料庫密碼的先決條件:選擇循環策略

如需 Secrets Manager 所提供之策略的相關資訊,請參閱Lambda 函數旋轉策略

選項 1:單一使用者策略

如果您選擇單一使用者策略,則可以繼續執行步驟 1。

選項 2:交替使用者策略

如果您選擇交替使用者策略,您必須:

請注意,Amazon RDS 代理不支援交替使用者策略。

步驟 1:編寫旋轉函數代碼

若要輪換秘密,您需要輪換函數。輪換函數是 Lambda 函數,Secrets Manager 會呼叫以輪換秘密。如需詳細資訊,請參閱 由 Lambda 函數旋轉。在此步驟中,您會撰寫更新密碼的程式碼,以及密碼所用的服務或資料庫。

Secrets Manager 為 Amazon RDS,Amazon Aurora,Amazon Redshift 和亞 Amazon DocumentDB 數據庫秘密提供模板。輪換函數範本

撰寫旋轉函數程式碼的步驟
  1. 執行以下任意一項:

    • 檢查旋轉功能模板列表。如果有符合您的服務和輪換策略的程式碼,請複製程式碼。

    • 對於其他類型的秘密,您可以編寫自己的旋轉函數。如需說明,請參閱Lambda 旋轉函數

  2. 將檔案與任何必要的相依性一起儲存在 ZIP 檔案 my-function.zip 中。

步驟 2:建立 Lambda 函數

在此步驟中,您會使用您在步驟 1 中建立的 ZIP 檔案來建立 Lambda 函數。您也可以設定 Lambda 執行角色,這是 Lambda 在呼叫函數時所擔任的角色。

建立 Lambda 輪換函數和執行角色
  1. 為 Lambda 執行角色建立信任政策,並將其儲存為 JSON 檔案。如需範例和詳細資訊,請參閱Lambda 循環函數執行角色權限 AWS Secrets Manager。該政策必須:

    • 允許角色對秘密呼叫 Secrets Manager 作業。

    • 允許角色呼叫密碼所屬的服務,例如建立新密碼。

  2. 建立 Lambda 執行角色,並透過呼叫套用您在上一個步驟中建立的信任原則iam create-role

    aws iam create-role \ --role-name rotation-lambda-role \ --assume-role-policy-document file://trust-policy.json
  3. 呼叫 lambda create-function,以 ZIP 檔案建立 Lambda 函數。

    aws lambda create-function \ --function-name my-rotation-function \ --runtime python3.7 \ --zip-file fileb://my-function.zip \ --handler .handler \ --role arn:aws:iam::123456789012:role/service-role/rotation-lambda-role
  4. 對 Lambda 函數設定資源政策,允許 Secrets Manager 透過呼叫 lambda add-permission 來叫用該函數。

    aws lambda add-permission \ --function-name my-rotation-function \ --action lambda:InvokeFunction \ --statement-id SecretsManager \ --principal secretsmanager.amazonaws.com \ --source-account 123456789012

步驟 3:設定網路存取

如需詳細資訊,請參閱 Lambda 旋轉函數的網路存取

步驟 4:設定輪換的密碼

若要為您的秘密開啟自動輪換功能,請呼叫 rotate-secret。您可以使用 cron()rate() 排程表達式來設定輪換排程,也可以設定輪換時段時長。如需詳細資訊,請參閱 旋轉明細表

aws secretsmanager rotate-secret \ --secret-id MySecret \ --rotation-lambda-arn arn:aws:lambda:Region:123456789012:function:my-rotation-function \ --rotation-rules "{\"ScheduleExpression\": \"cron(0 16 1,15 * ? *)\", \"Duration\": \"2h\"}"

後續步驟

請參閱疑難排解 AWS Secrets Manager 旋