View a markdown version of this page

Conexión a Babelfish a través del punto de conexión de PostgreSQL en el puerto PostgreSQL - Amazon Aurora

Conexión a Babelfish a través del punto de conexión de PostgreSQL en el puerto PostgreSQL

Puede utilizar inicios de sesión de grupo creados desde el puerto TDS para conectarse también a través del puerto PostgreSQL. Para conectarse a través del puerto PostgreSQL, debe especificar el nombre del usuario de AD en el formato <ad_username@FQDN> desde las aplicaciones cliente de PostgreSQL. No puede utilizar el formato <DNS domain name\ad_username>.

De forma predeterminada, PostgreSQL usa en los nombres de usuario comparaciones que distinguen entre mayúsculas y minúsculas. Para que Aurora PostgreSQL interprete los nombres de usuario de Kerberos sin distinción entre mayúsculas y minúsculas, debe configurar el parámetro krb_caseins_users como verdadero en el grupo de parámetros personalizado del clúster de Babelfish. Este parámetro está establecido en falso de forma predeterminada. Para obtener más información, consulte Configuración del clúster de base de datos de Aurora PostgreSQL para nombres de usuario que no distinguen mayúsculas de minúsculas.

Diferencias de comportamiento entre los puntos de conexión de T-SQL y PostgreSQL cuando un usuario de AD forma parte de varios grupos

Tenga en cuenta que user1 de AD forma parte de dos grupos de seguridad de AD ([corp\accounts-group] y [corp\sales-group]) y que el administrador de base de datos ha configurado la asignación de usuarios de la siguiente manera.

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)

Si el usuario se conecta desde el punto de conexión de T-SQL, heredará durante la autorización los privilegios de todos los inicios de sesión de T-SQL asociados. En este ejemplo, user1 heredará la unión de privilegios del inicio de sesión de ambos grupos T-SQL y se ignorarán las ponderaciones. Esto está en consonancia con el comportamiento estándar de T-SQL.

Sin embargo, si el mismo usuario se conecta desde el punto de conexión de PostgreSQL, solo puede heredar los privilegios de un inicio de sesión de T-SQL asociado, el que tenga la ponderación más alta. Si a los dos inicios de sesión de grupos T-SQL se les asignase la misma ponderación, el usuario de AD heredaría los privilegios del inicio de sesión T-SQL correspondiente a la asignación que se haya efectuado más recientemente. Para PostgreSQL, lo recomendable es especificar ponderaciones que reflejen los permisos y privilegios relativos de los roles de base de datos individuales, a fin de evitar la ambigüedad. En el siguiente ejemplo, user1 se ha conectado a través del punto de conexión de PSQL y ha heredado solo los privilegios de los grupos de ventas.

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)