我想連線至 Amazon Relational Database Service (Amazon RDS) for MySQL 資料庫執行個體。我想使用 AWS Identity and Access Management (IAM) 而不是原生驗證方法。
解決方法
**注意:**僅當您的用戶端和伺服器位於相同的虛擬私有雲端 (VPC) 且網路受信任時,才能使用未加密的 MySQL 連線。
**先決條件:**您必須啟動支援 IAM 資料庫驗證的資料庫執行個體和 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體才能連線至資料庫。
若要驗證 IAM 驗證所需的組態,請使用 AWSSupport-TroubleshootRDSIAMAuthentication AWS System Manager Automation 執行手冊。您也可以使用執行手冊來對 Amazon RDS 執行個體或 Amazon Aurora 叢集的連線問題進行疑難排解。
在 RDS 資料庫執行個體上啟用 IAM 資料庫驗證
您可以使用 Amazon RDS 主控台、AWS CLI 或 Amazon RDS API 啟用 IAM 資料庫驗證。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
如果您使用 Amazon RDS 主控台修改資料庫執行個體,請選擇 Apply Immediately (立即套用) 以啟用 IAM 資料庫驗證。如需詳細資訊,請參閱 Amazon RDS 資料庫執行個體。
**注意:**當您選擇 Apply Immediately (立即套用) 時,所有待處理的修改也會立即套用。如需詳細資訊,請參閱使用排程修改設定。
建立使用 AWS 驗證權杖的資料庫使用者帳戶
若要連線至資料庫執行個體或叢集端點,請執行下列命令:
mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
**注意:**使用您的主要密碼登入。
若要建立使用 IAM 驗證 (而非密碼) 的資料庫使用者帳戶,請執行下列命令:
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 (政策)。
- 選擇 Create policy (建立政策)。
- 輸入向所需使用者授予 rds-db:connect 動作的政策。如需詳細資訊,請參閱針對 IAM 資料庫存取建立和使用 IAM 政策。
注意:請務必在資源區段中輸入資料庫資源的詳細資訊。
- 選擇 Next (下一步)。
- 在名稱中,輸入政策名稱。
- 選擇 Create policy (建立政策)。
建立允許 Amazon RDS 存取的 IAM 角色
請完成下列步驟:
- 開啟 IAM 主控台。
- 在導覽頁面中,選擇 Roles (角色)。
- 選擇 Create role (建立角色)。
- 在 Trusted entity type (受信任實體類型) 區段中,選取 AWS service (AWS 服務)。
- 在 Use case (使用案例) 區段中,於 Service or user case (服務或使用者案例) 中,選擇 EC2。
- 選擇 Next (下一步)。
- 使用搜尋列來尋找 IAM 政策。
- 選擇 Next (下一步)。
- 在 Role name (角色名稱) 中,輸入 IAM 角色的名稱。
- 選擇 Create role (建立角色)。
將 IAM 角色附加至 Amazon EC2 執行個體
請完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在導覽窗格中,選擇 Instances (執行個體),然後選取您用來連線至 Amazon RDS 的執行個體。
- 將 IAM 角色附加到 EC2 執行個體。
- 使用 SSH 連線到 EC2 執行個體。
產生 AWS 驗證權杖以識別 IAM 角色
連線到 Amazon EC2 執行個體後,執行下列 generate-db-auth-token AWS CLI 命令來產生驗證權杖:
aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
複製並儲存驗證權杖以供稍後使用。或者,使用 AWS SDK for .NET 來產生權杖。
下載 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 資料庫執行個體執行建立、刪除、修改、備份和復原所需的最低權限是什麼?