View a markdown version of this page

Connessione a Babelfish tramite l’endpoint PostgreSQL sulla porta PostgreSQL - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connessione a Babelfish tramite l’endpoint PostgreSQL sulla porta PostgreSQL

È possibile utilizzare gli accessi di gruppo creati dalla porta TDS per connettersi anche tramite la porta PostgreSQL. Per connettersi tramite la porta PostgreSQL, è necessario specificare il nome utente AD nel formato <ad_username@FQDN> dalle applicazioni client PostgreSQL. Non è possibile utilizzare il formato <DNS domain name\ad_username>.

PostgreSQL utilizza per impostazione predefinita il confronto con distinzione tra maiuscole e minuscole per i nomi utente. Affinché Aurora PostgreSQL interpreti i nomi utente Kerberos senza distinzione tra maiuscole e minuscole, è necessario impostare il parametro krb_caseins_users su true nel gruppo di parametri del cluster Babelfish personalizzato. Questo parametro è impostato su false per impostazione predefinita. Per ulteriori informazioni, consulta Configurazione del cluster database Aurora PostgreSQL per nomi utente senza distinzione tra maiuscole e minuscole.

Differenze di comportamento tra gli endpoint T-SQL e PostgreSQL quando un utente AD fa parte di più gruppi

L’utente AD user1 fa parte di due gruppi di sicurezza AD [corp\accounts-group] e [corp\sales-group] e l’amministratore di database ha impostato la mappatura dell’utente nel modo seguente.

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 l’utente si connette dall’endpoint T-SQL, durante l’autorizzazione erediterà i privilegi da tutti gli accessi T-SQL associati. In questo esempio user1 erediterà l’unione dei privilegi da entrambi gli accessi di gruppo T-SQL e i pesi verranno ignorati. Questo approccio è in linea con il comportamento T-SQL standard.

Tuttavia, se lo stesso utente si connette dall’endpoint PostgreSQL, può ereditare i privilegi da un solo accesso T-SQL associato con il peso più elevato. Se ai due accessi di gruppo T-SQL è stato assegnato lo stesso peso, l’utente AD erediterà i privilegi dell’accesso T-SQL corrispondente alla mappatura aggiunta più di recente. Per PostgreSQL, la raccomandazione è di specificare pesi che riflettano il permissions/privileges relativo dei singoli ruoli del DB per evitare l'ambiguità. Nell’esempio seguente, user1 si è connesso tramite l’endpoint PSQL e ha ereditato solo i privilegi dei 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)