如何允許使用者透過其 Amazon IAM 憑證對 Amazon RDS MySQL 資料庫執行個體進行驗證?

3 分的閱讀內容
0

我想連線至 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 政策

請完成下列步驟:

  1. 開啟 IAM 主控台
  2. 在導覽窗格中,選擇 Policies (政策)。
  3. 選擇建立政策
  4. 輸入允許對所需使用者執行 rds-db:connect 動作的政策。如需有關建立此政策的詳細資訊,請參閱針對 IAM 資料庫存取建立和使用 IAM 政策
    注意:請務必在資源區段中輸入資料庫資源的詳細資訊。
  5. 選擇 Next (下一步)。
  6. 選擇 Next (下一步)。
  7. 名稱中,輸入政策名稱。
  8. 選擇建立政策

建立允許 Amazon RDS 存取的 IAM 角色

請完成下列步驟:

  1. 開啟 IAM 主控台
  2. 在導覽頁面中,選擇角色
  3. 受信任實體類型區段中,選擇建立角色
  4. 選擇 AWS 服務
  5. 使用案例區段中,對於服務或使用者案例,選擇EC2
  6. 對於使用案例,選擇 EC2,然後選擇下一步
  7. 在搜尋列中,尋找您先前在新增可映射資料庫使用者的 IAM 政策區段中建立的 IAM 政策。
  8. 選擇 Next (下一步)。
  9. 角色名稱中,輸入此 IAM 角色的名稱。
  10. 選擇建立角色

將 IAM 角色連接至 Amazon EC2 執行個體

請完成下列步驟:

  1. 開啟 Amazon EC2 主控台
  2. 選擇您用來連接至 Amazon RDS 的 EC2 執行個體。
  3. 將您新建立的 IAM 角色連接至 EC2 執行個體。
  4. 透過 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 資料庫執行個體執行建立、刪除、修改、備份和復原所需的最低權限是什麼?