

# Conectar-se ao Babelfish via endpoint do PostgreSQL na porta do PostgreSQL
<a name="babelfish-kerberos-securityad-connect-pgendpoint"></a>

É 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](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins.set-case-insentive). 

## Diferenças de comportamento entre endpoints do T-SQL e do PostgreSQL quando um usuário do AD faz parte de vários grupos
<a name="babelfish-kerberos-securityad-diff-tsql-pg"></a>

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