使用 Babelfish for Aurora PostgreSQL 進行資料庫身分驗證 - Amazon Aurora

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

使用 Babelfish for Aurora PostgreSQL 進行資料庫身分驗證

Babelfish for Aurora PostgreSQL 支援兩種驗證資料庫使用者的方式。密碼身分驗證預設適用於所有 Babelfish 資料庫叢集。您也可以為相同的資料庫叢集新增 Kerberos 身分驗證。

使用 Babelfish 進行密碼身分驗證

Babelfish for Aurora PostgreSQL 支援密碼身分驗證。密碼以加密形式存放在磁碟上。如需 Aurora PostgreSQL 叢集上進行身分驗證的詳細資訊,請參閱 Amazon Aurora PostgreSQL 的安全性

每次連線至 Babelfish 時,可能會要求您輸入憑證。任何遷移至或建立於 Aurora PostgreSQL 的使用者,在 SQL Server 連接埠和 PostgreSQL 連接埠上都可以使用相同的憑證。Babelfish 不強制執行密碼政策,但建議您執行下列動作:

  • 需要長度至少 8 個字元的複雜密碼。

  • 強制執行密碼過期政策。

若要檢閱完整的資料庫使用者清單,請使用 SELECT * FROM pg_user; 命令。

使用 Babelfish 進行 Kerberos 身分驗證

Babelfish for Aurora PostgreSQL 15.2 版支援使用 Kerberos 的資料庫叢集身分驗證。此方法允許您使用 Microsoft Windows 驗證,在使用者連線至您的 Babelfish 資料庫時進行身分驗證。若要這麼做,您必須將資料庫叢集設定為使用 AWS Directory Service for Microsoft Active Directory 進行 Kerberos 身分驗證。如需詳細資訊,請參閱《AWS Directory Service 使用者指南》中的什麼是 AWS Directory Service?

設定 Kerberos 身分驗證

Babelfish for Aurora PostgreSQL 資料庫叢集可以使用兩個不同的連接埠進行連線,但 Kerberos 身分驗證設定是一次性程序。因此,您必須先為資料庫叢集設定 Kerberos 身分驗證。如需詳細資訊,請參閱設定 Kerberos 身分驗證。完成設定之後,請確認您可以使用 Kerberos 連線至 PostgreSQL 用戶端。如需詳細資訊,請參閱使用 Kerberos 身分驗證進行連線

Babelfish 的登入和使用者佈建

從表格式資料串流 (TDS) 連接埠建立的 Windows 登入可與 TDS 或 PostgreSQL 連接埠搭配使用。首先,可以使用 Kerberos 進行身分驗證的登入必須先從 TDS 連接埠佈建,才能讓 T-SQL 使用者和應用程式連線至 Babelfish 資料庫。建立 Windows 登入時,管理員可以使用 DNS 網域名稱或 NetBIOS 網域名稱來提供登入。一般而言,NetBIOS 網域是 DNS 網域名稱的子網域。例如,如果 DNS 網域名稱是 CORP.EXAMPLE.COM,則 NetBIOS 網域可以是 CORP。如果針對登入提供 NetBIOS 網域名稱格式,則 DNS 網域名稱必須存在映射。

管理 NetBIOS 網域名稱與 DNS 網域名稱的映射

為了管理 NetBIOS 網域名稱與 DNS 網域名稱之間的映射,Babelfish 提供系統預存程序來新增、移除和截斷這些映射。只有具 sysadmin 角色的使用者可以執行這些程序。

若要在 NetBIOS 與 DNS 網域名稱之間建立映射,請使用 Babelfish 提供的系統預存程序 babelfish_add_domain_mapping_entry。這兩個引數都必須有一個不是 NULL 的有效值。

EXEC babelfish_add_domain_mapping_entry 'netbios_domain_name', 'fully_qualified_domain_name'

下面範例說明如何在 NetBIOS 名稱 CORP 與 DNS 網域名稱 CORP.EXAMPLE.COM 之間建立映射:

EXEC babelfish_add_domain_mapping_entry 'corp', 'corp.example.com'

若要刪除現有的映射項目,請使用系統預存程序 babelfish_remove_domain_mapping_entry。

