跳至內容

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

3 分的閱讀內容
0

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

請完成下列步驟:

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

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

請完成下列步驟:

  1. 開啟 IAM 主控台
  2. 在導覽頁面中,選擇 Roles (角色)。
  3. 選擇 Create role (建立角色)。
  4. Trusted entity type (受信任實體類型) 區段中,選取 AWS service (AWS 服務)。
  5. Use case (使用案例) 區段中,於 Service or user case (服務或使用者案例) 中,選擇 EC2
  6. 選擇 Next (下一步)。
  7. 使用搜尋列來尋找 IAM 政策。
  8. 選擇 Next (下一步)。
  9. Role name (角色名稱) 中,輸入 IAM 角色的名稱。
  10. 選擇 Create role (建立角色)。

將 IAM 角色附加至 Amazon EC2 執行個體

請完成下列步驟:

  1. 開啟 Amazon EC2 console (Amazon EC2 主控台)。
  2. 在導覽窗格中,選擇 Instances (執行個體),然後選取您用來連線至 Amazon RDS 的執行個體。
  3. 將 IAM 角色附加到 EC2 執行個體
  4. 使用 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 資料庫執行個體執行建立、刪除、修改、備份和復原所需的最低權限是什麼?