Configuración de la autenticación Kerberos para clústeres de base de datos de Aurora MySQL - Amazon Aurora

Configuración de la autenticación Kerberos para clústeres de base de datos de Aurora MySQL

Utilice AWS Managed Microsoft AD para configurar la autenticación Kerberos para un clúster de base de datos de Aurora 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 del 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 introdujo al crear el directorio. Se encuentra en la raíz del dominio, que es propiedad y está administrada por AWS.

La cuenta Admin que se creó con el directorio de AWS Managed Microsoft AD dispone de permisos para realizar las actividades administrativas más habituales para la unidad organizativa, entre las que se incluyen:

  • 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 Admin 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
  1. Inicie sesión en AWS Management Console y abra la consola de AWS Directory Service en https://console.aws.amazon.com/directoryservicev2/.

  2. En el panel de navegación, elija Directories (Directorios) y, a continuación, Set up Directory (Configurar directorio).

  3. Elija AWS Managed Microsoft AD. AWS Managed Microsoft AD es la única opción que puede usar actualmente con Amazon RDS.

  4. 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

    Se vuelve a introducir la contraseña del administrador.

  5. Elija Siguiente.

  6. Escriba la siguiente información en la sección Networking (Redes) y luego seleccione Next (Siguiente):

    VPC

    VPC del directorio. Cree el clúster de base de datos de Aurora MySQL en esta misma VPC.

    Subredes

    Subredes de los servidores del directorio. Las dos subredes deben estar en diferentes zonas de disponibilidad.

  7. Revise la información del directorio y haga los cambios necesarios. Cuando la información sea correcta, seleccione Create directory (Crear directorio).

    Página de detalles del directorio durante la creación

El directorio tarda varios minutos en crearse. 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. Anote el valor de ID del directorio porque lo necesitará cuando cree o modifique su clúster de base de datos de Aurora MySQL.

ID del directorio en la página de detalles del directorio

Paso 2: (opcional) crear una relación de confianza para un Active Directory en las instalaciones

Si no planea usar su propio Microsoft Active Directory local, vaya a Paso 3: crear un rol de IAM para que lo use Amazon Aurora.

Para usar la autenticación Kerberos con Active Directory en las instalaciones, debe crear una relación de dominio de confianza entre Microsoft Active Directory en las instalaciones y el directorio AWS Managed Microsoft AD (creado en Paso 1: crear un directorio con AWS Managed Microsoft AD). La confianza puede ser unidireccional, donde el directorio AWS Managed Microsoft AD confía en Microsoft Active Directory local. La confianza también puede ser bidireccional, donde ambos Active Directories confían entre sí. Para obtener más información acerca de la configuración de relaciones de confianza con AWS Directory Service, consulte Cuándo crear una relación de confianza en la guía de administración de AWS Directory Service.

nota

Si utiliza Microsoft Active Directory en las instalaciones:

  • Los clientes de Windows deben conectarse con el nombre de dominio del AWS Directory Service en el punto de conexión en lugar de con rds.amazonaws.com. Para obtener más información, consulte Conexión a Aurora MySQL con autenticación Kerberos.

  • Los clientes de Windows no pueden conectarse con utilizando punto de conexión personalizados de Aurora. Para obtener más información, consulte Administración de conexiones de Amazon Aurora.

  • Para bases de datos globales:

    • Los clientes de Windows solo pueden conectarse mediante los puntos de enlace de la instancia o los del clúster en la Región de AWS principal de la base de datos global.

    • Los clientes de Windows no pueden conectarse mediante los puntos de enlace del clúster en Regiones de AWS secundarias.

Asegúrese de que el nombre de dominio local de Microsoft Active Directory incluya un enrutamiento de sufijo DNS que corresponda a la relación de confianza recién creada. En la siguiente captura de pantalla, se muestra un ejemplo.

El enrutamiento DNS corresponde a la confianza creada

Paso 3: crear un rol de IAM para que lo use Amazon Aurora

Para que Amazon Aurora llame a AWS Directory Service en su nombre, necesita un rol de AWS Identity and Access Management (IAM) que utilice la política de IAM administrada AmazonRDSDirectoryServiceAccess. Este rol permite a Aurora realizar llamadas a AWS Directory Service.

Cuando crea un clúster de base de datos con la AWS Management Console y 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.

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 4: 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 usar una instancia en las instalaciones o de Amazon EC2 basada en Microsoft Windows que esté unida a su directorio de AWS Directory Service. Debe iniciar sesión en la instancia 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 5: crear o modificar un clúster de base de datos de Aurora MySQL

Cree o modifique un clúster de base de datos de Aurora MySQL para usarlo con su directorio. Puede utilizar la consola, la AWS CLI o la API de RDS para asociar un clúster de base de datos con un directorio. Puede realizar esta tarea de una de las siguientes formas:

La autenticación Kerberos solo es compatible con clústeres de base de datos de Aurora MySQL en una VPC. El clúster de base de datos puede estar en la misma VPC que el directorio o en una VPC diferente. La VPC del clúster de base de datos tiene que tener un grupo de seguridad de VPC que permita la comunicación saliente con su directorio.

Si utiliza la consola para crear, modificar o restaurar un clúster de base de datos, elija Kerberos authentication (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).

Configuración de la autenticación Kerberos al crear un clúster de base de datos

