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 DB クラスターの大文字と小文字を区別しないユーザー名を設定する」を参照してください。
AD ユーザーが複数のグループに属する場合の T-SQL エンドポイントと PostgreSQL エンドポイントの動作の違い
AD ユーザー user1 は、[corp\accounts-group] と [corp\sales-group] の 2 つの AD セキュリティグループの一部であり、DB 管理者がユーザーマッピングを次のように設定しているとします。
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 ログインのうち、重みが最も高いものからのみ権限を継承できます。2 つの T-SQL グループログインに同じ重みが割り当てられた場合、AD ユーザーは、最後に追加されたマッピングに対応する T-SQL ログインの権限を継承します。あいまいさを避けるために、個々の DB ロールの相対的なアクセス許可/権限を反映する重みを指定することをお勧めします。次の例では、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)