Configuración de la autenticación de Windows para las instancias de RDS Custom para SQL Server - Amazon Relational Database Service

Configuración de la autenticación de Windows para las instancias de RDS Custom para SQL Server

Se recomienda crear credenciales de servicio y una OU dedicadas a esa unidad organizativa para todas las Cuenta de AWS que posean una instancia de base de datos de RDS Custom para SQL Server que se haya unido a su dominio de AD. Al crear credenciales de servicio u OU dedicadas, evita conflictos de permisos y seguir el principio de privilegio mínimo.

Las políticas de grupo a nivel de Active Directory pueden entrar en conflicto con las automatizaciones y los permisos de AWS. Se recomienda seleccionar GPO que se apliquen únicamente a la unidad organizativa que cree para RDS Custom para SQL Server.

  • Para crear un usuario de dominio OU y AD en su AD en las instalaciones o autoadministrado, puede conectar el controlador de dominio como administrador de dominio.

  • Para crear usuarios y grupos en un directorio de AWS Directory Service, debe estar conectado a una instancia de administración y haber iniciado sesión como usuario con privilegios para crear usuarios y grupos. Para obtener más información, consulte Administración de usuarios y grupos en AWS Managed Microsoft AD en la Guía de administración de AWS Directory Service.

  • Para administrar su Active Directory desde una instancia de Amazon EC2 de Windows Server, es necesario instalar las herramientas de los servicios de dominio de Active Directory y los servicios de directorio de Active Directory Lightweight en la instancia de EC2. Para obtener más información, consulte Instalación de las herramientas de administración del Active Directory para AWS Managed Microsoft AD en la Guía de administración de AWS Directory Service.

  • Le recomendamos que instale estas herramientas en una instancia EC2 independiente para la administración y no en su instancia de base de datos de RDS Custom para SQL Server para facilitar la administración.

Estos son los requisitos de la cuenta de servicio de dominio de AD:

  • Debe tener una cuenta de servicio en su dominio de AD con permisos delegados para unir equipos al dominio. Una cuenta de servicio de dominio es una cuenta de usuario de su AD a la que se le ha delegado permiso para realizar determinadas tareas.

  • Delegue los siguientes permisos a la cuenta de servicio de dominio de la unidad organizativa a la que va a unir su instancia de RDS Custom para SQL Server:

    • Capacidad validada para escribir en el nombre de host DNS

    • Capacidad validada para escribir en el nombre de entidad principal del servicio

    • Crear y eliminar objetos de equipo

  • En el caso de AD en las instalaciones y autoadministrado, la cuenta de servicio de dominio debe ser miembro del grupo “Administradores delegados del sistema de nombres de dominio de AWS”.

  • En el caso de AWS Managed Microsoft AD, la cuenta de servicio de dominio debe ser miembro del grupo “DnsAdmins”.

Estos son el conjunto mínimo de permisos que se requieren para unir objetos de equipo a su AD autoadministrado y AWS Managed Microsoft AD. Para obtener más información, consulte Error: Se deniega el acceso cuando los usuarios que no son administradores que han sido delegados intentan unir equipos a un dominio en la documentación de Microsoft Windows Server.

importante

No mueva los objetos de equipo que RDS Custom para SQL Server cree en la unidad organizativa (OU) después de crear la instancia de base de datos. Si mueve los objetos asociados, la instancia de base de datos de RDS Custom para SQL Server podría configurarse mal. Si necesita mover los objetos de equipo creados por Amazon RDS, utilice la acción ModifyDBInstance para modificar los parámetros del dominio con la ubicación deseada de los objetos del equipo.

Paso 1: Crear una unidad organizativa (OU) en el AD

Efectúe los siguientes pasos para crear una unidad organizativa en su AD:

Creación de una OU en su AD
  1. Conéctese a su AD de dominio como administrador de dominio.

  2. Abra Usuarios y equipos de Active Directory y seleccione el dominio en el que desea crear la OU.

  3. Haga clic con el botón derecho en el dominio y seleccione Nuevo y, a continuación, Unidad organizativa.

  4. Escriba un nombre para la OU.

    Habilite Proteger el contenedor contra la eliminación accidental.

  5. Seleccione Aceptar. La nueva OU aparece en su dominio.

Para AWS Managed Microsoft AD, el nombre de esta OU se basa en el nombre NetBIOS que escribió cuando creó el directorio. Esta OU es propiedad de AWS y contiene todos los objetos del directorio relacionados con AWS para los que a usted se le concede control total. De forma predeterminada, esta OU contiene dos OU secundarias Equipos y usuarios. Las nuevas OU que crea RDS Custom son secundarias de la unidad organizativa que se basa en NetBIOS.

Paso 2: Crear un usuario de dominio de AD

Las credenciales de usuario del dominio se utilizan para el secreto en Secrets Manager.

