本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定交替使用者輪換 AWS Secrets Manager
在此教學中,您將學習如何為包含資料庫憑證的秘密設定交替使用者輪換。交替使用者輪換是一種輪換策略,在該策略中,Secrets Manager 會複製使用者,然後交替使用更新的使用者憑證。如果您需要秘密高可用性,此策略是不錯的選擇,因為其中一個交替使用者具有資料庫的最新憑證,而另一個則正在更新。如需詳細資訊,請參閱輪換策略:交替使用者。
若要設定交替使用者輪換,您需要兩個秘密︰
-
一個秘密包含您要輪換的憑證。
-
具有管理員憑證的第二個秘密。
此使用者具有複製第一個使用者並變更第一個使用者密碼的許可。在本教程中,您有 Amazon 為管理員用戶RDS創建此秘密。Amazon RDS 還管理管理員密碼輪換。如需詳細資訊,請參閱AWS Secrets Manager 機密的受管理輪換。
本教學的第一部分是設定一個真實的環境。為了向您展示輪換的運作方式,本教學使用範例 Amazon RDS My SQL 資料庫。為了VPC安全起見,數據庫位於限制入站 Internet 訪問的數據庫中。若要透過網際網路從本機電腦連線到資料庫,您可以使用防禦主機 (中的伺服器可VPC以連線至資料庫,但也允許從網際網路SSH連線)。本教學中的防禦主機是 Amazon EC2 執行個體,執行個體的安全群組會阻止其他類型的連線。
完成本教學後,建議您清除本教學的資源。請勿在生產環境中使用。
Secrets Manager 旋轉使用 AWS Lambda 功能來更新秘密和數據庫。如需有關使用 Lambda 函數成本的資訊,請參閱 定價。
許可
對於教學課程的必要條件,您需要管理權限 AWS 帳戶。 在生產環境中,最佳做法是針對每個步驟使用不同的角色。例如,具有資料庫管理員許可的角色會建立 Amazon RDS 資料庫,而具有網路管理員權限的角色則會設定VPC和安全群組。對於教學步驟,我們建議您繼續使用相同的身分。
如需如何在生產環境中設定許可的詳細資訊,請參閱 的身分驗證和存取控制 AWS Secrets Manager。
必要條件
在此教學課程中,您需執行下列項目:
前一個:Amazon VPC
在此步驟中,您可以創VPC建一個可以啟動 Amazon RDS 數據庫和 Amazon EC2 實例的。在後面的步驟中,您將使用計算機通過 Internet 連接到堡壘,然後連接到數據庫,因此您需要允許. VPC 要做到這一點,Amazon VPC 附加一個互聯網閘道到,VPC並在路由表中添加一條路由,以便將目的地外部的VPC流量發送到互聯網網關。
您可以VPC在中建立 Secrets Manager 端點和 Amazon RDS 端點。當您在稍後的步驟中設定自動輪換時,Secrets Manager 會在中建立 Lambda 輪換函數,以VPC便它可以存取資料庫。Lambda 輪換函數還調用 Secrets Manager 來更新秘密,並打電話RDS給 Amazon 獲取數據庫連接信息。透過在中建立端點VPC,您可以確保從 Lambda 函數到機 Secrets Manager 和 Amazon 的呼叫RDS不會離開 AWS 基礎設施。相反地,它們會繞線至中的端點VPC。
若要建立 VPC
在打開 Amazon VPC 控制台https://console.aws.amazon.com/vpc/
。 選擇 [建立] VPC。
在 [建立 VPC] 頁面上,選擇VPC其他項目。
在 Name tag auto-generation (自動產生名稱標籤) 的 Auto-generate (自動產生) 中,輸入
SecretsManagerTutorial
。對於DNS選項,請同時選擇
Enable DNS hostnames
和Enable DNS resolution
。選擇 [建立] VPC。
若要在中建立 Secrets Manager 端點 VPC
-
在 Amazon 主VPC控台的端點下,選擇建立端點。
-
在 Endpoint settings (端點設定) 中,針對 Name (名稱) 輸入
SecretsManagerTutorialEndpoint
。 -
在 [服務] 下,輸入
secretsmanager
以篩選清單,然後在您的 [ AWS 區域。 例如,在美國東部 (維吉尼亞北部),選擇com.amazonaws.us-east-1.secretsmanager
。 -
對於 VPC,選擇
vpc**** (SecretsManagerTutorial)
。 -
對於 Subnets (子網路),選取所有 Availability Zones (可用區域),然後針對每個選項選擇一個要包含的 Subnet ID (子網路 ID)。
-
對於 IP address type (IP 地址類型),請選擇
IPv4
。 -
對於 Security Groups (安全群組),請選擇預設的安全群組。
-
對於 Policy (政策),請選擇
Full access
。 -
選擇建立端點。
若 RDS Amazon 在 VPC
-
在 Amazon 主VPC控台的端點下,選擇建立端點。
-
在 Endpoint settings (端點設定) 中,針對 Name (名稱) 輸入
RDSTutorialEndpoint
。 -
在「服務」下,輸入
rds
以篩選清單,然後RDS在您的 AWS 區域。 例如,在美國東部 (維吉尼亞北部),選擇com.amazonaws.us-east-1.rds
。 -
對於 VPC,選擇
vpc**** (SecretsManagerTutorial)
。 -
對於 Subnets (子網路),選取所有 Availability Zones (可用區域),然後針對每個選項選擇一個要包含的 Subnet ID (子網路 ID)。
-
對於 IP address type (IP 地址類型),請選擇
IPv4
。 -
對於 Security Groups (安全群組),請選擇預設的安全群組。
-
對於 Policy (政策),請選擇
Full access
。 -
選擇建立端點。
前提 B:Amazon 實例 EC2
您在稍後步驟中建立的 Amazon RDS 資料庫將位於中VPC,因此若要存取它,您需要防禦主機。防禦主機也位於中VPC,但在稍後的步驟中,您會設定安全性群組,以允許您的本機電腦使用連線到防禦主機。SSH
建立防禦主機的EC2執行處理
在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/
。 -
選擇 Instances (執行個體),然後選擇 Launch Instances (啟動執行個體)。
-
在 Name and tags (名稱與標籤) 下,對於 Name (名稱),輸入
SecretsManagerTutorialInstance
。 -
在 Application and OS Images (應用程式和作業系統映像) 中,保留預設值
Amazon Linux 2 AMI (HMV) Kernel 5.10
。 -
在 Instance type (執行個體類型) 中,保留預設值
t2.micro
。 -
在 Key pair (金鑰對) 中,選擇 Create key pair (建立金鑰對)。
在 Create Key Pair (建立金鑰對) 對話方塊中,針對 Key pair name (金鑰對名稱) 輸入
SecretsManagerTutorialKeyPair
,然後選擇 Create key pair (建立金鑰對)。系統會自動下載該金鑰對。
-
在 Network settings (網路設定) 中,選擇 Edit (編輯),接著執行下列動作:
-
對於 VPC,選擇
vpc-**** SecretsManagerTutorial
。 -
在 Auto-assign Public IP (自動指派公有 IP) 中,選擇
Enable
。 -
對於 Firewall (防火牆),請選擇 Select existing security group (選取現有的安全群組)。
-
對於 Common security groups (常見安全群組),請選擇
default
。
-
-
選擇啟動執行個體。
前提 C:Amazon RDS 數據庫和管理員憑據的 Secrets Manager 秘密
在此步驟中,您會建立 Amazon RDS My SQL 資料庫並對其進行設定,以便 Amazon RDS 建立密碼以包含管理登入資料。然後,Amazon RDS 會自動為您管理管理員密鑰的輪換。如需詳細資訊,請參閱受管輪換。
在建立資料庫時,您會指定在上一個步驟中建立的堡壘主機。然後,Amazon RDS 設置安全組,以便數據庫和實例可以相互訪問。您會將規則新增至連接執行個體的安全群組,允許本機電腦也連線到該執行個體。
使用包含管理員登入RDS資料的 Secrets Manager 秘密建立 Amazon 資料庫
在 Amazon 主RDS控台中,選擇 [建立資料庫]。
在 Engine options (引擎選項) 區段中,針對 Engine type (引擎類型) 選擇
MySQL
。在 Templates (範本) 區段中,選擇
Free tier
。-
在 Settings (設定) 區段中,執行下列動作:
對於 DB instance identifier (資料庫執行個體識別符),請輸入
SecretsManagerTutorial
。在 [認證設定] 下,選取 [管理主要認證 AWS Secrets Manager.
-
在 [連線] 區段中,對於 [電腦資源],選擇 [Connect 線到電EC2腦資源],然後選擇 [EC2執行個體]
SecretsManagerTutorialInstance
。 選擇建立資料庫。
前置文件 D:允許本地計算機連接到實例 EC2
在此步驟中,您將在 Prereq B 中建立的EC2執行個體設定為允許本機電腦連線至該執行個體。為此,您可以編輯 Amazon 在 Prereq C 中RDS添加的安全組,以包含允許計算機 IP 地址連接的規則。SSH此規則允許您的本機電腦 (由您目前的 IP 位址識別) 透SSH過網際網路連線到防禦主機。
允許本機電腦連線至EC2執行個體
在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/
。 在EC2執行個體SecretsManagerTutorialInstance的 [安全性] 索引標籤的 [安全性群組] 下方,選擇
sg-*** (ec2-rds-X)
。在 Inbound Rules (傳入規則) 中,選擇 Edit inbound rules (編輯傳入規則)。
-
選擇 Add rule (新增規則),然後針對該規則執行下列動作:
針對 Type (類型),選擇
SSH
。針對 Source type (來源類型),選擇
My IP
。
步驟 1:創建一個 Amazon RDS 數據庫用戶
首先,您需要其憑證存放在秘密中的使用者。若要建立使用者,請使用管理員登入資料登入 Amazon RDS 資料庫。為簡單起見,在本教學中,您會建立具有資料庫完整許可的使用者。在生產環境中,這並不典型,建議您遵守最低權限原則。
若要連線到資料庫,請使用我的用SQL戶端工具。在本教學課程中,您會使用我的SQL工作台 (以應用程式GUI為基礎) 若要安裝我的SQL工作台,請參閱下載我的SQL工作台
若要連線至資料庫,請在 [我的SQL工作台] 中建立連線組態。對於配置,您需要來自 Amazon EC2 和 Amazon 的一些信息RDS。
在 SQL「我的工作台」中建立資料庫連線
-
在 [我的SQL工作台] 中,選擇 [我的SQL連線] 旁邊的 [(+)] 按鈕。
-
在 Setup New Connection (設定新連線) 對話方塊中,請執行下列動作:
-
對於 Connection Name (連線名稱),請輸入
SecretsManagerTutorial
。 -
對於 Connection Method (連線方法),請選擇
Standard TCP/IP over SSH
。 -
在 Parameters (參數) 索引標籤上,請執行下列動作︰
-
在SSH主機名稱中,輸入 Amazon EC2 執行個體的公有 IP 地址。
您可以選擇執行個體,在 Amazon EC2 主控台上找到 IP 位址SecretsManagerTutorialInstance。複製下公共的 IP 地址IPv4DNS。
-
對於SSH使用者名稱,輸入
ec2-user
。 -
針對金SSH鑰檔案,請選擇您在上一個先決條件中下載的 key pair 檔案 SecretsManagerTutorialKeyPair.pem。
-
在「我的SQL主機名稱」中,輸入 Amazon RDS 端點位址。
您可以在 Amazon RDS 控制台上找到端點地址,方法是選擇數據庫實例秘密教程程序數據庫。在 Endpoint (端點) 下複製地址。
-
對於 User name (使用者名稱),請輸入
admin
。
-
-
選擇確定。
-
擷取管理員密碼
在 Amazon 主RDS控台中,導覽至您的資料庫。
-
在組態索引標籤的主要認證下ARN,選擇在 Secrets Manager 中管理。
Secrets Manager 主控台隨即開啟。
在秘密詳細資訊頁面上,選擇 Retrieve secret value (擷取秘密值)。
密碼會顯示在 Secret value (秘密值) 區段。
建立資料庫使用者
-
在 [我的SQL工作台] 中,選擇連線SecretsManagerTutorial。
-
輸入您從秘密中擷取的管理員密碼。
-
在 [我的SQL工作台] 的 [查詢] 視窗中,輸入下列命令 (包括強式密碼),然後選擇 [執行]。輪換函數通過使用測試更新的密碼SELECT,因此
appuser
必須至少具有該權限。CREATE DATABASE myDB; CREATE USER 'appuser'@'%' IDENTIFIED BY '
EXAMPLE-PASSWORD
'; GRANT SELECT ON myDB . * TO 'appuser'@'%';在 Output (輸出) 視窗中,您會看到命令已成功。
步驟 2︰為使用者的憑證建立秘密
接著,您可以建立一個秘密來存放剛建立使用者的憑證。這就是您將要輪換的秘密。開啟自動輪換,並指示交替使用者策略,您可以選擇單獨的進階使用者秘密,該秘密具有變更第一個使用者密碼的許可。
開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/
。 -
選擇儲存新機密。
-
在 Choose secret type (選擇秘密類型) 頁面上,執行下列動作:
-
針對機密類型,選擇 Amazon RDS 資料庫的登入資料。
-
在「身份證明」中,輸入您為使用 My SQL Workbench 建立的資料庫使用者輸入的使用者名稱
appuser
和密碼。 -
對於 Database (資料庫),請選擇 secretsmanagertutorialdb。
選擇 Next (下一步)。
-
-
在 Configure secret (設定秘密) 頁面上,對於 Secret name (秘密名稱),請輸入
SecretsManagerTutorialAppuser
,然後選擇 Next (下一步)。 -
在 Configure rotation (設定輪換) 頁面上,執行下列動作:
-
開啟 Automatic rotation (自動輪換)。
-
對於 Rotation schedule (輪換排程),將排程設定為 Days (天數) ︰
2
Duration (持續時間)︰2h
。保持選取 Rotate immediately (立即輪換)。 -
對於 Rotation function (輪換函數),請選擇 Create a rotation function (建立輪換函數),然後對於函數名稱,請輸入
tutorial-alternating-users-rotation
。 -
對於輪換策略,選擇交替使用者,然後在管理員憑證秘密之下,選擇名為 rds!cluster... 的秘密,其具有描述,其中包括您在本教學
secretsmanagertutorial
中所建立資料庫的名稱,例如Secret associated with primary RDS DB instance: arn:aws:rds:
。Region
:AccountId
:db:secretsmanagertutorial -
選擇 Next (下一步)。
-
-
在 Review (檢閱) 頁面,選擇 Store (存放)。
Secrets Manager 會返回密碼詳細資料頁面。在頁面頂端,您可以看到輪換組態狀態。Secrets Manager 用 CloudFormation 來建立資源,例如 Lambda 輪換函數和執行 Lambda 函數的執行角色。 CloudFormation 完成後,橫幅會變更為排定輪換的「密碼」。第一次輪換完成。
步驟 3:測試輪換的秘密
既然已輪換秘密,您可以檢查秘密是否包含有效的新憑證。秘密中的密碼已變更為原始憑證。
從秘密中擷取新密碼
開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/
。 -
選擇 Secrets (秘密),然後選擇秘密
SecretsManagerTutorialAppuser
。 -
在 Secret details (秘密詳細資訊) 頁面,向下捲動並選擇 Retrieve secret value (擷取秘密值)。
-
在 Key/value (鍵/值) 中,複製
password
的 Secret value (秘密值)。
測試憑證
-
在 [我的SQL工作台] 中,在連線SecretsManagerTutorial上按一下滑鼠右鍵,然後選擇 [
-
在 Manage Server Connections (管理伺服器連線) 對話方塊,對於 Username (使用者名稱),請輸入
appuser
,然後選擇 Close (關閉)。 -
回到我的SQL工作台,選擇連接SecretsManagerTutorial。
-
在 [開啟SSH連線] 對話方塊中,對於 [密碼],貼上您從密碼擷取的密碼,然後選擇 [確定]。
如果認證有效,則 SQL「我的工作台」會開啟資料庫的設計頁面。
這表明秘密輪換是成功的。秘密中的憑證已更新,並且是連線至資料庫的有效密碼。
步驟 4:清除資源
如果您想要嘗試另一種輪換策略單一使用者輪換,請跳過清除資源並前往 設定單一使用者輪換 AWS Secrets Manager。
否則,若要避免潛在費用,並移除可存取網際網路的EC2執行個體,請刪除您在本教學課程中建立的下列資源及其先決條件:
-
Amazon RDS 數據庫實例。如需指示,請參閱 Amazon RDS 使用者指南中的刪除資料庫執行個體。
-
Amazon EC2 實例。如需指示,請參閱 Amazon EC2 使用者指南中的終止執行個體。
-
Secrets Manager 秘密
SecretsManagerTutorialAppuser
。如需說明,請參閱 刪除 AWS Secrets Manager 密碼。 -
Secrets Manager 端點。如需指示,請參閱中的刪除VPC端點 AWS PrivateLink 指南。
-
VPC端點。如需相關指示,請參閱「刪除您VPC的」AWS PrivateLink 指南。
後續步驟
-
瞭解如何在應用程式中擷取秘密。
-
瞭解其他輪換排程。