

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

# 透過 PostgreSQL 連接埠上的 PostgreSQL 端點連線至 Babelfish
<a name="babelfish-kerberos-securityad-connect-pgendpoint"></a>

您也可以利用從 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 資料庫叢集](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins.set-case-insentive)。

## 當 AD 使用者屬於多個群組時，T-SQL 和 PostgreSQL 端點的行為差異
<a name="babelfish-kerberos-securityad-diff-tsql-pg"></a>

假設 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)
```