適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證

您可以使用 AWS Identity and Access Management (IAM) 資料庫身份驗證向資料庫執行個體進行驗證。IAM 資料庫身分驗證可搭配 MariaDB、MySQL 和 PostgreSQL 運作。透過此身分驗證方法,您連線至資料庫執行個體時不需要使用密碼。而是改用身分驗證字符。

身分驗證字符Amazon RDS 依請求而產生的唯一字元字串。使用 AWS 簽名版本 4 生成身份驗證令牌。每個字符的存留期為 15 分鐘。您不需要將使用者登入資料存放在資料庫,因為身分驗證是利用 IAM 在外部管理。您仍可使用標準資料庫身分驗證。字符僅用於身分驗證,並且在建立後不會影響工作階段。

IAM 資料庫身分驗證提供下列優點:

  • 使用 Secure Socket Layer (SSL) 或 Transport Layer Security (TLS) 來加密往返資料庫的網路流量。如需使用 SSL/TLS 搭配 Amazon RDS 的詳細資訊,請參閱 使用 SSL/TLS 加密與資料庫執行個體或叢集的連線

  • 您可以使用 IAM 來集中管理資料庫資源的存取,而不需要在每個資料庫執行個體上個別地管理存取。

  • 對於 Amazon EC2 上執行的應用程式,您可以使用 EC2 執行個體專用的設定檔登入資料 (而非密碼) 來存取資料庫,如此安全性更高。

通常,當應用程式每秒建立的連線少於 200 個,且您不希望直接以應用程式程式碼管理使用者名稱和密碼時,請考慮使用 IAM 資料庫身分驗證。

Amazon Web Services(AWS)JDBC 驅動程序支持 IAM 數據庫身份驗證。如需詳細資訊,請參閱 Amazon Web Services 中的 AWS IAM 身份驗證外掛程式 (AWS) JDBC 驅動程式 GitHub 存放庫

Amazon Web Services(AWS)Python 驅動程序支持 IAM 數據庫身份驗證。如需詳細資訊,請參閱 Amazon Web Services 中的 AWS IAM 身份驗證外掛程式 (AWS) Python 驅動程式 GitHub存放庫

區域和版本可用性

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需 Amazon RDS 和 IAM 資料庫身分驗證的版本和區域可用性的詳細資訊,請參閱 Amazon 中支援IAM資料庫身份驗證的區域和資料庫引擎 RDS

CLI 和開發套件支援

IAM 資料庫身份驗證適用AWS CLI於以下語言特定 AWS SDK:

IAM 資料庫身分驗證的限制

使用 IAM 資料庫身分驗證,會套用以下限制:

  • IAM 資料庫身份驗證會在下列案例中限制連線:

    • 您每秒使用身份驗證令牌超過 20 個連接,每個連接都由不同的 IAM 身份簽名。

    • 您使用不同的身份驗證令牌每秒超過 200 個連接。

    使用相同驗證 Token 的連線不會受到限制。我們建議您盡可能重複使用身份驗證令牌。

  • 目前,IAM 資料庫驗證不支援所有全域條件內容金鑰。

    如需有關全域條件內容索引鍵的詳細資訊,請參閱《IAM 使用者指南》中的 AWS 全域條件內容索引鍵

  • 對於 PostgreSQL,如果 IAM 角色 (rds_iam) 新增至使用者 (包括 RDS 主要使用者),則 IAM 身分驗證優先於密碼身分驗證,因此使用者必須以 IAM 使用者身分登入。

  • 對於 PostgreSQL,Amazon RDS 不支援同時啟用 IAM 和 Kerberos 身分驗證方法。

  • 對於 PostgreSQL,您無法使用 IAM 身分驗證來建立複寫連線。

  • 您無法使用自訂 Route 53 DNS 記錄,替代資料庫執行個體端點來產生身分驗證字符。

  • CloudWatch 並且 CloudTrail 不要記錄 IAM 身份驗證。這些服務不會追蹤授權 IAM 角色以啟用資料庫連線的 generate-db-auth-token API 呼叫。

適用於 IAM 資料庫身分驗證的建議

使用 IAM 資料庫身分驗證時,建議您採取以下做法:

  • 當您的應用程式每秒需要少於 200 個新的 IAM 資料庫驗證連線時,請使用 IAM 資料庫驗證。

    搭配 Amazon RDS 使用的資料庫引擎完全不限制每秒的身分驗證嘗試次數。不過,當您使用 IAM 資料庫身分驗證時,應用程式必須產生身分驗證字符。然後,應用程式會使用該字符來連接至資料庫執行個體。如果您超過每秒新連線數上限,IAM 資料庫身分驗證的額外負荷會導致連線調節。

    請考慮在應用程式中使用連線集區,以緩解持續建立連線的問題。如此可以減少 IAM 資料庫身分驗證的額外負荷,並允許您的應用程式重複使用現有連線。或者,請考慮針對這些使用案例採用 RDS Proxy。RDS Proxy需額外收費。請參閱 RDS Proxy 定價

  • IAM 資料庫身分驗證字符的大小取決於許多因素,包括 IAM 標籤的數量、IAM 服務政策、ARN 長度,以及其他 IAM 和資料庫屬性。此字符的最小大小一般約為 1 KB,但可以更大。因為此字符用作連線字串中的密碼,以使用 IAM 身分驗證連線至資料庫,所以您應該確保資料庫驅動程式 (例如 ODBC) 和/或任何工具不會限制或由於其大小而以其他方式截斷此字符。截斷的字符將導致資料庫和 IAM 執行的身分驗證失敗。

  • 如果您是在建立 IAM 資料庫身分驗證字符時使用臨時憑證,則在使用 IAM 資料庫身分驗證字符發出連線請求時,臨時憑證必須仍然有效。

不支援的 AWS 全域條件內容鍵

IAM 資料庫身份驗證不支援下列 AWS 全域條件內容金鑰子集。

  • aws:Referer

  • aws:SourceIp

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:UserAgent

  • aws:VpcSourceIp

如需詳細資訊,請參閱《IAM 使用者指南》中的AWS 全域條件內容金鑰