本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 PostgreSQL 連接埠上的 PostgreSQL 端點連線至 Babelfish
您也可以利用從 TDS 連接埠建立的群組登入,透過 PostgreSQL 連接埠進行連線。若要透過 PostgreSQL 連接埠進行連線,您需要從 PostgreSQL 用戶端應用程式以格式 <ad_username@FQDN> 指定 AD 使用者名稱。您不能使用 <DNS domain name\ad_username> 格式。
根據預設,PostgreSQL 會針對使用者名稱使用區分大小寫的比較。若要讓 Aurora PostgreSQL 將 Kerberos 使用者名稱解譯為不區分大小寫,您必須在自訂 Babelfish 叢集參數群組中,將 krb_caseins_users 參數設為 true。此參數預設為 false。如需詳細資訊,請參閱針對不區分大小寫的使用者名稱設定 Aurora PostgreSQL 資料庫叢集。
當 AD 使用者屬於多個群組時,T-SQL 和 PostgreSQL 端點的行為差異
假設 AD 使用者 user1 是兩個 AD 安全群組 [corp\accounts-group] 和 [corp\sales-group] 的一部分,且資料庫管理員已透過下列方式設定使用者對應。
postgres=> select * from pgadmap_read_mapping();ad_sid | pg_role | weight | ad_grp -------------+---------------------------------+--------+--------------- S-1-5-67-980 | accounts-group@CORP.EXAMPLE.COM | 7 | accounts-group S-1-2-34-560 | sales-group@CORP.EXAMPLE.COM | 10 | sales-group (2 rows)
如果使用者從 T-SQL 端點連線,則在授權期間,其會繼承所有相關聯 T-SQL 登入的權限。在此範例中,user1 將從 T-SQL 群組登入繼承權限聯集,且權重將遭到忽略。這符合標準 T-SQL 行為。
不過,如果相同的使用者從 PostgreSQL 端點進行連線,則只能從一個具有最高權重的相關聯 T-SQL 登入繼承權限。如果兩個 T-SQL 群組登入受指派相同的權重,則 AD 使用者將繼承與最近新增的對應相對應的 T-SQL 登入權限。對於 PostgreSQL,建議指定反映個別資料庫角色相對許可/權限的權重,以避免模棱兩可的情況。在下列範例中,user1 透過 PSQL 端點連線,並僅繼承銷售群組權限。
babelfish_db=> select session_user, current_user;session_user | current_user ------------------------------+--------------------------- sales-group@CORP.EXAMPLE.COM | sales-group@CORP.EXAMPLE.COM (1 row)babelfish_db=> select principal, gss_authenticated from pg_stat_gssapi where pid = pg_backend_pid();principal | gss_authenticated ------------------------+------------------- user1@CORP.EXAMPLE.COM | t (1 row)