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이 2개의 AD 보안 그룹 [corp\accounts-group] 및 [corp\sales-group]의 일부이고 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 로그인에서만 권한을 상속할 수 있습니다. 두 T-SQL 그룹 로그인에 동일한 가중치가 할당되면 AD 사용자는 가장 최근에 추가된 매핑에 해당하는 T-SQL 로그인의 권한을 상속받습니다. PostgreSQL의 경우 모호성을 피하려면 개별 DB 역할의 상대적 허가/권한을 반영하는 가중치를 지정하는 것이 좋습니다. 아래 예제에서 user1은 PSQL 엔드포인트를 통해 연결했고 sales-groups 권한만 상속했습니다.
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)