Autenticación de bases de datos con Babelfish para Aurora PostgreSQL - Amazon Aurora

Autenticación de bases de datos con Babelfish para Aurora PostgreSQL

Babelfish para Aurora PostgreSQL admite dos formas de autenticar usuarios de bases de datos. La autenticación de contraseña está disponible de forma predeterminada para todos los clústeres de base de datos de Babelfish. También puede agregar autenticaciones de Kerberos para el mismo clúster de base de datos.

Autenticación de contraseña con Babelfish

Babelfish para Aurora PostgreSQL admite la autenticación de contraseñas. Las contraseñas se almacenan de forma cifrada en el disco. Para obtener más información acerca de la autenticación en un clúster de Aurora PostgreSQL, consulte Seguridad con Amazon Aurora PostgreSQL.

Es posible que se le soliciten credenciales cada vez que se conecte a Babelfish. Cualquier usuario migrado a Aurora PostgreSQL o creado en este puede utilizar las mismas credenciales tanto en el puerto de SQL Server como en el de PostgreSQL. Babelfish no aplica las políticas de contraseñas, pero recomendamos que haga lo siguiente:

  • Requiere una contraseña compleja que tenga al menos ocho (8) caracteres.

  • Aplique una política de vencimiento de contraseña.

Para revisar una lista completa de usuarios de base de datos, utilice el comando SELECT * FROM pg_user;.

Autenticación Kerberos con Babelfish

La versión 15.2 de Babelfish para Aurora PostgreSQL admite la autenticación en su clúster de base de datos mediante Kerberos. Este método le permite utilizar la autenticación de Microsoft Windows para autenticar a los usuarios cuando se conectan a su base de datos Babelfish. Para ello, primero debe configurar el clúster de base de datos para utilizar AWS Directory Service for Microsoft Active Directory para la autenticación Kerberos. Para obtener más información, consulte What is AWS Directory Service? ¿Qué es AWS Directory Service? en la Guía de administración de AWS Directory Service.

Configuración de la autenticación Kerberos

El clúster de base de datos de Babelfish para Aurora PostgreSQL se puede conectar mediante dos puertos diferentes, pero la configuración de la autenticación Kerberos es un proceso que se realiza una sola vez. Por lo tanto, primero debe configurar la autenticación Kerberos para su clúster de base de datos. Para obtener más información, consulte Configuración de autenticación Kerberos. Tras completar la configuración, asegúrese de poder conectarse con un cliente PostgreSQL mediante Kerberos. Para obtener más información, consulte Conexión a PostgreSQL con autenticación Kerberos.

Inicio de sesión y aprovisionamiento de usuarios en Babelfish

Los inicios de sesión de Windows creados desde el puerto Tabular Data Stream (TDS) se pueden usar con el puerto TDS o el puerto PostgreSQL. En primer lugar, el inicio de sesión que puede utilizar Kerberos para la autenticación debe aprovisionarse desde el puerto TDS antes de que los usuarios y las aplicaciones de T-SQL lo utilicen para conectarse a una base de datos Babelfish. Al crear inicios de sesión de Windows, los administradores pueden proporcionar el inicio de sesión mediante el nombre de dominio de DNS o el nombre de dominio de NetBIOS. Normalmente, el dominio de NetBIOS es el subdominio del nombre de dominio de DNS. Por ejemplo, si el nombre de dominio de DNS es CORP.EXAMPLE.COM, entonces el dominio de NetBIOS puede ser CORP. Si se proporciona el formato de nombre de dominio de NetBIOS para un inicio de sesión, debe existir una asignación al nombre de dominio de DNS.

Administración de la asignación del nombre de dominio de NetBIOS al de DNS

Para administrar las asignaciones entre el nombre de dominio de NetBIOS y el de DNS, Babelfish proporciona procedimientos almacenados del sistema para añadir, eliminar y truncar asignaciones. Solo un usuario con un rol sysadmin puede ejecutar estos procedimientos.

Para crear una asignación entre el nombre de dominio de NetBIOS y de DNS, utilice el procedimiento almacenado del sistema babelfish_add_domain_mapping_entry proporcionado por Babelfish. Ambos argumentos deben tener un valor válido y no ser NULL.

EXEC babelfish_add_domain_mapping_entry 'netbios_domain_name', 'fully_qualified_domain_name'

El siguiente ejemplo muestra cómo crear la asignación entre el nombre CORP de NetBIOS y el nombre de dominio de DNS CORP.EXAMPLE.COM.

EXEC babelfish_add_domain_mapping_entry 'corp', 'corp.example.com'

Para eliminar una entrada de asignación existente, utilice el procedimiento almacenado del sistema babelfish_remove_domain_mapping_entry.

EXEC babelfish_remove_domain_mapping_entry 'netbios_domain_name'