Creación de un usuario de dominio de AD en su AD
  1. Abra Usuarios y equipos de Active Directory y seleccione el dominio y la OU en los que desea crear el usuario.

  2. Haga clic con el botón derecho en el objeto Usuarios y seleccione Nuevo y, a continuación, Usuario.

  3. Introduzca el nombre, los apellidos y el nombre de inicio de sesión del usuario. Haga clic en Next (Siguiente).

  4. Introduzca una contraseña para el usuario. No seleccione El usuario debe cambiar la contraseña en el próximo inicio de sesión ni La cuenta está deshabilitada. Haga clic en Next (Siguiente).

  5. Haga clic en OK (Aceptar). Su nuevo usuario aparece en su dominio.

Paso 3: Delegar el control al usuario de AD de forma autoadministrada o AWS Managed Microsoft AD

Para delegar el control al usuario del dominio AD de su dominio
  1. Abra el complemento MMC Usuarios y equipos de Active Directory y seleccione su dominio.

  2. Haga clic con el botón derecho en la OU que creó anteriormente y seleccione Delegar control.

  3. En Asistente para delegación de control, haga clic en Siguiente.

  4. En la sección Usuarios o grupos, haga clic en Agregar.

  5. En Seleccionar usuarios, equipos o grupos, introduzca el usuario de AD que creó y haga clic en Verificar nombres. Si la comprobación de usuario de AD se ha realizado correctamente, haga clic en Aceptar.

  6. En la sección Usuarios o grupos, confirme que ha agregado el usuario de AD y haga clic en Siguiente.

  7. En la página Tareas que se delegarán, seleccione Crear una tarea personalizada para delegar y haga clic en Siguiente.

  8. En la sección Tipo de objeto de Active Directory:

    Elija Solo los siguientes objetos de la carpeta.

    Seleccione Objetos computacionales.

    Seleccione Crear objetos seleccionados en esta carpeta.

    Seleccione Eliminar los objetos seleccionados en esta carpeta y haga clic en Siguiente.

  9. En la sección Permisos:

    Mantenga seleccionada la opción General.

    Seleccione Escritura validada en el nombre de host DNS.

    Seleccione Escritura validada en el nombre de la entidad de servicio y haga clic en Siguiente.

  10. Para Completar el asistente para delegación de control, confirme la configuración y haga clic en Finalizar.

Paso 4: Crear un secreto

Cree el secreto en la misma región y Cuenta de AWS que contiene la instancia de base de datos de RDS Custom para SQL Server que desea incluir en su directorio activo. Almacene las credenciales del usuario del dominio de AD creado en Paso 2: Crear un usuario de dominio de AD.

Console
  • En AWS Secrets Manager, elija Almacenar un nuevo secreto.

  • En Secret type (Tipo de secreto), elija Other type of secret (Otro tipo de secreto).

  • En Pares clave-valor, agregue sus dos claves:

    • La primera clave SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME e introduzca el nombre de su usuario de AD como valor.

    • Para la segunda clave, introduzca SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD e introduzca la contraseña de su usuario de AD en su dominio.

  • En Clave de cifrado, introduzca la misma clave de AWS KMS que utilizó para crear la instancia de RDS Custom para SQL Server.

  • En Nombre secreto, elija el nombre secreto que empiece por do-not-delete-rds-custom- para permitir que el perfil de la instancia acceda a este secreto. Si quiere elegir un nombre diferente para el secreto, actualice RDSCustomInstanceProfile para acceder al Nombre secreto.

  • (Opcional) En Descripción, escriba una descripción del nombre del secreto.

  • Cómo agregar las etiquetas Key="AWSRDSCustom",Value="custom-sqlserver"

  • Haga clic en Guardar y, a continuación, en Siguiente.

  • En Configurar los ajustes de rotación, mantenga los valores predeterminados y seleccione Siguiente.

  • Revise la configuración del secreto y haga clic en Guardar.

  • Elija el nuevo secreto y copie el valor del ARN del secreto. Esto lo utilizaremos en el siguiente paso para configurar su Active Directory.

CLI

Ejecute el siguiente comando en su CLI para crear un secreto:

# Linux based aws secretsmanager create-secret \ --name do-not-delete-rds-custom-DomainUserCredentails \ --description "Active directory user credentials for managing RDS Custom" \ --secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" \ --kms-key-id <RDSCustomKMSKey> \ --tags Key="AWSRDSCustom",Value="custom-sqlserver" # Windows based aws secretsmanager create-secret ^ --name do-not-delete-rds-custom-DomainUserCredentails ^ --description "Active directory user credentials for managing RDS Custom" ^ --secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" ^ --kms-key-id <RDSCustomKMSKey> ^ --tags Key="AWSRDSCustom",Value="custom-sqlserver"