Puede utilizar la AWS CLI o la API de RDS para asociar un clúster de base de datos con un directorio. Es necesario incluir los parámetros siguientes para que el clúster 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ítica AmazonRDSDirectoryServiceAccess de IAM administrada.

Por ejemplo, el siguiente comando de la CLI modifica un clúster de base de datos para que use un directorio.

Para Linux, macOS, o Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --domain d-ID \ --domain-iam-role-name role-name

En Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --domain d-ID ^ --domain-iam-role-name role-name
importante

Si modifica un clúster de base de datos para activar la autenticación Kerberos, reinicie las instancias de base de datos del lector después de hacer el cambio.

Paso 6: crear usuarios de Aurora MySQL que usen la autenticación Kerberos

El clúster de base de datos está unido al dominio de AWS Managed Microsoft AD. Por lo tanto, puede crear usuarios de Aurora MySQL a partir de usuarios de Active Directory en su dominio. Los permisos de base de datos se administran mediante permisos estándar de Aurora MySQL que se conceden y revocan a estos usuarios.

Puede permitir que un usuario de Active Directory se autentique con Aurora MySQL. Para ello, primero use las credenciales del usuario principal de Amazon RDS para conectarse al clúster de base de datos de Aurora MySQL igual que con cualquier otro clúster de base de datos. Después de iniciar sesión, cree un usuario autenticado externamente con la autenticación Kerberos en Aurora MySQL, tal y como se muestra a continuación:

CREATE USER user_name@'host_name' IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
  • Sustituya user_name por el nombre de usuario. Los usuarios (tanto humanos como aplicaciones) del dominio pueden conectarse ahora al clúster de base de datos desde un equipo cliente unido al dominio utilizando la autenticación Kerberos.

  • Sustituya host_name por el nombre del host. Puede utilizar % como comodín. También puede usar direcciones IP específicas para el nombre de host.

  • Sustituya realm_name por el nombre del ámbito del directorio del dominio. El nombre del ámbito suele ser el mismo que el nombre de dominio DNS en mayúsculas (por ejemplo, CORP.EXAMPLE.COM). Un ámbito es un grupo de sistemas que utilizan el mismo centro de distribución de claves de Kerberos.

En el siguiente ejemplo, se crea un usuario de base de datos con el nombre Admin que se autentica en Active Directory con el nombre de ámbito MYSQL.LOCAL.

CREATE USER Admin@'%' IDENTIFIED WITH 'authentication_kerberos' BY 'MYSQL.LOCAL';

Modificación de un inicio de sesión de Aurora MySQL existente

También puede modificar un inicio de sesión de Aurora MySQL existente para usar la autenticación Kerberos mediante la siguiente sintaxis:

ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';

Paso 7: configurar un cliente MySQL

Para configurar un cliente MySQL, siga estos pasos:

  1. Cree un archivo krb5.conf (o equivalente) para apuntar al dominio.

  2. Verifique que el tráfico puede fluir entre el host cliente y AWS Directory Service. Use una utilidad de red como, por ejemplo, Netcat, para lo siguiente:

    • Verificar el tráfico sobre DNS para el puerto 53.

    • Verificar el tráfico sobre TCP/UDP para el puerto 52 y para Kerberos, lo que incluye los puertos 88 y 464 para AWS Directory Service.

  3. Verifique que el tráfico puede fluir entre el host cliente y la instancia de base de datos sobre el puerto de base de datos. Por ejemplo, utilice mysql para conectarse a la base de datos y acceder a ella.

A continuación, se muestra un contenido de krb5.conf de ejemplo para AWS Managed Microsoft AD.

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

A continuación, se muestra un contenido de krb5.conf de ejemplo para un Microsoft Active Directory en las instalaciones.

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } ONPREM.COM = { kdc = onprem.com admin_server = onprem.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM .onprem.com = ONPREM.COM onprem.com = ONPREM.COM .rds.amazonaws.com = EXAMPLE.COM .amazonaws.com.cn = EXAMPLE.COM .amazon.com = EXAMPLE.COM

Paso 8: (opcional) configurar la comparación de nombres de usuario que no distinga mayúsculas de minúsculas

De forma predeterminada, las mayúsculas y minúsculas del nombre de usuario de la base de datos de MySQL deben ser iguales que las del inicio de sesión en Active Directory. Sin embargo, ahora puede usar la comparación de nombres de usuario que no distinga mayúsculas de minúsculas con el complemento authentication_kerberos. Para ello, defina el parámetro authentication_kerberos_caseins_cmp del clúster de base de datos en true.

Utilización de la comparación de nombres de usuario que no distingue mayúsculas de minúsculas
  1. Cree un grupo de parámetros de clúster de base de datos personalizado. Siga los procedimientos indicados en Creación de un grupo de parámetros de clúster de base de datos.

  2. Edite el nuevo grupo de parámetros para establecer el valor de authentication_kerberos_caseins_cmp en true. Siga los procedimientos indicados en Modificación de parámetros de un grupo de parámetros de clúster de base de datos.

  3. Asocie el grupo de parámetros del clúster de base de datos con el clúster de base de datos de MySQL. Siga los procedimientos indicados en Asociación de un grupo de parámetros de clúster de base de datos con un clúster de base de datos.

  4. Reinicie el clúster de base de datos.