如何允許使用者使用其 IAM 憑證對 Amazon RDS for MySQL 資料庫執行個體進行身分驗證?
我想連接至正在執行 MySQL 的 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。我想使用 AWS Identity and Access Management (IAM) 而不是原生身分驗證方法。
簡短描述
使用者可以使用 IAM 使用者或角色憑證和身分驗證權杖連接至 Amazon RDS 資料庫執行個體或叢集。IAM 資料庫身分驗證比原生身分驗證方法更安全,原因如下:
- 系統使用 AWS 存取金鑰產生 IAM 資料庫身分驗證權杖。您無需儲存資料庫使用者憑證。
- 身分驗證權杖的生命週期為 15 分鐘,因此您無需強制執行密碼重設。
- IAM 資料庫身分驗證需要使用安全通訊端層 (SSL) 連線。所有傳入和傳出資料庫執行個體的資料都會加密。
- 如果您的應用程式在 Amazon Elastic Compute Cloud (Amazon EC2) 上執行,您可以使用 EC2 執行個體設定檔憑證存取資料庫。您不需要在執行個體上儲存資料庫密碼。
若要使用 IAM 角色設定 IAM 資料庫身分驗證,請執行下列步驟:
- 在 RDS 資料庫執行個體上啟用 IAM 資料庫身分驗證。
- 建立使用 AWS 身分驗證字符的資料庫使用者帳戶。
- 新增可將資料庫使用者映射至 IAM 角色的 IAM 政策。
- 建立允許 Amazon RDS 存取的 IAM 角色。
- 將 IAM 角色連接至 Amazon EC2 執行個體。
- 產生 AWS 身分驗證權杖以識別 IAM 角色。
- 下載 SSL 根憑證檔案或憑證套件檔案。
- 使用 IAM 角色憑證和身分驗證權杖連接至 RDS 資料庫執行個體。
- 使用 IAM 角色憑證和 SSL 憑證連接至 RDS 資料庫執行個體。
解決方案
在開始之前,您必須啟動支援 IAM 資料庫身分驗證的資料庫執行個體和 Amazon EC2 執行個體才能連接至資料庫。
在 RDS 資料庫執行個體上啟用 IAM 資料庫身分驗證
您可以使用 Amazon RDS 主控台、AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 開啟 IAM 資料庫身分驗證。如果您使用 Amazon RDS 主控台修改資料庫執行個體,請選擇立即套用以啟用 IAM 資料庫身分驗證。啟用 IAM 身分驗證需要短暫中斷。如需有關哪些修改需要中斷的詳細資訊,請參閱 Amazon RDS 資料庫執行個體。
注意: 如果您選擇立即套用,則系統也會立即套用任何待定的修改,而不是在維護時段套用。這可能會導致您的執行個體延長中斷時間。如需詳細資訊,請參閱使用「立即套用」設定。
建立使用 AWS 身分驗證權杖的資料庫使用者帳戶
1. 執行下列命令,以連接至資料庫執行個體或叢集端點。輸入主要密碼以登入。
$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
2. 建立使用 AWS 身分驗證權杖而非密碼的資料庫使用者帳戶:
CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
3. 依預設,資料庫使用者是在沒有任何權限的情況下建立的。當您執行 SHOW GRANTS FOR {dbusername} 時,這將顯示為 GRANT USAGE。若要要求使用者帳戶才能使用 SSL,請執行下列命令:
ALTER USER {dbusername} REQUIRE SSL;
4. 執行 exit 命令以關閉 MySQL。然後,從資料庫執行個體登出。
新增可將資料庫使用者映射至 IAM 角色的 IAM 政策
1. 開啟 IAM 主控台。
2. 從導覽窗格中選擇政策。
3. 選擇建立政策。
4. 輸入允許對所需使用者執行 rds-db:connect 動作的政策。如需有關建立此政策的詳細資訊,請參閱針對 IAM 資料庫存取建立和使用 IAM 政策。
注意:請確保使用資料庫資源的詳細資訊來編輯資源值,例如資料庫執行個體識別符和資料庫使用者名稱。
5. 選擇下一步: 標籤。
6. 選擇下一步: 檢閱。
7. 在名稱中,輸入政策名稱。
8. 選擇建立政策。
建立允許 Amazon RDS 存取的 IAM 角色
1. 開啟 IAM 主控台。
2. 從導覽窗格中選擇角色。
3. 選擇建立角色。
4. 選擇 AWS 服務。
5. 選擇 EC2。
6. 在選取您的使用案例中,選擇 EC2,然後選擇下一步: 授權。
7. 在搜尋列中,尋找您先前在「新增可映射資料庫使用者的 IAM 政策」區段中建立的 IAM 政策。
8. 選擇下一步: 標籤。
9. 選擇**下一步:**檢閱。
10. 在角色名稱中,輸入此 IAM 角色的名稱。
11. 選擇建立角色。
將 IAM 角色連接至 Amazon EC2 執行個體
1. 開啟 Amazon EC2 主控台。
2. 選擇您用來連接至 Amazon RDS 的 EC2 執行個體。
3. 將您新建立的 IAM 角色連接至 EC2 執行個體。
產生 AWS 身分驗證權杖以識別 IAM 角色
連接至 Amazon EC2 執行個體之後,執行下列 AWS CLI 命令以產生身分驗證權杖。
注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本。
$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
複製並儲存此身分驗證權杖供日後使用。權杖在建立後的 15 分鐘內到期。
或者,您可以使用 AWS SDK 產生權杖。
下載 SSL 根憑證檔案或憑證套件檔案
執行以下命令以下載適用於所有區域的根憑證:
$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
使用 IAM 角色憑證和身分驗證權杖連接至 RDS 資料庫執行個體
下載憑證檔案之後,執行下列其中一個命令,以使用 SSL 連接至資料庫執行個體。
注意: 如果您的應用程式不接受憑證鏈,請執行下列命令以下載憑證套件:
$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem RDSHOST="rdsmysql.abcdefghijk.us-west-2.rds.amazonaws.com" TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username {db username})"
視您使用的憑證 (RootCA 或套件) 而定,執行下列其中一個命令:
RootCA 命令:
mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-ca-2019-root.pem --enable-cleartext-plugin --user={db username} --password=$TOKEN
套件命令:
mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-combined-ca-bundle.pem --enable-cleartext-plugin --user={db username} --password=$TOKEN
**注意:**如果您使用的是 MariaDB 客戶端,則不需要使用 --enable-cleartext-plugin 選項。
使用 IAM 角色憑證和 SSL 憑證連接至 RDS 資料庫執行個體
下載憑證檔案之後,使用 SSL 連接至資料庫執行個體。如需詳細資訊,請參閱連接至執行 MySQL 資料庫引擎的資料庫執行個體。
相關資訊
相關內容
- 已提問 3 個月前lg...
- 已提問 9 個月前lg...
- 已提問 10 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前