Paso 5: Crear o modificar una instancia de base de datos de RDS Custom para SQL Server

Cree o modifique una instancia de base de datos de RDS Custom para SQL Server 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:

nota

Si su instancia de RDS Custom para SQL Server ya está unida a un AD manualmente, compruebe la configuración de Reglas de puertos de configuraciones de redes, Validación de red y complete los pasos del 1 al 4. Actualice --domain-fqdn, --domain-ou y --domain-auth-secret-arn a su AD para que las credenciales y configuraciones de unión al dominio se registren en RDS Custom para supervisar, registrar el CNAME y tomar medidas de recuperación.

Cuando utilice la AWS CLI, se necesitan los siguientes parámetros para que la instancia de base de datos pueda usar el directorio que ha creado:

  • Para el parámetro --domain-fqdn, utilice el nombre de dominio completo de su AD autoadministrado.

  • Para el parámetro --domain-ou, utilice la OU que creó en su AD autoadministrado.

  • Para el parámetro --domain-auth-secret-arn, utilice el valor del ARN del secreto que ha creado.

importante

Si modifica una instancia de base de datos para unirla a un dominio de AD autoadministrado o AWS Managed Microsoft AD, es necesario reiniciar la instancia de base de datos para que la modificación surta efecto. Puede optar por aplicar los cambios inmediatamente o esperar hasta el próximo período de mantenimiento. Si opta por Aplicar inmediatamente, se origina un tiempo de inactividad para las instancias de base de datos Single-AZ. El clúster de base de datos Multi-AZ realiza una conmutación por error antes de completar el reinicio. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS.

El siguiente comando de CLI crea una nueva instancia de base de datos de RDS Custom para SQL Server y la une a un dominio de AWS Managed Microsoft AD o autoadministrado.

Para Linux, macOS o Unix:

aws rds create-db-instance \ --engine custom-sqlserver-se \ --engine-version 15.00.4312.2.v1 \ --db-instance-identifier my-custom-instance \ --db-instance-class db.m5.large \ --allocated-storage 100 --storage-type io1 --iops 1000 \ --master-username my-master-username \ --master-user-password my-master-password \ --kms-key-id my-RDSCustom-key-id \ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \ --domain-fqdn "corp.example.com" \ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \ --db-subnet-group-name my-DB-subnet-grp \ --vpc-security-group-ids my-securitygroup-id \ --no-publicly-accessible \ --backup-retention-period 3 \ --port 8200 \ --region us-west-2 \ --no-multi-az

Para Windows:

aws rds create-db-instance ^ --engine custom-sqlserver-se ^ --engine-version 15.00.4312.2.v1 ^ --db-instance-identifier my-custom-instance ^ --db-instance-class db.m5.large ^ --allocated-storage 100 --storage-type io1 --iops 1000 ^ --master-usernamemy-master-username ^ --master-user-password my-master-password ^ --kms-key-id my-RDSCustom-key-id ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^ --domain-fqdn "corp.example.com" ^ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^ --db-subnet-group-name my-DB-subnet-grp ^ --vpc-security-group-ids my-securitygroup-id ^ --no-publicly-accessible ^ --backup-retention-period 3 ^ --port 8200 ^ --region us-west-2 ^ --no-multi-az
importante

Si su NetBIOS para AWS Managed Microsoft AD es corpexample, entonces aparece como una OU en sí misma. Cualquier unidad organizativa nueva creada anteriormente aparecerá como una unidad organizativa anidada. En AWS Managed Microsoft AD, establezca --domain-ou en "OU=RDSCustomOU,OU=corpexample,DC=corp,DC=example,DC=com".

El siguiente comando modifica una instancia de base de datos de RDS Custom para SQL Server existente para que utilice un dominio de Active Directory.

Para Linux, macOS o Unix:

aws rds modify-db-instance \ --db-instance-identifier my-custom-instance \ --domain-fqdn "corp.example.com" \ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \

Para Windows:

aws rds modify-db-instance ^ --db-instance-identifier my-custom-instance ^ --domain-fqdn "corp.example.com" ^ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^

El siguiente comando de CLI elimina una instancia de base de datos de RDS Custom para SQL Server de un dominio de Active Directory.

Para Linux, macOS o Unix:

aws rds modify-db-instance \ --db-instance-identifier my-custom-instance \ --disable-domain

Para Windows:

aws rds modify-db-instance ^ --db-instance-identifier my-custom-instance ^ --disable-domain

Cuando utilice la consola para crear o modificar su instancia, haga clic en Habilitar la autenticación de Microsoft SQL Server Windows para ver las siguientes opciones.

Directorio de autenticación de Windows de Microsoft SQL Server

