使用 Babelfish 進行 Kerberos 身分驗證 - Amazon Aurora

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

使用 Babelfish 進行 Kerberos 身分驗證

適用於 Aurora 的巴貝爾魚 SQL 15.2 版本支持使用 Kerberos 對您的數據庫集群進行身份驗證。此方法允許您使用 Microsoft Windows 驗證,在使用者連線至您的 Babelfish 資料庫時進行身分驗證。若要這麼做,您必須先設定要使用的資料庫叢集 AWS Directory Service for Microsoft Active Directory 用於 Kerberos 驗證。如需詳細資訊,請參閱什麼是 AWS Directory Service? AWS Directory Service 管理指南

設定 Kerberos 身分驗證

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

Babelfish 的登入和使用者佈建

從表格式資料串流 (TDS) 連接埠建立的 Windows 登入可與連接埠或 Postgre TDS SQL 連接埠搭配使用。首先,T 使用SQL者和應用程式使用連接埠連線至 Babelfish 資料庫之前,必須先從連接TDS埠佈建可使用 Kerberos 進行驗證的登入。建立 Windows 登入時,系統管理員可以使用網DNS域名稱或網路網BIOS域名稱來提供登入。一般而言,Net 網BIOS域是網域名稱的子網DNS域。例如,如果網DNS域名稱是CORP.EXAMPLE.COM,則網BIOS域可以是CORP。如果為登入提供網路網BIOS域名稱格式,則網DNS域名稱的對應必須存在。

管理網BIOS域名稱與網DNS域名稱的對應

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

要在網絡BIOS和DNS域名之間創建映射,請使用 Babelfish 提供的系統存儲過程。babelfish_add_domain_mapping_entry這兩個引數都必須有一個有效的值,而不是NULL。

EXEC babelfish_add_domain_mapping_entry 'netbios_domain_name', 'fully_qualified_domain_name'

下列範例會示範如何建立網路名稱與網DNS域BIOS名稱CORP之間的對應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'

下列範例顯示如何移除網路BIOS名稱的對應CORP。

EXEC babelfish_remove_domain_mapping_entry 'corp'

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

EXEC babelfish_truncate_domain_mapping_table

若要檢視 Net BIOS 和網DNS域名稱之間的所有對應,請使用下列查詢。

SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;

管理登入

建立登入

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

使用下列查詢建立 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

此範例假設 Net 網BIOS域CORP和網DNS域名稱之間有對應CORP。 EXAMPLE。 COM。如果沒有對應,則必須提供DNS網域名稱 [CORP. EXAMPLE。 COM\ 測試 1]。

注意

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

捨棄登入

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

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

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

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

此命ALTERLOGIN令支援有限的 Windows 登入選項,包括:

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

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

  • DEFAULT_ DATABASE — 變更登入的預設資料庫。

注意

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

使用 Kerberos 身份驗證連接到巴貝爾魚以獲得 Aurora 波斯特格雷 SQL

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

使用 Kerberos 身份驗證在 Postgre 端口SQL上連接到巴貝爾魚以獲得 Aurora 波斯特格雷 SQL

您可以使用從TDS端口創建的登錄與TDS端口或 Postgre SQL 端口。但是,Postgre 默認情況下對SQL用戶名使用區分大小寫的比較。若要讓 Aurora Postgre SQL 將 Kerberos 使用者名稱解譯為不區分大小寫,您必須將參數設定為true在自訂 Babel 叢集krb_caseins_users參數群組中。此參數預設為 false。如需詳細資訊,請參閱設定不區分大小寫的使用者名稱。此外,您必須從 Postgre 用戶端應用程式以 <login@ DNS 網域名稱 > 格式指定登入使用者名稱。SQL您不能使用 < DNS 域名\ 登錄 > 格式。

常見錯誤

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

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

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