En el siguiente ejemplo, se muestra cómo eliminar la asignación del nombre CORP de NetBIOS.

EXEC babelfish_remove_domain_mapping_entry 'corp'

Para eliminar una entrada de asignación existente, utilice el procedimiento almacenado del sistema babelfish_remove_domain_mapping_entry:

EXEC babelfish_truncate_domain_mapping_table

Para ver todas las asignaciones entre los nombres de dominio de NetBIOS y DNS, utilice la siguiente consulta.

SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;

Administración de inicios de sesión

Cree de inicios de sesión

Conéctese a la base de datos a través del punto de conexión TDS utilizando un inicio de sesión que tenga los permisos correctos. Si no se ha creado ningún usuario de base de datos para el inicio de sesión, este se asigna al usuario invitado. Si el usuario invitado no está habilitado, se produce un error en el intento de inicio de sesión.

Cree un inicio de sesión de Windows con la siguiente consulta. La opción FROM WINDOWS permite la autenticación mediante Active Directory.

CREATE LOGIN login_name FROM WINDOWS [WITH DEFAULT_DATABASE=database]

En el siguiente ejemplo, se muestra la creación de un inicio de sesión para el usuario de Active Directory [corp\test1] con una base de datos predeterminada de db1.

CREATE LOGIN [corp\test1] FROM WINDOWS WITH DEFAULT_DATABASE=db1

En este ejemplo, se supone que hay una asignación entre el dominio CORP de NetBIOS y el nombre de dominio de DNS CORP.EXAMPLE.COM. Si no hay ninguna asignación, debe proporcionar el nombre del dominio de DNS [CORP.EXAMPLE.COM\test1].

nota

Los inicios de sesión basados en usuarios de Active Directory están limitados a nombres de menos de 21 caracteres.

Borre un inicio de sesión

Para borrar un inicio de sesión, utilice la misma sintaxis que para cualquier inicio de sesión, como se muestra en el siguiente ejemplo:

DROP LOGIN [DNS domain name\login]
Modifique un inicio de sesión

Para modificar un inicio de sesión, utilice la misma sintaxis que para cualquier inicio de sesión, como en el ejemplo siguiente:

ALTER LOGIN [DNS domain name\login] { ENABLE|DISABLE|WITH DEFAULT_DATABASE=[master] }

El comando ALTER LOGIN admite opciones limitadas para los inicios de sesión de Windows, entre las que se incluyen las siguientes:

  • DISABLE: para deshabilitar un inicio de sesión. No puede usar un inicio de sesión deshabilitado para la autenticación.

  • ENABLE: para habilitar un inicio de sesión deshabilitado.

  • DEFAULT_DATABASE: para cambiar la base de datos predeterminada de un inicio de sesión.

nota

Toda la administración de contraseñas se realiza mediante AWS Directory Service, por lo que el comando ALTER LOGIN no permite a los administradores de bases de datos cambiar ni establecer contraseñas para los inicios de sesión de Windows.

Conexión a Babelfish para Aurora PostgreSQL con la autenticación Kerberos

Por lo general, los usuarios de bases de datos que se autentican mediante Kerberos lo hacen desde sus máquinas cliente. Estas máquinas son miembros del dominio de Active Directory. Utilizan la autenticación de Windows desde sus aplicaciones cliente para acceder al servidor Babelfish para Aurora PostgreSQL en el puerto TDS.

Conexión a Babelfish para Aurora PostgreSQL en el puerto de PostgreSQL con la autenticación Kerberos

Puede utilizar inicios de sesión de Windows creados desde el puerto TDS o el puerto PostgreSQL. Sin embargo, PostgreSQL usa de forma predeterminada comparaciones que distinguen entre mayúsculas y minúsculas en los nombres de usuario. 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 en true en el grupo de parámetros personalizado del clúster de Babelfish. Este parámetro está establecido en false 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. Además, debe especificar el nombre de usuario de inicio de sesión en el formato <login@nombre de dominio de DNS> desde las aplicaciones cliente de PostgreSQL. No puede usar el formato <nombre de dominio de DNS\login>.

Errores frecuentes

No puede establecer una relación de confianza de bosque entre Microsoft Active Directory en las instalaciones y AWS Managed Microsoft AD. Para obtener más información, consulte Crear una relación de confianza. A continuación, debe conectarse mediante un punto de conexión específico para un dominio especializado en lugar de utilizar el dominio de Amazon rds.amazonaws.com en el punto de conexión del host. Si no utiliza el punto de conexión específico del dominio correcto, es posible que aparezca el siguiente error:

Error: “Authentication method "NTLMSSP" not supported (Microsoft SQL Server, Error: 514)"

Este error se produce cuando el cliente TDS no puede almacenar en caché el ticket de servicio de la URL del punto de conexión proporcionada. Para obtener más información, consulte Conexión con Kerberos.