Usted es responsable de asegurarse de que el FQDN de su dominio se resuelva en las direcciones IP del controlador de dominio. Si las direcciones IP de los controladores de dominio no se resuelven, las operaciones de unión al dominio fallan, pero la creación de la instancia de RDS Custom for SQL Server se realiza correctamente. Para obtener información sobre la resolución de problemas, consulte Solución de problemas de Active Directory.

Paso 6: Crear inicios de sesión de SQL Server de autenticación de Windows

Use las credenciales del usuario maestro de Amazon RDS para conectarse a la instancia de base de datos de SQL Server como lo haría con cualquier otra instancia de base de datos. Como la instancia de base de datos está unida al dominio de AD, puede aprovisionar inicios de sesión y usuarios de SQL Server. Para ello, utilice la utilidad de usuarios y grupos de AD de su dominio de AD. Los permisos de bases de datos se administran a través de los permisos de SQL Server estándar otorgados y revocados para estos inicios de sesión de Windows.

Para que un usuario de AD se autentique con SQL Server, debe existir un inicio de sesión de Windows de SQL Server para el usuario de AD o para un grupo de Active Directory del que el usuario sea miembro. El control detallado del acceso se gestiona mediante la concesión y la revocación de permisos en estos inicios de sesión de SQL Server. Un usuario de AD que no tenga un inicio de sesión de SQL Server o no pertenezca a un grupo de AD con dicho inicio de sesión no puede tener acceso a la instancia de base de datos de SQL Server.

El permiso ALTER ANY LOGIN es necesario para crear un inicio de sesión de SQL Server de AD. Si todavía no ha creado ningún inicio de sesión con este permiso, conéctese como usuario maestro de la instancia de base de datos usando la autenticación de SQL Server y cree sus inicios de sesión de SQL Server de AD bajo el contexto del usuario maestro.

Puede ejecutar un comando de lenguaje de definición de datos (DDL), como el siguiente, para crear un inicio de sesión de SQL Server para un usuario o grupo de AD.

USE [master] GO CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO

Los usuarios (tanto humanos como aplicaciones) del dominio pueden conectarse ahora a la instancia de RDS Custom para SQL Server desde un equipo cliente unido al dominio utilizando la autenticación de Windows.

Paso 7: Uso de la autenticación Kerberos o NTLM

Autenticación NTLM mediante un punto de conexión de RDS

Cada instancia de base de datos de Amazon RDS contiene un punto de conexión y cada punto de conexión contiene el nombre DNS y el número de puerto para la instancia de base de datos. Para conectarse a su instancia de base de datos mediante una aplicación cliente SQL, necesita el nombre DNS y el número de puerto para la instancia de base de datos. Para autenticarse mediante la autenticación NTLM, debe conectarse al punto de conexión de RDS.

Durante una interrupción del servicio no planificada o un mantenimiento planificado de la base de datos, Amazon RDS conmuta automáticamente a la base de datos secundaria actualizada para que las operaciones puedan reanudarse rápidamente sin intervención manual. Las instancias principal y secundaria usan el mismo punto de conexión, cuya dirección de red física cambia a la secundaria como parte del proceso de conmutación por error. No tiene que volver a configurar su aplicación cuando se produzca una conmutación por error.

Autenticación de Kerberos

La autenticación basada en Kerberos para RDS Custom para SQL Server requiere que las conexiones se realicen a un nombre principal de servicio (SPN) específico. Sin embargo, tras un evento de conmutación por error, es posible que la aplicación no conozca el nuevo SPN. Para solucionar este problema, RDS Custom para SQL Server ofrece un punto de conexión basado en Kerberos.

El punto de conexión basado en Kerberos sigue un formato específico. Si su punto de conexión de RDS es rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com, el punto de conexión correspondiente basado en Kerberos sería rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN).

Por ejemplo, si el punto de conexión de RDS es ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com y el nombre de dominio es corp-ad.company.com, el punto de conexión basado en Kerberos sería ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com.

Este punto de conexión basado en Kerberos se puede usar para autenticarse con la instancia de SQL Server mediante Kerberos, incluso después de un evento de conmutación por error, ya que el punto de conexión se actualiza automáticamente para que apunte al nuevo SPN de la instancia principal de SQL Server.

Cómo encontrar su CNAME

Para encontrar su CNAME, conéctese al controlador de dominio y abra Administrador de DNS. Navegue hasta Zonas de búsqueda avanzada y su FQDN.

Navegue por awsrds, aws-region y hash específicos de la cuenta y la región.

Si conecta la instancia EC2 de RDS Custom e intenta conectarse a la base de datos de forma local mediante CNAME, la conexión utilizará la autenticación NTLM en lugar de Kerberos.

Si después de conectar CNAME desde un cliente remoto, se devuelve una conexión NTLM, compruebe si los puertos necesarios están en la lista de permitidos.

Para comprobar si su conexión usa Kerberos, ejecute la siguiente consulta:

SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SSPID;