我想連線至 Amazon Relational Database Service (Amazon RDS) for MySQL 資料庫執行個體。我想使用 AWS Identity and Access Management (IAM) 而不是原生身分驗證方法。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshoot AWS CLI errors。此外,請確認您使用的是最新的 AWS CLI 版本。
要連線至 Amazon RDS 資料庫執行個體或叢集,請使用 IAM 使用者或角色憑證以及驗證權仗。
**注意:**僅當您的用戶端和伺服器位於相同的虛擬私有雲端 (VPC) 且網路受信任時,才能使用未加密的 MySQL 連線。
先決條件
您必須啟動支援 IAM 資料庫身分驗證的資料庫執行個體和 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體才能連接至資料庫。
若要驗證 IAM 驗證所需的組態,請使用 AWSSupport-TroubleshootRDSIAMAuthentication AWS System Manager Automation 執行手冊。您也可以使用執行手冊來疑難排解 Amazon RDS 執行個體或 Aurora 叢集的連線問題。
在 RDS 資料庫執行個體上啟用 IAM 資料庫身分驗證
您可以使用 Amazon RDS 主控台、AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 開啟 IAM 資料庫身分驗證。如果您使用 Amazon RDS 主控台修改資料庫執行個體,請選擇立即套用以啟用 IAM 資料庫身分驗證。如需詳細資訊,請參閱 Amazon RDS 資料庫執行個體。
注意: 如果您選擇立即套用,則所有待處理的修改也會立即套用。如需詳細資訊,請參閱排程修改設定。
建立使用 AWS 身分驗證權杖的資料庫使用者帳戶
要連線至資料庫執行個體或叢集端點,請執行下列命令。
$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
注意: 使用您的主要密碼登入。
要建立使用 AWS 身分驗證權杖而非密碼的資料庫使用者帳戶,請執行下列命令:
CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
依預設,資料庫使用者沒有權限。當您執行 SHOW GRANTS FOR {dbusername} 時,資料庫使用者將顯示為 GRANT USAGE。若要要求使用者帳戶透過 SSL 連線,請執行下列命令:
ALTER USER {dbusername} REQUIRE SSL;
要關閉 MySQL,請執行 exit 命令。然後,從資料庫執行個體登出。
新增可將資料庫使用者映射至 IAM 角色的 IAM 政策
請完成下列步驟:
- 開啟 IAM 主控台。
- 在導覽窗格中,選擇 Policies (政策)。
- 選擇建立政策。
- 輸入允許對所需使用者執行 rds-db:connect 動作的政策。如需有關建立此政策的詳細資訊,請參閱針對 IAM 資料庫存取建立和使用 IAM 政策。
注意:請務必在資源區段中輸入資料庫資源的詳細資訊。
- 選擇 Next (下一步)。
- 選擇 Next (下一步)。
- 在名稱中,輸入政策名稱。
- 選擇建立政策。
建立允許 Amazon RDS 存取的 IAM 角色
請完成下列步驟:
- 開啟 IAM 主控台。
- 在導覽頁面中,選擇角色。
- 在受信任實體類型區段中,選擇建立角色。
- 選擇 AWS 服務。
- 在 使用案例區段中,對於服務或使用者案例,選擇EC2。
- 對於使用案例,選擇 EC2,然後選擇下一步。
- 在搜尋列中,尋找您先前在新增可映射資料庫使用者的 IAM 政策區段中建立的 IAM 政策。
- 選擇 Next (下一步)。
- 在角色名稱中,輸入此 IAM 角色的名稱。
- 選擇建立角色。
將 IAM 角色連接至 Amazon EC2 執行個體
請完成下列步驟:
- 開啟 Amazon EC2 主控台。
- 選擇您用來連接至 Amazon RDS 的 EC2 執行個體。
- 將您新建立的 IAM 角色連接至 EC2 執行個體。
- 透過 SSH 連線至您的 EC2 執行個體。
產生 AWS 身分驗證權杖以識別 IAM 角色
連接至 Amazon EC2 執行個體之後,執行下列 AWS CLI generate-db-auth-token 命令以產生身分驗證權杖:
$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱 Troubleshoot AWS CLI errors。此外,請確認您使用的是最新的 AWS CLI 版本。
複製並儲存此身分驗證權杖供日後使用。或者,使用適用於 .NET 的 AWS SDK 來產生權杖。
下載 SSL 根憑證套件檔案
若要下載所有 AWS 區域的憑證套件,請參閱所有 AWS 區域的憑證套件。
使用 IAM 角色憑證和驗證權杖連接至 RDS 資料庫執行個體
下載憑證檔案之後,執行下列命令,以透過 SSL 連接至資料庫執行個體:
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})"
mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN
注意: 如果您使用 MariaDB 客戶端,則不包括 --enable-cleartext-plugin 選項。
使用 IAM 角色憑證和 SSL 憑證連線至 RDS 資料庫執行個體
下載憑證檔案之後,透過 SSL 連線至資料庫執行個體。
相關資訊
適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證
使用者對 Amazon RDS 資料庫執行個體執行建立、刪除、修改、備份和復原所需的最低權限是什麼?