Uso de la autenticación de Kerberos de Amazon RDS para Microsoft SQL Server
Puede usar la autenticación Kerberos para autenticar a los usuarios cuando estos se conecten a su instancia de base de datos de MySQL. La instancia de base de datos funciona con AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) para habilitar la autenticación Kerberos. Cuando los usuarios se autentican con una instancia de base de datos MySQL unida al dominio de confianza, las solicitudes de autenticación se reenvían. Las solicitudes reenviadas van al directorio de dominio con el que crea AWS Directory Service.
Mantener todas las credenciales en el mismo directorio puede ahorrarle tiempo y esfuerzo. Con este método, dispone de un lugar centralizado para almacenar y administrar credenciales de numerosas instancias de bases de datos. El uso de un directorio también puede mejorar su perfil de seguridad general.
Disponibilidad en regiones y versiones
La disponibilidad de las características varía según las versiones específicas de cada motor de base de datos y entre Regiones de AWS. Para obtener más información sobre la disponibilidad en versiones y regiones de Amazon RDS con autenticación Kerberos, consulte Regiones y motores de base de datos admitidos para autenticación de Kerberos en Amazon RDS.
Información general sobre la configuración de la autenticación Kerberos para instancias de base de datos MySQL
Para configurar la autenticación Kerberos para una instancia de base de datos de MySQL, complete los siguientes pasos generales, que se describen con más detalle más adelante:
-
Utilice AWS Managed Microsoft AD para crear un directorio de AWS Managed Microsoft AD. Puede utilizar la AWS Management Console, la AWS CLI o AWS Directory Service para crear el directorio. Para obtener más detalles sobre cómo hacerlo, consulte Creación de su directorio de AWS Managed Microsoft AD en la guía de administración de AWS Directory Service.
-
Cree un rol de AWS Identity and Access Management (IAM) que utilice la política de IAM administrada
AmazonRDSDirectoryServiceAccess
. El rol permite a Amazon RDS realizar llamadas al directorio.Para que el rol permita el acceso, el punto de conexión AWS Security Token Service (AWS STS) debe activarse en la Región de AWS para su cuenta de AWS. Los puntos de conexión de AWS STS están activos de forma predeterminada en todas Regiones de AWS y puede usarlos sin ninguna acción posterior. Para obtener más información, consulte Activación y desactivación de AWS STS en una región de Región de AWS en la Guía del usuario de IAM.
-
Cree y configure usuarios en el directorio de AWS Managed Microsoft AD usando las herramientas de Microsoft Active Directory. Para obtener más información sobre la creación de usuarios en su Active Directory, consulte Administrar usuarios y grupos en AWS Managed Microsoft AD en la guía de administración de AWS Directory Service.
-
Cree o modifique una instancia de base de datos MySQL. Si utiliza la CLI o la API de RDS en la solicitud de creación, especifique un identificador de dominio con el parámetro
Domain
. Utilice el identificadord-*
que se ha generado al crear el directorio y el nombre del rol que ha creado.Si modifica una instancia de base de datos MySQL ya existente para utilizar la autenticación Kerberos, establezca los parámetros de dominio y rol de IAM para la instancia de base de datos. Busque la instancia de base de datos en la misma VPC que el directorio de dominio.
-
Use las credenciales de usuario maestro de Amazon RDS para conectarse a la instancia de base de datos de MySQL. Cree el usuario en MySQL; para ello use la cláusula de
CREATE USER
IDENTIFIED WITH 'auth_pam'
. Los usuarios que cree de esta manera pueden iniciar sesión en la instancia de base de datos MySQL con la autenticación Kerberos.
Configuración de la autenticación Kerberos para instancias de base de datos MySQL
Utilice AWS Managed Microsoft AD para configurar la autenticación Kerberos para una instancia de base de datos MySQL. Para configurar la autenticación Kerberos, siga los pasos que se indican a continuación:
Paso 1: crear un directorio con AWS Managed Microsoft AD
AWS Directory Service crea un directorio de Active Directory completamente administrado en la nube de AWS. Cuando crea un directorio de AWS Managed Microsoft AD, AWS Directory Service crea dos controladores de dominio y servidores del sistema de nombres de dominio (DNS) en su nombre. Los servidores de directorios se crean en diferentes subredes de una VPC. Esta redundancia ayuda a garantizar que su directorio permanezca accesible incluso si ocurre un error.
Cuando crea un directorio de AWS Managed Microsoft AD, AWS Directory Service realiza en su nombre las siguientes tareas:
-
Configurar un Active Directory dentro de la VPC.
-
Crea una cuenta de administrador para el directorio con el nombre de usuario Admin y la contraseña especificada. Esta cuenta le permite administrar el directorio.
nota
Asegúrese de guardar esta contraseña. AWS Directory Service no la almacena. Es posible restablecerla, pero no recuperarla.
-
Crea un grupo de seguridad para los controladores del directorio.
Al lanzar AWS Managed Microsoft AD, AWS crea una unidad organizativa (OU) que contiene todos los objetos del directorio. Esta unidad organizativa tiene el nombre de NetBIOS que escribió al crear el directorio y se encuentra en la raíz del dominio. La raíz del dominio es propiedad de , que también se encarga de su administració AWS.
La cuenta de administrador que se creó con el directorio AWS Managed Microsoft AD dispone de permisos para realizar las actividades administrativas más habituales para la unidad organizativa:
-
Crear, actualizar o eliminar usuarios
-
Añadir recursos a su dominio, como servidores de archivos o de impresión y, a continuación, asignar permisos para esos recursos a usuarios dentro de la unidad organizativa
-
Crear unidades organizativas y contenedores adicionales
-
Delegar autoridad
-
Restaurar objetos eliminados de la papelera de reciclaje de Active Directory
-
Ejecutar módulos de AD y DNS de Windows PowerShell en el servicio web de Active Directory
La cuenta de administrador también tiene derechos para realizar las siguientes actividades en todo el dominio:
-
Administrar configuraciones DNS (agregar, quitar o actualizar registros, zonas y programas de envío).
-
Ver logs de eventos DNS
-
Ver logs de eventos de seguridad
Para crear un directorio con AWS Managed Microsoft AD
-
Inicie sesión en AWS Management Console y abra la consola de AWS Directory Service en https://console.aws.amazon.com/directoryservicev2/
. -
En el panel de navegación, elija Directories (Directorios) y, a continuación, Set up Directory (Configurar directorio).
-
Elija AWS Managed Microsoft AD. AWS Managed Microsoft AD es la única opción que puede usar actualmente con Amazon RDS.
-
Introduzca la información siguiente:
- Nombre de DNS del directorio
-
El nombre completo del directorio, como por ejemplo
corp.example.com
. - Nombre NetBIOS del directorio
-
El nombre abreviado del directorio, como
CORP
. - Descripción del directorio
-
(Opcional) Descripción del directorio.
- Contraseña de administrador
-
Contraseña del administrador del directorio. El proceso de creación de directorios crea una cuenta de administrador con el nombre de usuario Admin y esta contraseña.
La contraseña del administrador del directorio no puede contener la palabra "admin". La contraseña distingue entre mayúsculas y minúsculas y debe tener un mínimo de 864 caracteres y un máximo de 64. También debe contener al menos un carácter de tres de las siguientes categorías:
-
Letras minúsculas (a–z)
-
Letras mayúsculas (A–Z)
-
Números (0–9)
-
Caracteres no alfanuméricos (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)
-
- Confirm password
-
Vuelva a escribir la contraseña de administrador.
-
Elija Siguiente.
-
Escriba la siguiente información en la sección Networking (Redes) y luego seleccione Next (Siguiente):
- VPC
-
VPC del directorio. Cree la instancia de base de datos MySQL en esta misma VPC.
- Subredes
-
Subredes de los servidores del directorio. Las dos subredes deben estar en diferentes zonas de disponibilidad.
-
Revise la información del directorio y haga los cambios necesarios. Cuando la información sea correcta, seleccione Create directory (Crear directorio).
La creación del directorio tarda varios minutos. Cuando se haya creado correctamente, el valor de Status (Estado) cambiará a Active (Activo).
Para consultar información de su directorio, seleccione el nombre del directorio en la descripción de directorios. Tenga en cuenta el valor de Directory ID (ID de directorio) porque necesitará este valor cuando cree o modifique su instancia de base de datos MySQL.
Paso 2: crear el rol de IAM que usará Amazon RDS
Para que Amazon RDS llame a AWS Directory Service en su nombre, se precisa un rol de IAM que utilice la política de IAM administrada AmazonRDSDirectoryServiceAccess
. Este rol permite a Amazon RDS realizar llamadas a AWS Directory Service.
Cuando se crea una instancia de base de datos con la AWS Management Console y el usuario de la consola tiene el permiso iam:CreateRole
, la consola crea este rol automáticamente. En este caso, el nombre del rol es rds-directoryservice-kerberos-access-role
. De no ser así, debe crear el rol de IAM manualmente. Cuando cree este rol de IAM, elija Directory Service
y asocie la política administrada de AWS AmazonRDSDirectoryServiceAccess
a este.
A fin de obtener más información acerca de la creación de roles de IAM para un servicio, consulte Creación de un rol para delegar permisos a un servicio de AWS en la guía del usuario de IAM.
nota
El rol de IAM utilizado para la autenticación de Windows en RDS para SQL Server no se puede usar en RDS para MySQL.
Opcionalmente, puede crear políticas con los permisos requeridos en vez de utilizar la política de IAM administrad AmazonRDSDirectoryServiceAccess
. En este caso, el rol de IAM debe tener la siguiente política de confianza de IAM.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
El rol debe también tener la siguiente política de rol de IAM.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }
Paso 3: crear y configurar usuarios
Puede crear usuarios con la herramienta Usuarios y equipos de Active Directory. Esta herramienta forma parte de las herramientas Active Directory Domain Services y Active Directory Lightweight Directory Services. Los usuarios representan a las personas físicas o entidades que tienen acceso al directorio.
Para crear usuarios en un directorio de AWS Directory Service, tiene que estar conectado a una instancia de Amazon EC2 basada en Microsoft Windows. Esta instancia tiene que ser miembro del directorio de AWS Directory Service y debe haber iniciado sesión como usuario con privilegios para crear usuarios. Para obtener más información, consulte Administrar usuarios y grupos de AWS Managed Microsoft AD en la Guía de administración de AWS Directory Service.
Paso 4: crear o modificar una instancia de base de datos MySQL
Cree o modifique una instancia de base de datos MySQL para usarla con su directorio. Puede utilizar la consola, CLI, o la API de RDS para asociar una instancia de base de datos con un directorio. Puede hacerlo de una de las siguientes formas:
-
Cree una nueva instancia de base de datos de MySQL mediante la consola, el comando de la CLI create-db-instance o la operación CreateDBInstance de la API de RDS.
Para obtener instrucciones, consulte Creación de una instancia de base de datos de Amazon RDS.
-
Modifique una instancia de base de datos de MySQL existente mediante la consola, el comando de la CLI modify-db-instance o la operación ModifyDBInstance de la API de RDS.
Para obtener instrucciones, consulte Modificación de una instancia de base de datos de Amazon RDS.
-
Restaure una instancia de base de datos de MySQL a partir de una instantánea de base de datos mediante la consola, el comando de la CLI restore-db-instance-from-db-snapshot o la operación RestoreDBInstanceFromDBSnapshot de la API de RDS.
Para obtener instrucciones, consulte Restauración a una instancia de base de datos.
-
Restaure una instancia de base de datos de MySQL a partir de un punto en el tiempo mediante la consola, el comando de CLI la restore-db-instance-to-point-in-time o la operación RestoreDBInstanceToPointInTime de la API de RDS.
Para obtener instrucciones, consulte Restauración de una instancia de base de datos a un momento especificado para Amazon RDS.
La autenticación Kerberos solo es compatible con instancias de base de datos de MySQL en una VPC. La instancia de DB puede estar en la misma VPC que el directorio o en una VPC diferente. La instancia de base de datos debe usar un grupo de seguridad que permita la salida dentro de la VPC del directorio, de modo que la instancia de base de datos pueda comunicarse con el directorio.
Si utiliza la consola para crear, modificar o restaurar una instancia de base de datos, elija Password and Kerberos authentication (Contraseña y autenticación de Kerberos) en la sección Database authentication (Autenticación de base de datos). Elija Browse Directory (Examinar directorio) y, a continuación, seleccione el directorio o elija Create a new directory (Crear un nuevo directorio).
Cuando use la AWS CLIo la API de RDS, asocie una instancia de base de datos a un directorio. Es obligatorio incluir los parámetros siguientes para que la instancia de base de datos pueda usar el directorio de dominio que ha creado:
-
Para el parámetro
--domain
, utilice el identificador de dominio (identificador "d-*") que se generó cuando creó el directorio. -
Para el parámetro
--domain-iam-role-name
, utilice el rol que creó que usa la políticaAmazonRDSDirectoryServiceAccess
de IAM administrada.
Por ejemplo, el siguiente comando de CLI modifica una instancia de base de datos para usar un directorio.
Para Linux, macOS, o Unix:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --domain d-ID
\ --domain-iam-role-namerole-name
En:Windows
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --domain d-ID
^ --domain-iam-role-namerole-name
importante
Si modifica una instancia de base de datos para habilitar la autenticación Kerberos, reinicie la instancia de base de datos después de realizar el cambio.
Paso 5: crear inicios de sesión MySQL de autenticación Kerberos
Use las credenciales del usuario maestro de Amazon RDS para conectarse a la instancia de base de datos MySQL igual que con cualquier otra instancia de base de datos. La instancia de base de datos se une al dominio de AWS Managed Microsoft AD. Por lo tanto, puede aprovisionar inicios de sesión y usuarios de MySQL a partir de usuarios de Active Directory en su dominio. Los permisos de base de datos se administran mediante permisos estándar de MySQL que se conceden y revocan desde estos inicios de sesión.
Puede permitir que un usuario de Active Directory se autentique con MySQL. Para ello, primero use las credenciales de usuario maestro de Amazon RDS para conectarse a la instancia de base de datos MySQL igual que con cualquier otra instancia de base de datos. Después de haber iniciado sesión, cree un usuario autenticado externamente con PAM (Módulos de autenticación conectables) en MySQL ejecutando el siguiente comando. Sustituya
por el nombre de usuario.testuser
CREATE USER '
testuser
'@'%' IDENTIFIED WITH 'auth_pam';
Ahora, los usuarios (tanto humanos como aplicaciones) del dominio pueden conectarse a la instancia de base de datos desde un equipo cliente unido al dominio mediante la autenticación Herberos.
importante
Recomendamos encarecidamente que los clientes utilicen conexiones SSL/TLS cuando utilicen la autenticación PAM. Si no utilizan conexiones SSL/TLS, es posible que la contraseña se envíe como texto sin cifrar en algunos casos. Para exigir una conexión cifrada SSL/TLS para el usuario de AD, ejecute el siguiente comando y sustituya
con el nombre de usuario:testuser
ALTER USER '
testuser
'@'%' REQUIRE SSL;
Para obtener más información, consulte Compatibilidad de SSL/TLS con instancias de bases de datos de MySQL en Amazon RDS.
Administración de una instancia de base de datos en un dominio
Puede usar la CLI o la API de RDS para administrar la instancia de base de datos y su relación con su Active Directory administrado. Por ejemplo, puede asociar un Active Directory para la autenticación Kerberos y desasociar un Active Directory para deshabilitar la autenticación Kerberos. También puede mover una instancia de base de datos para que sea autenticada externamente por un Active Directory a otro.
Por ejemplo, con la API de Amazon RDS puede hacer lo siguiente:
-
Para volver a intentar habilitar la autenticación Kerberos en una pertenencia que ha dado un error, use la operación de API
ModifyDBInstance
y especifique el ID de directorio de la pertenencia actual. -
Para actualizar el nombre del rol de IAM para la suscripción, use la operación
ModifyDBInstance
de la API y especifique el ID del directorio de la suscripción actual y el nuevo rol de IAM. -
Para deshabilitar la autenticación Kerberos en una instancia de base de datos, utilice la operación
ModifyDBInstance
de la API y especifiquenone
como parámetro de dominio. -
Para mover una instancia de base de datos de un dominio a otro, use la operación
ModifyDBInstance
de la API y especifique el identificador del nuevo dominio como parámetro del dominio. -
Para generar una lista de pertenencias de cada instancia de base de datos, utilice la operación
DescribeDBInstances
de la API.
Descripción de la pertenencia a los dominios
Una vez que haya creado o modificado una instancia de base de datos, esta se convierte en miembro del dominio. Si desea ver el estado de pertenencia al dominio de la instancia de base de datos, ejecute el comando de la CLI describe-db-instances. El estado de la instancia de base de datos puede ser uno de los siguientes:
-
kerberos-enabled
: la instancia de base de datos tiene habilitada la autenticación Kerberos. -
enabling-kerberos
- AWS está en proceso de habilitar la autenticación Kerberos en esta instancia de base de datos. -
pending-enable-kerberos
: la habilitación de la autenticación Kerberos está pendiente en esta instancia de base de datos. -
pending-maintenance-enable-kerberos
- AWS intentará habilitar la autenticación Kerberos en la instancia de base de datos durante el próximo periodo de mantenimiento programado. -
pending-disable-kerberos
: la deshabilitación de la autenticación Kerberos está pendiente en esta instancia de base de datos. -
pending-maintenance-disable-kerberos
- AWS intentará desactivar la autenticación Kerberos en la instancia de base de datos durante el próximo periodo de mantenimiento programado. -
enable-kerberos-failed
: un problema de configuración ha impedido que AWS habilite la autenticación Kerberos en la instancia de base de datos. Compruebe y corrija la configuración antes de volver a ejecutar el comando para modificar la instancia de base de datos. -
disabling-kerberos
- AWS está en proceso de desactivar la autenticación Kerberos en esta instancia de base de datos.
Una solicitud para habilitar la autenticación Kerberos puede generar un error a causa de un problema de conectividad de la red o de un rol de IAM incorrecto. Por ejemplo, supongamos que crea una instancia de base de datos o modifica una instancia de base de datos ya existente y se produce un error en el intento de habilitar la autenticación Kerberos. Si esto sucede, vuelva a ejecutar el comando modify o modifique la instancia de base de datos recién creada para unirse al dominio.
Conexión a Oracle con autenticación Kerberos
Para conectarse a MySQL con autenticación Kerberos, inicie sesión con el tipo de autenticación Kerberos.
Para crear un usuario de base de datos al que pueda conectarse mediante la autenticación Kerberos, utilice una cláusula IDENTIFIED
WITH
en la instrucción CREATE USER
. Para obtener instrucciones, consulte Paso 5: crear inicios de sesión MySQL de autenticación Kerberos.
Para evitar errores, utilice el cliente de mysql
MariaDB. Puede descargar el software MariaDB en https://downloads.mariadb.org/
En el símbolo del sistema, conéctese a uno de los puntos de enlace asociados a su instancia de base de datos MySQL. Siga el procedimiento general de Conexión a una instancia de base de datos que ejecuta el motor de base de datos de MySQL. Cuando se le pida la contraseña, escriba la contraseña de Kerberos asociada a ese nombre de usuario.
Restauración de una instancia de base de datos MySQL y adición de esta a un dominio
Puede restaurar una instantánea de base de datos o realizar una restauración a un momento dado de una instancia de base de datos MySQL y, a continuación, agregarla al dominio. Después de que la instancia de base de datos se haya restaurado, modifíquela mediante el proceso que se explica en la sección Paso 4: crear o modificar una instancia de base de datos MySQL para agregar la instancia de base de datos a un dominio.
Limitaciones de MySQL con la autenticación Kerberos
Las siguientes limitaciones se aplican a la autenticación Kerberos para MySQL:
-
Solo se admite un AWS Managed Microsoft AD. Sin embargo, puede unir instancias de base de datos de RDS para MySQL a dominios compartidos de Managed Microsoft AD propiedad de distintas cuentas de la misma Región de AWS.
-
Debe reiniciar la instancia de base de datos después de habilitar la característica.
-
El nombre de dominio no puede tener más de 61 caracteres.
-
No puede habilitar la autenticación Kerberos y la autenticación IAM al mismo tiempo. Elija uno u otro método de autenticación para su instancia de base de datos MySQL.
-
No modifique el puerto de instancia de base de datos después de habilitar la característica.
-
No utilice la autenticación Kerberos con réplicas de lectura.
-
Si tiene activada la actualización automática de versiones secundarias para una instancia de base de datos de MySQL que utiliza la autenticación Kerberos, tiene que desactivar esta autenticación y volver a activarla después de una actualización automática. Para obtener más información acerca de las actualizaciones de versiones secundarias, consulte Actualizaciones de versiones secundarias automáticas de RDS para MySQL.
-
Para eliminar una instancia de base de datos con esta característica habilitada, primero tiene que desactivar la característica. Para ello, utilice el comando
modify-db-instance
de la CLI para la instancia de base de datos y especifiquenone
para el parámetro--domain
.Si utiliza la CLI o la API de RDS para eliminar una instancia de base de datos con esta característica habilitada, espere un retraso.
-
RDS para MySQL no admite la autenticación Kerberos en una confianza entre bosques entre su AD local o autohospedado y el AWS Managed Microsoft AD.