Conectar-se ao Babelfish via endpoint do PostgreSQL na porta do PostgreSQL
É possível utilizar logins de grupo criados por meio da porta do TDS para se conectar por meio da porta do PostgreSQL. Para se conectar por meio da porta do PostgreSQL, é necessário especificar o nome do usuário do AD no formato <ad_username@FQDN> das aplicações cliente do PostgreSQL. Não é possível usar o formato <DNS domain name\ad_username>.
No entanto, o PostgreSQL usa comparações com distinção de maiúsculas e minúsculas por padrão para nomes de usuário. Para que o Aurora PostgreSQL interprete os nomes de usuário do Kerberos sem fazer distinção de maiúsculas e minúsculas, é necessário definir o parâmetro krb_caseins_users como verdadeiro no grupo de parâmetros de cluster personalizado do Babelfish. Esse parâmetro é definido como falso por padrão. Para obter mais informações, consulte Configurar seu cluster de banco de dados do Aurora PostgreSQL para nomes de usuário que não fazem distinção de maiúsculas e minúsculas.
Diferenças de comportamento entre endpoints do T-SQL e do PostgreSQL quando um usuário do AD faz parte de vários grupos
Suponha que o usuário user1 do AD faça parte de dois grupos de segurança do AD [corp\accounts-group] e [corp\sales-group] e o administrador do banco de dados tenha definido o mapeamento do usuário da maneira a seguir.
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)
Se o usuário estiver se conectando por meio do endpoint do T-SQL, durante a autorização ele herdará os privilégios de todos os logins do T-SQL associados. Neste exemplo, user1 herdará a união de privilégios dos logins do grupo do T-SQL e os pesos serão ignorados. Isso está alinhado com o comportamento padrão do T-SQL.
No entanto, se o mesmo usuário se conectar por meio do endpoint do PostgreSQL, ele poderá herdar privilégios apenas de um login do T-SQL correspondente com o maior peso. Se os logins de dois grupos do T-SQL tiverem o mesmo peso, o usuário do AD herdará os privilégios do login do T-SQL correspondentes ao mapeamento que foi adicionado mais recentemente. Com relação ao PostgreSQL, a recomendação é especificar pesos que reflitam as permissões e privilégios relativos dos perfis individuais do banco de dados para evitar ambiguidade. No exemplo abaixo, user1 se conectou por meio do endpoint do PSQL e herdou somente privilégios de grupos de vendas.
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)