Configuración de la autenticación de Windows para las instancias de base de datos de SQL Server
Debe usar AWS Directory Service for Microsoft Active Directory, también llamado AWS Managed Microsoft AD, para configurar la autenticación de Windows para una instancia de base de datos de SQL Server. Para configurar la autenticación de Windows, lleve a cabo los siguientes pasos.
Paso 1: crear un directorio con AWS Directory Service for Microsoft Active Directory
AWS Directory Service crea un directorio de Microsoft Active Directory totalmente gestionado en la nube de AWS. Cuando crea un directorio AWS Managed Microsoft AD, AWS Directory Service crea dos controladores de dominio y servidores del Servicio de nombres de dominio (DNS) en su nombre. Los servidores de directorio se crean en dos subredes en dos zonas de disponibilidad diferentes dentro de una VPC. Esta redundancia ayuda a garantizar que su directorio permanezca accesible incluso si ocurre un fallo.
Cuando crea un directorio de AWS Managed Microsoft AD, AWS Directory Service realiza en su nombre las siguientes tareas:
-
Configura un Microsoft 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.
-
Crea un grupo de seguridad para los controladores del directorio.
Al lanzar AWS Directory Service for Microsoft Active Directory, AWS crea una unidad organizativa (OU) que contiene todos los objetos del directorio. Esta unidad organizativa, que tiene el nombre de NetBIOS que escribió al crear el directorio, 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 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:
-
Cree, actualice o elimine usuarios, grupos y equipos.
-
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 y grupos dentro de la unidad organizativa.
-
Crear unidades organizativas y contenedores adicionales.
-
Delegar autoridad.
-
Crear y enlazar políticas de grupo.
-
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
-
En el panel de navegación de la consola de AWS Directory Service
, elija Directories (Directorios) y, a continuación, elija Set up Directory (Configurar directorio). -
Elija AWS Managed Microsoft AD. Es la única opción que se admite actualmente para el uso con Amazon RDS.
-
Elija Siguiente.
-
En la página Enter directory information (Especifique la información del directorio), facilite la siguiente información:
- Edición
-
Elija la edición que se adapte a sus necesidades.
- Nombre de DNS del directorio
-
El nombre completo del directorio, como por ejemplo
corp.example.com
. SQL Server no admite nombres de más de 47 caracteres. - Nombre NetBIOS del directorio
-
Un nombre abreviado del directorio opcional, como COR
CORP
. - Descripción del directorio
-
Descripción opcional 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.
-
En la página Choose VPC and subnets (Elegir la VPC y las subredes), proporcione la información siguiente:
- VPC
-
Elija la VPC del directorio.
nota
Puede ubicar el directorio y la instancia de base de datos en diferentes VPC pero, si lo hace así, habilite el tráfico entre VPC. Para obtener más información, consulte Paso 4: habilitar el tráfico entre VPC entre el directorio y la instancia de base de datos.
- Subredes
-
Elija las subredes de los servidores del directorio. Las dos subredes deben estar en diferentes zonas de disponibilidad.
-
Elija Siguiente.
-
Revise la información del directorio. Si es necesario realizar algún cambio, seleccione Privous (Anterior). 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 ver información acerca de su directorio, seleccione el ID del directorio en la lista de directorios. Anote el valor de Directory ID (ID de directorio). Necesitará este valor cuando cree o modifique la instancia de base de datos de SQL Server.
Paso 2: crear el rol de IAM que usará Amazon RDS
Si usa la consola para crear la instancia de base de datos de SQL Server, puede omitir este paso. Si usa la CLI o la API de RDS para crear su propia instancia de base de datos de SQL Server, debe crear un rol de IAM que use la política de IAM administrada AmazonRDSDirectoryServiceAccess
. Este rol permite a Amazon RDS realizar llamadas a AWS Directory Service en su nombre.
Si usa una política personalizada para unirse a un dominio en lugar de usar la política AWS administrada por AmazonRDSDirectoryServiceAccess
, debe permitir la acción ds:GetAuthorizedApplicationDetails
. Este requisito entrará en vigor a partir de julio de 2019, debido a un cambio en la API de AWS Directory Service.
La siguiente política de IAM, AmazonRDSDirectoryServiceAccess
, proporciona acceso a AWS Directory Service.
ejemplo Política de IAM para proporcionar acceso a AWS Directory Service
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }
Le recomendamos que utilice las claves de contexto de condición globales de aws:SourceArn
y aws:SourceAccount
en las relaciones de confianza basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el problema del suplente confuso.
Puede utilizar claves de contexto de condición globales y hacer que el valor de aws:SourceArn
contenga el ID de cuenta. En estos casos, el valor de aws:SourceAccount
y la cuenta del valor de aws:SourceArn
deben utilizar el mismo ID de cuenta cuando se utilizan en la misma instrucción.
-
Use
aws:SourceArn
si quiere acceso entre servicios para un único recurso. -
Use
aws:SourceAccount
si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.
En la relación de confianza, asegúrese de utilizar la clave de contexto de condición global aws:SourceArn
con el nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol. Para la autenticación de Windows, asegúrese de incluir las instancias de base de datos, tal y como se muestra en el siguiente ejemplo.
ejemplo relación de confianza con la clave de contexto de condición global para la autenticación de Windows
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:
Region
:my_account_ID
:db:db_instance_identifier
" ] } } } ] }
Cree un rol de IAM con esta política de IAM y su relación de confianza. Para obtener más información acerca de la creación de roles de IAM, consulte Creación de políticas administradas por el cliente en la Guía del usuario de IAM.
Paso 3: crear y configurar usuarios y grupos
Puede crear usuarios y grupos con la herramienta Usuarios y equipos de Active Directory. Esta herramienta es una 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. Los grupos resultan muy útiles para conceder o denegar privilegios a un conjunto de usuarios en lugar de asignar esos privilegios a cada usuario por separado.
Para crear usuarios y grupos en un directorio de AWS Directory Service, debe estar conectado a una instancia EC2 de Windows que sea miembro del directorio de AWS Directory Service. También debe haber iniciado sesión como usuario con privilegios para crear usuarios. Para obtener más información, consulte la sección para agregar usuarios y grupos (Simple AD yAWS Managed Microsoft AD) en la guía de administraciónde AWS Directory Service.
Paso 4: habilitar el tráfico entre VPC entre el directorio y la instancia de base de datos
Si tiene previsto ubicar el directorio y la instancia de base de datos en la misma VPC, omita este paso y continúe con Paso 5: crear o modificar una instancia de base de datos de SQL Server.
Si tiene previsto ubicar el directorio y la instancia de base de datos en diferentes VPC, configure el tráfico entre VPC mediante la interconexión de VPC o AWSTransit Gateway.
El siguiente procedimiento permite el tráfico entre VPC mediante la interconexión de VPC. Siga las instrucciones de ¿Qué es una interconexión de VPC? en la Guía de interconexión de Amazon Virtual Private Cloud.
Para habilitar el tráfico entre VPC mediante la interconexión de VPC
-
Configure las reglas de enrutamiento de VPC adecuadas para garantizar que el tráfico de red pueda fluir en ambos sentidos.
-
Asegúrese de que el grupo de seguridad de la instancia de base de datos pueda recibir tráfico de entrada del grupo de seguridad del directorio.
-
Asegúrese de que no haya una regla de lista de control de acceso (ACL) a la red para bloquear el tráfico.
Si una cuenta de AWS distinta es la propietaria del directorio, debe compartirlo.
Para compartir el directorio entre cuentas de AWS
-
Comience a compartir el directorio con la cuenta AWS en la que se creará la instancia de base de datos siguiendo las instrucciones de Tutorial: Uso compartido del directorio de AWS Managed Microsoft AD para realizar la unión al dominio fluida de EC2 en la AWS Directory ServiceGuía de administración.
-
Inicie sesión en la consola de AWS Directory Service utilizando la cuenta para la instancia de base de datos y asegúrese de que el dominio tiene el estado
SHARED
antes de continuar. -
Una vez iniciada sesión en la consola de AWS Directory Service utilizando la cuenta de la instancia de base de datos, anote el valor de Directory ID (ID de directorio). Utilice este identificador de directorio para unir la instancia de base de datos al dominio.
Paso 5: crear o modificar una instancia de base de datos de SQL Server
Cree o modifique una instancia de base de datos de 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:
-
Cree una nueva instancia de base de datos de SQL Server 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 SQL Server 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 SQL Server 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 SQL Server a un punto en el tiempo mediante la consola, el comando de la CLI 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 Windows solo es compatible con instancias de base de datos de SQL Server en una VPC.
Para que la instancia de base de datos pueda usar el directorio de dominio que ha creado, se precisa lo siguiente:
-
Para Directory (Directorio), elija el identificador de dominio (
d-
) que se generó cuando creó el directorio.ID
-
Asegúrese de que el grupo de seguridad de VPC tiene una regla de salida que permita a la instancia de base de datos comunicarse con el directorio.
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
, utilice el identificador de dominio (identificador «d-
») que se generó cuando creó el directorio.ID
-
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 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 AWS Managed Microsoft AD, puede aprovisionar inicios de sesión y usuarios de SQL Server. Esto se realiza desde los usuarios y grupos de Active Directory de su dominio. 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 Active Directory se autentique con SQL Server, debe existir un inicio de sesión de Windows de SQL Server para el usuario o para un grupo 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 que no tenga un inicio de sesión de SQL Server o no pertenezca a un grupo 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 Active Directory. 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.
Ejecute el comando de lenguaje de definición de datos (DDL), como en el siguiente ejemplo, para crear un inicio de sesión de SQL Server para el usuario o el grupo de Active Directory.
nota
Especifique usuarios y grupos con el nombre de inicio de sesión anterior a Windows 2000 en el formato
. No puede usar un nombre principal del usuario (UPN) en el formato domainName
\login_name
login_name
@
.DomainName
Solo puede crear un inicio de sesión de autenticación de Windows en una instancia de RDS para SQL Server mediante instrucciones T-SQL. No puede usar SQL Server Management Studio para crear un inicio de sesión de autenticación de Windows.
USE [master] GO CREATE LOGIN [
mydomain
\myuser
] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO
Para obtener más información, consulte CREATE LOGIN (Transact-SQL)
Los usuarios (tanto humanos como aplicaciones) del dominio pueden conectarse ahora a la instancia de RDS for SQL Server desde un equipo cliente unido al dominio utilizando la autenticación de Windows.