View a markdown version of this page

設定 Amazon RDS、Amazon Aurora、Amazon Redshift 或 Amazon DocumentDB 秘密的自動輪換 - AWS Secrets Manager

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

設定 Amazon RDS、Amazon Aurora、Amazon Redshift 或 Amazon DocumentDB 秘密的自動輪換

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

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

警告

若要開啟自動輪換,您必須擁有為 Lambda 輪換函數建立 IAM 執行角色並將其連接許可政策的許可。您同時需要 iam:CreateRole 和 iam:AttachRolePolicy 許可。授予這些許可可讓身分授予自己任何許可。

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

如需 Secrets Manager 所提供策略的相關資訊,請參閱 Lambda 函數輪換策略。

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

步驟 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:SourceArn和 aws: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:為輪換函數設定網路存取

如需詳細資訊,請參閱AWS Lambda 輪換函數的網路存取。

後續步驟

請參閱對AWS Secrets Manager輪換進行故障診斷。