EXEC babelfish_remove_domain_mapping_entry 'netbios_domain_name'

下面範例說明如何移除 NetBIOS 名稱 CORP 的映射。

EXEC babelfish_remove_domain_mapping_entry 'corp'

若要移除所有現有的映射項目,請使用系統預存程序 babelfish_truncate_domain_mapping_table:

EXEC babelfish_truncate_domain_mapping_table

若要檢視 NetBIOS 與 DNS 網域名稱之間的所有映射,請使用下列查詢。

SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;

管理登入

建立登入

使用具正確權限的登入,透過 TDS 端點連線至資料庫。若使用者沒有為登入建立資料庫,則登入會映射至訪客使用者。若未啟用訪客使用者,則登入嘗試失敗。

使用下列查詢建立 Windows 登入。FROM WINDOWS 選項允許使用 Active Directory 進行驗證。

CREATE LOGIN login_name FROM WINDOWS [WITH DEFAULT_DATABASE=database]

下列範例顯示以 db1 的預設資料庫,建立 Active Directory 使用者 [corp\test1] 的登入。

CREATE LOGIN [corp\test1] FROM WINDOWS WITH DEFAULT_DATABASE=db1

此範例假設 NetBIOS 網域 CORP 與 DNS 網域名稱 CORP.EXAMPLE.COM 之間存在映射。如果沒有映射,則您必須提供 DNS 網域名稱 [CORP.EXAMPLE.COM\test1]。

注意

根據 Active Directory 使用者的登入會限制為少於 21 個字元的名稱。

捨棄登入

若要捨棄登入,請使用與任何登入相同的語法,如下範例所示:

DROP LOGIN [DNS domain name\login]
更改登入

若要更改登入,請使用與任何登入相同的語法,如下範例所示:

ALTER LOGIN [DNS domain name\login] { ENABLE|DISABLE|WITH DEFAULT_DATABASE=[master] }

ALTER LOGIN 命令支援有限的 Windows 登入選項,包括下列項目:

  • DISABLE – 停用登入。您不能使用已停用的登入進行驗證。

  • ENABLE – 啟用已停用的登入。

  • DEFAULT_DATABASE – 變更登入的預設資料庫。

注意

所有密碼管理都是透過 AWS Directory Service 執行,因此 ALTER LOGIN 命令不允許資料庫管理員變更或設定 Windows 登入的密碼。

使用 Kerberos 身分驗證連線至 Babelfish for Aurora PostgreSQL

一般而言,使用 Kerberos 進行驗證的資料庫使用者是從其用戶端機器執行這項操作。這些機器是 Active Directory 網域的一部份。他們使用其用戶端應用程式的 Windows 驗證來存取 TDS 連接埠上的 Babelfish for Aurora PostgreSQL 伺服器。

使用 Kerberos 身分驗證連線至 PostgreSQL 連接埠上的 Babelfish for Aurora PostgreSQL

您可以使用以 TDS 或 PostgreSQL 連接埠,從 TDS 連接埠建立的登入。但是根據預設,PostgreSQL 會針對使用者名稱使用區分大小寫的比較。若要讓 Aurora PostgreSQL 將 Kerberos 使用者名稱解譯為不區分大小寫,您必須在自訂 Babelfish 叢集參數群組中,將 krb_caseins_users 參數設為 true。此參數預設為 false。如需詳細資訊,請參閱設定不區分大小寫的使用者名稱。此外,您必須以 <login@DNS 網域名稱> 格式,從 PostgreSQL 用戶端應用程式指定登入使用者名稱。您不能使用 <DNS 網域名稱\登入> 格式。

常見錯誤

您可以在內部部署 Microsoft Active Directory 與 AWS Managed Microsoft AD 之間設定樹系信任關係。如需詳細資訊,請參閱建立信任關係。然後,您必須使用專門的網域特定端點進行連線,而非使用主機端點中的 Amazon 網域 rds.amazonaws.com。若不使用正確的網域特定端點,可能會發生下列錯誤:

Error: “Authentication method "NTLMSSP" not supported (Microsoft SQL Server, Error: 514)"

TDS 用戶端無法快取所提供端點 URL 的服務票證時,就會發生此錯誤。如需更多詳細資訊,請參閱使用 Kerberos 連線