

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

# 設定 的單一使用者輪換 AWS Secrets Manager
<a name="tutorials_rotation-single"></a>

在此教學中，您會學習如何為包含資料庫憑證的秘密，設定單一使用者輪換。*單一使用者輪換*是一種輪換策略，使用此策略，Secrets Manager 會在秘密和資料庫中更新使用者的憑證。如需詳細資訊，請參閱[輪換策略：單一使用者](rotation-strategy.md#rotating-secrets-one-user-one-password)。

完成本教學後，建議您清除本教學的資源。請勿在生產環境中使用。

Secrets Manager 輪換使用 AWS Lambda 函數來更新秘密和資料庫。如需有關使用 Lambda 函數成本的資訊，請參閱 [定價](intro.md#asm_pricing)。

**Contents**
+ [許可](#tutorials_rotation-single_permissions)
+ [先決條件](#tutorials_rotation-single_step-setup)
+ [步驟 1：建立 Amazon RDS 資料庫使用者](#tutorials_rotation-single_step-dbuser)
+ [步驟 2︰為資料庫使用者憑證建立秘密](#tutorials_rotation-single_step-rotate)
+ [步驟 3：測試輪換密碼](#tutorials_rotation-single_step-connect-again)
+ [步驟 4：清除資源](#tutorials_rotation-single_step-cleanup)
+ [後續步驟](#tutorials_rotation-single_step-next)

## 許可
<a name="tutorials_rotation-single_permissions"></a>

對於教學必備條件，您需要 AWS 帳戶的管理許可。在生產設定中，最佳實務是針對每個步驟使用不同的角色。例如，具有資料庫管理員許可的角色將會建立 Amazon RDS 資料庫，具有網路管理員許可的角色將設定 VPC 和安全群組。對於教學步驟，我們建議您繼續使用相同的身分。

如需如何在生產環境中設定許可的詳細資訊，請參閱 [的身分驗證和存取控制 AWS Secrets Manager](auth-and-access.md)。

## 先決條件
<a name="tutorials_rotation-single_step-setup"></a>

此教學的先決條件是 [設定 的交替使用者輪換 AWS Secrets Manager](tutorials_rotation-alternating.md)。請勿在第一個教學結束時清除資源。在該教學之後，您會擁有一個真實環境，具有 Amazon RDS 資料庫和包含資料庫管理員憑證的 Secrets Manager 秘密。您也有第二個秘密，其中包含資料庫使用者的憑證，但在本教學中不會使用該秘密。

此外，您還在 MySQL Workbench 中設定了一個連線，以便使用管理員憑證連線至資料庫。

## 步驟 1：建立 Amazon RDS 資料庫使用者
<a name="tutorials_rotation-single_step-dbuser"></a>

首先，您需要其憑證存放在秘密中的使用者。若要建立使用者，請使用存放在秘密中的管理員憑證，登入 Amazon RDS 資料庫。為簡單起見，在本教學中，您會建立具有資料庫完整許可的使用者。在生產環境中，這並不典型，建議您遵守最低權限原則。

**擷取管理員密碼**

1. 在 Amazon RDS 主控台中，導覽至您的資料庫。

1. 在 **Configuration** (組態) 索引標籤的 **Master Credentials ARN** (主要憑證 ARN) 中，選擇 **Manage in Secrets Manager** (在 Secrets Manager 中管理)。

   Secrets Manager 主控台隨即開啟。

1. 在秘密詳細資訊頁面上，選擇 **Retrieve secret value** (擷取秘密值)。

1. 密碼會顯示在 **Secret value** (秘密值) 區段。

**建立資料庫使用者**

1. 在 MySQL Workbench 中，在 **SecretsManagerTutorial** 連線上按一下滑鼠右鍵，然後選擇 **Edit Connection** (編輯連線)。

1. 在 **Manage Server Connections** (管理伺服器連線) 對話方塊，對於 **Username** (使用者名稱)，請輸入 **admin**，然後選擇 **Close** (關閉)。

1. 返回 MySQL Workbench 中，選擇 **SecretsManagerTutorial** 連線。

1. 輸入您從秘密中擷取的管理員密碼。

1.  在 MySQL Workbench 的 **Query** (查詢) 視窗中，輸入下列命令 (包括一個強密碼)，然後選擇 **Execute** (執行)。輪換函數使用 SELECT 測試更新的秘密，因此 必須至少**dbuser**具有該權限。

   ```
   CREATE USER 'dbuser'@'%' IDENTIFIED BY 'EXAMPLE-PASSWORD';
   GRANT SELECT ON myDB . * TO 'dbuser'@'%';
   ```

   在 **Output** (輸出) 視窗中，您會看到命令已成功。

## 步驟 2︰為資料庫使用者憑證建立秘密
<a name="tutorials_rotation-single_step-rotate"></a>

接著，您會建立秘密，存放剛剛所建立使用者的憑證，然後開啟自動輪換 (包括立即輪換)。Secrets Manager 會輪換秘密，這表示會以程式設計方式產生密碼，沒有人會看到此新密碼。立即開始輪換也可協助您判斷是否正確設定輪換。

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 選擇 **Store a new secret** (存放新機密)。

1. 在 **Choose secret type** (選擇秘密類型) 頁面上，執行下列動作：

   1. 對於 **Secret type** (秘密類型)，請選擇 **Credentials for Amazon RDS database** (Amazon RDS 資料庫的憑證)。

   1. 對於 **Credentials** (憑證)，請輸入使用者名稱 **dbuser** 以及您為使用 MySQL Workbench 建立的資料庫使用者輸入的密碼。

   1. 對於 **Database** (資料庫)，請選擇 **secretsmanagertutorialdb**。

   1. 選擇**下一步**。

1. 在 **Configure secret** (設定秘密) 頁面上，對於 **Secret name** (秘密名稱)，請輸入 **SecretsManagerTutorialDbuser**，然後選擇 **Next** (下一步)。

1. 在 **Configure rotation** (設定輪換) 頁面上，執行下列動作：

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

   1. 對於 **Rotation schedule** (輪換排程)，將排程設定為 **Days** (天數) ︰**2** **Duration** (持續時間)︰**2h**。保持選取 **Rotate immediately** (立即輪換)。

   1. 對於 **Rotation function** (輪換函數)，請選擇 **Create a rotation function** (建立輪換函數)，然後對於函數名稱，請輸入 **tutorial-single-user-rotation**。

   1. 對於**輪換策略**，選擇**單一使用者**。

   1. 選擇**下一步**。

1. 在 **Review** (檢閱) 頁面，選擇 **Store** (存放)。

   Secrets Manager 會返回秘密詳細資訊頁面。在頁面頂端，您可以看到輪換組態狀態。Secrets Manager 會使用 CloudFormation 建立資源，如 Lambda 輪換函數和執行 Lambda 函數的執行角色。在 CloudFormation 完成後，橫幅將變更為 **Secret scheduled for rotation** (排程輪換的秘密)。第一次輪換完成。

## 步驟 3：測試輪換密碼
<a name="tutorials_rotation-single_step-connect-again"></a>

在第一次秘密輪換之後，這可能需要幾秒鐘，您可以檢查秘密是否仍包含有效憑證。秘密中的密碼已變更為原始憑證。

**從秘密中擷取新密碼**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 選擇 **Secrets** (秘密)，然後選擇秘密 **SecretsManagerTutorialDbuser**。

1. 在 **Secret details** (秘密詳細資訊) 頁面，向下捲動並選擇 **Retrieve secret value** (擷取秘密值)。

1. 在 **Key/value** (鍵/值) 中，複製 **password** 的 **Secret value** (秘密值)。

**測試憑證**

1. 在 MySQL Workbench 中，在 **SecretsManagerTutorial** 連線上按一下滑鼠右鍵，然後選擇 **Edit Connection** (編輯連線)。

1. 在 **Manage Server Connections** (管理伺服器連線) 對話方塊，對於 **Username** (使用者名稱)，請輸入 **dbuser**，然後選擇 **Close** (關閉)。

1. 返回 MySQL Workbench 中，選擇 **SecretsManagerTutorial** 連線。

1. 在 **Open SSH Connection** (開啟 SSH 連線) 對話方塊中，對於 **Password** (密碼)，貼上從秘密擷取的密碼，然後選擇 **OK** (確定)。

   如果憑證有效，則 MySQL Workbench 會開啟資料庫的設計頁面。

## 步驟 4：清除資源
<a name="tutorials_rotation-single_step-cleanup"></a>

為避免潛在的費用，請刪除您在此教學中建立的秘密。如需說明，請參閱[刪除 AWS Secrets Manager 秘密](manage_delete-secret.md)。

若要清除在上一個教學中建立的資源，請參閱 [步驟 4：清除資源](tutorials_rotation-alternating.md#tutorials_rotation-alternating_step-cleanup)。

## 後續步驟
<a name="tutorials_rotation-single_step-next"></a>
+ 瞭解如何在應用程式中擷取秘密。請參閱 [從 取得秘密 AWS Secrets Manager](retrieving-secrets.md)。
+ 瞭解其他輪換排程。請參閱 [輪換排程](rotate-secrets_schedule.md)。