為 Amazon RDS,Amazon Aurora,亞馬遜紅移或 Amazon DocumentDB 機密設置自動輪換 - AWS Secrets Manager

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

為 Amazon RDS,Amazon Aurora,亞馬遜紅移或 Amazon DocumentDB 機密設置自動輪換

本教學課程說明如何設定由 Lambda 函數旋轉資料庫密碼。輪換是定期更新機密的過程。當您輪換機密時,會更新機密和資料庫中的憑證。在 Secrets Manager 中,您可以為資料庫秘密設定自動輪換。

若要使用主控台設定輪換,您必須先選擇輪換策略。接著設定秘密進行輪換,如果您還沒有 Lambda 輪換函數,這會建立一個。主控台也會為 Lambda 函數執行角色設定許可。最後一步是確保 Lambda 輪換函數可以透過網路,存取 Secrets Manager 和您的資料庫。

警告

若要開啟自動輪換,您必須擁有為 Lambda 輪換函數建立 IAM 執行角色的權限,並將權限政策附加至該函數。您同時需要 iam:CreateRoleiam:AttachRolePolicy 許可。授與這些權限可讓身分授與自己任何權限。

步驟 1:選擇輪換策略並 (選擇性) 建立超級使用者秘密

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

如果您選擇交替使用者策略,必須建立資料庫秘密,並在其中儲存資料庫超級使用者憑證。您需要具有超級使用者憑證的秘密,因為輪換會複製第一個使用者,而大多數使用者沒有該許可。請注意,Amazon RDS 代理不支援交替使用者策略。

步驟 2:設定輪換並建立輪換函數

若要為 Amazon RDS、Amazon DocumentDB 或 Amazon Redshift 秘密開啟輪換
  1. 前往以下位置開啟機密管理員控制台:https://console.aws.amazon.com/secretsmanager/

  2. Secrets (機密) 頁面中,選擇機密。

  3. Secret details (機密詳細資訊) 頁面的 Rotation configuration (輪換組態) 區段中,選擇 Edit rotation (編輯輪換)

  4. Edit rotation configuration (編輯輪換組態) 對話方塊中,執行以下動作:

    1. 開啟 Automatic rotation (自動輪換)。

    2. Rotation schedule (輪換排程) 中,在 Schedule expression builder (排程表達式建置器),或以 Schedule expression (排程表達式) 形式,輸入 UTC 時區的排程。Secrets Manager 會將您的排程儲存為 rate()cron() 表達式。輪換時段會自動在午夜時開始,除非您指定 Start time (開始時間)。您可以每四小時輪換一次秘密。如需詳細資訊,請參閱 旋轉明細表

    3. (選用) 對於 Window duration (時段持續時間),選擇您想要 Secrets Manager 輪換秘密的時段長度,例如,三個小時時段 3h。時段不得延伸到下一個輪換時段。如果您未指定 Window duration (時段持續時間),則對於以小時為單位的輪換排程,時段會在一小時後自動關閉。對於以天為單位的輪換排程,時段會在一天結束時自動關閉。

    4. (選用) 選擇 Rotate immediately when the secret is stored (存放秘密時立即輪換) 以在儲存變更時輪換您的秘密。如果清除核取方塊,則第一次輪換將按照您設定的排程開始。

      如果輪換失敗,例如因為步驟 3 和 4 尚未完成,Secrets Manager 會多次重試輪換流程。

    5. Rotation function (輪換函數) 下,請執行下列其中一項:

      • 選擇 Create a new Lambda function (新建 Lambda 函數),然後輸入新函數的名稱。Secrets Manager 會將 SecretsManager 新增到函數名稱的開頭。Secrets Manager 會根據適當的範本建立函數,並為 Lambda 執行角色設定必要的許可

      • 選擇 Use an existing Lambda function (使用現有的 Lambda 函數),重複使用您用於其他秘密的輪換函數。Recommended VPC configurations (建議的 VPC 組態) 下列出的輪換函數,與資料庫具有相同的 VPC 和安全群組,有助於函數存取資料庫。

    6. 對於輪換策略,選擇單一使用者交替使用者策略。如需詳細資訊,請參閱 步驟 1:選擇輪換策略並 (選擇性) 建立超級使用者秘密

  5. 選擇 Save (儲存)。

步驟 3:(選用) 對輪換函數設定其他許可條件

在輪換函數的資源政策中,我們建議您包含內容金鑰 aws:SourceAccount,協助防止 Lambda 被當作混淆代理人。對於某些 AWS 服務,若要避免混淆的副案例, AWS 建議您同時使用aws:SourceArnaws:SourceAccount全域條件金鑰。但是,如果在您的輪換函數政策中包含 aws:SourceArn 條件,則輪換函數只能用於輪換該 ARN 指定的秘密。建議您僅包含內容金鑰 aws:SourceAccount,以便可以將輪換函數用於多個秘密。

若要更新輪換函數資源政策
  1. 在 Secrets Manager 主控台中,選擇您的秘密,然後在詳細資訊頁面的 Rotation configuration (輪換組態) 之下,選擇 Lambda 輪換函數。Lambda 主控台開啟。

  2. 遵循將資源型政策用於 Lambda 中的指示,新增 aws:sourceAccount 條件。

    "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" } },

如果使用 KMS 金鑰而不是 AWS 受管金鑰 aws/secretsmanager 為秘密加密,Secrets Manager 便會授予 Lambda 執行角色使用該金鑰的許可。您可以透過 SecretARN 加密內容來限制使用解密函數,從而使輪換函數角色僅有權解密其負責輪換的秘密。

更新輪換函數執行角色
  1. 在 Lambda 輪換函數中選擇組態,然後在執行角色下選擇角色名稱

  2. 按照修改角色許可政策中的指示新增 kms:EncryptionContext:SecretARN 條件。

    "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "SecretARN" } },

步驟 4:為輪換函數設定網路存取

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

後續步驟

請參閱疑難排解 AWS Secrets Manager 旋