Usar Microsoft AD administrado con Cloud SQL

En esta página, se describen las formas de usar Cloud SQL para hacer lo siguiente:

  • Integrarte con el servicio administrado para Microsoft Active Directory (también llamado Microsoft AD administrado)
  • Conectarte a una instancia con un usuario de AD.

Una instancia de Cloud SQL integrada en Microsoft AD administrado admite la autenticación de Windows, además de la autenticación de SQL.

Antes de comenzar

  1. En Google Cloud Console, selecciona el nombre del proyecto.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.
  3. Instala e inicializa el SDK de Cloud.
  4. Asegúrate de tener la función de administrador de Cloud SQL en tu cuenta de usuario. Ve a la página IAM
  5. Revisa los requisitos previos para la integración.

Crea una instancia con autenticación de Windows

Puedes integrarlo en Microsoft AD administrado durante la creación de la instancia, lo que habilita la autenticación de Windows para la instancia. Para integrar, elige un dominio a fin de que la instancia se una. Si la unión a un dominio falla, falla la creación de la instancia.

A fin de prepararte para crear una instancia con autenticación de Windows, revisa las sugerencias y las limitaciones y alternativas.

Se admite una instancia con IP pública, siempre que también tenga una IP privada. La IP privada debe estar habilitada para la instancia. Luego, puedes usar una IP pública o privada para conectarte a la instancia, siempre que ambas estén disponibles.

A continuación, se muestran las opciones para crear una instancia integrada en Microsoft AD administrado.

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haga clic en Crear instancia.
  3. Haz clic en Elegir SQL Server.
  4. Ingresa un nombre para la instancia. No incluyas información sensible ni información de identificación personal en el nombre de la instancia, ya que es visible a nivel externo. No debes incluir el ID del proyecto en el nombre de la instancia. Este se creará de forma automática cuando corresponda (por ejemplo, en los archivos de registro).
  5. Ingresa la contraseña para el usuario 'sqlserver'.
  6. Configura la región de tu instancia. Consulta Recomendaciones para la integración con Microsoft AD administrado.
  7. En la sección Opciones de configuración, establece las opciones que desees (pero espera hasta el siguiente paso para ver las opciones de autenticación).
  8. Haz clic en Autenticación. El menú desplegable para unirse a un dominio de Active Directory administrado tiene una lista de todos los dominios de Microsoft AD administrado que se agregaron antes en tu proyecto.
  9. Selecciona un dominio en el menú desplegable para unirse a un dominio de Active Directory administrado.
  10. Cuando termines de seleccionar las opciones de configuración, haz clic en Crear. Cloud SQL crea de forma automática una cuenta de servicio por producto y por proyecto. Si la cuenta no tiene la función apropiada, se te solicitará que otorgues la función managedidentities.sqlintegrator.

gcloud

El siguiente comando crea una instancia que está integrada en Microsoft AD administrado y, por lo tanto, está habilitada para la autenticación de Windows. Si quieres obtener más información sobre el comando básico para crear una instancia, consulta Crea instancias.

Especifica un parámetro de --active-directory-domain=DOMAIN en el comando de gcloud. Por ejemplo, especifica lo siguiente: --active-directory-domain=ad.mydomain.com

Este es un prototipo del comando de gcloud:

gcloud beta sql instances create INSTANCE_NAME \
--database-version=EDITION \
--root-password=PASSWORD \
--active-directory-domain=DOMAIN\
--cpu=CPU \
--memory=MEMORY  \
--network=NETWORK

REST

Con la API de REST, puedes crear una instancia que esté integrada en Microsoft AD administrado. Especifica un dominio, como subdomain.mydomain.com, para el campo domain, como se muestra en este prototipo de una solicitud:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "ipConfiguration":{
         "privateNetwork":"network"
      },
      "activeDirectoryConfig":{
         "domain":"domain"
      }
   }
}

Actualiza una instancia con autenticación de Windows

Puedes actualizar el dominio de una instancia existente, cambiar o agregar un dominio.

Para obtener información general sobre cómo actualizar una instancia, consulta Edita instancias.

Si una instancia está unida actualmente a un dominio de Active Directory administrado, la instancia inicialmente se separa de ese dominio, antes de que se una al dominio nuevo. Si la actualización falla, es posible que la instancia ya no se una a ningún dominio.

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Haz clic en Edit.
  4. Haz clic en Autenticación. En el menú desplegable Unirse a un dominio de Active Directory, se muestra una lista de los dominios de Microsoft AD administrado que se agregaron antes en tu proyecto.
  5. En el menú desplegable en el que puedes unirte a un dominio administrado de Active Directory, selecciona un dominio nuevo (reemplazo) para tu instancia.
  6. Haz clic en Guardar para aplicar los cambios.

gcloud

El siguiente es el prototipo de un comando para actualizar una instancia existente. El comando agrega o reemplaza un dominio. Pasa --active-directory-domain=DOMAIN al comando de la siguiente manera:

gcloud beta sql instances patch INSTANCE_NAME \
--active-directory-domain=DOMAIN

REST

Con la API de REST, puedes actualizar una instancia existente. Especifica un dominio, como subdomain.mydomain.com, en el campo domain. El siguiente es el prototipo de una solicitud:

{
   "settings":{
      "activeDirectoryConfig":{
         "domain":"domain"
      }
   }
}

Quita la autenticación de Windows de una instancia

Puedes quitar la autenticación de Windows y, por lo tanto, una integración administrada de Microsoft AD en una instancia existente.

Console

  1. En Google Cloud Console, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Haz clic en Edit.
  4. Haz clic en Autenticación. El menú desplegable para unirse a un dominio de Active Directory administrado tiene una lista de los dominios de Microsoft AD administrado que se agregaron antes en tu proyecto.
  5. En el menú desplegable, selecciona Sin dominio/Unirse más tarde para tu instancia.
  6. Lee el mensaje sobre el reinicio de la instancia y haz clic en Cerrar.
  7. Haz clic en Guardar para aplicar los cambios.

gcloud

Para quitar una instancia de un dominio y quitar la autenticación de Windows, usa un valor en blanco para el dominio. Es decir, en tu comando, usa un valor en blanco para el parámetro --active-directory-domain de la siguiente manera:

gcloud beta sql instances patch INSTANCE_NAME \
--active-directory-domain=

REST

Con la API de REST, puedes quitar una instancia de un dominio. Especifica un valor en blanco en el campo domain, de la siguiente manera:

{
   "settings":{
      "activeDirectoryConfig":{
         "domain":""
      }
   }
}

Conéctate a una instancia con un usuario

En Cloud SQL para SQL Server, el usuario predeterminado es sqlserver.

Después de integrar una instancia con Microsoft AD administrado, puedes conectarte a la instancia con el usuario sqlserver, de la siguiente manera:

  1. Crea un acceso a SQL Server basado en un usuario o grupo de Windows, de la siguiente manera:

    CREATE LOGIN [domain\user_or_group] FROM WINDOWS
    
  2. Accede a la instancia con la autenticación de Windows, con el nombre DNS de la instancia. Estos son algunos ejemplos de nombres de DNS de instancia para especificar:

    • Para conectarte mediante una IP privada:

      private.myinstance.us-central1.myproject.cloudsql.mydomain.com
      

    • Para conectarte mediante una IP pública:

      public.myinstance.us-central1.myproject.cloudsql.mydomain.com
      

    • Para conectarte a través del proxy de autenticación de Cloud SQL (consulta también a continuación):

      proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
      

    Si usas la dirección IP de la instancia, los clientes Kerberos deben configurarse para admitir nombres de host de IP. No se admite el acceso con una dirección IP desde dominios conectados a través de una relación de confianza.

Usa el proxy de autenticación de Cloud SQL con la autenticación de Windows

Puedes usar el proxy de autenticación de Cloud SQL con tu integración de Microsoft AD administrado.

Antes de comenzar, revisa lo siguiente:

Pasos para la autenticación de Windows

Para obtener información general sobre cómo iniciar el proxy de autenticación de Cloud SQL, consulta Cómo iniciar el proxy de autenticación de Cloud SQL.

Para la autenticación de Windows, el proxy de autenticación de Cloud SQL debe ejecutarse en el puerto 1433. Debes mapear una entrada predefinida de nombre principal del servicio (SPN) a una dirección de proxy de autenticación de Cloud SQL:

proxy.[instance].[location].[project].cloudsql.[domain]

Ejecuta el proxy de autenticación de Cloud SQL de forma local

Si ejecutas el proxy de autenticación de Cloud SQL de forma local, usa el archivo de hosts para mapear lo siguiente a 127.0.0.1:

proxy.[instance].[location].[project].cloudsql.[domain]

Por ejemplo, puedes agregar lo siguiente al archivo de hosts (por ejemplo, a c:\windows\system32\drivers\etc\hosts):

127.0.0.1 proxy.[instance].[location].[project].cloudsql.[domain]

En ese ejemplo, puedes ejecutar el proxy de autenticación de Cloud SQL mediante este comando y hacer que esté disponible en 127.0.0.1:1433:

cloud_sql_proxy_x64.exe -credential_file credential.json  -instances=project:name=tcp:1433

Ejecuta el proxy de autenticación de Cloud SQL de forma no local

Para ejecutar el proxy de autenticación de Cloud SQL de forma no local, sigue las instrucciones de Ejecuta el proxy de autenticación de Cloud SQL de forma local, pero usa una entrada diferente en el archivo de hosts.

Específicamente, si un host no local es, por ejemplo, MyOtherHost, puedes agregar lo siguiente al archivo de hosts:

127.0.0.1 MyOtherHost proxy.[instance].[location].[project].cloudsql.[domain]

Solución de problemas de resguardo de NTLM en clientes

Si usas la autenticación de Windows y la dirección IP de una instancia para acceder a una instancia, un cliente Kerberos debe configurarse a fin de admitir nombres de host de IP.

La autenticación NTLM no es compatible, pero es posible que algunos clientes Kerberos intenten recurrir a ella. Como se explica en esta sección, si intentas conectarte con SQL Server Management Studio (SSMS) y aparece el siguiente mensaje de error, es probable que se deba al resguardo de NTLM:

Login failed. The login is from an untrusted domain and cannot be used with Integrated authentication. (Microsoft SQL Server, Error: 18452)

NTLM es un conjunto de protocolos de seguridad de Microsoft para la autenticación. Consulta también los Motivos para el resguardo de NTLM.

Verificación de un resguardo de NTLM para un cliente de Windows

Desde Windows, para verificar que el error anterior se deba a un resguardo de NTLM, haz lo siguiente:

  1. Accede con las credenciales locales deseadas (no uses “Ejecutar como…”).
  2. Abre un símbolo del sistema.
  3. Ejecuta klist purge.
  4. Desde SSMS, intenta conectarte a SQL Server con la autenticación de Windows.
  5. Ejecuta klist y verifica si se emitió un ticket para "MSSQLSvc/<address>:1433 @ domain".
  6. Si no existe dicho ticket, es probable que el error se deba al resguardo de NTLM.
  7. Si existe el ticket, verifica que el controlador de SQL Server no aplique la autenticación de NTLM. También verifica si la autenticación de NTLM se aplica a través de la política de grupo.

Verificación de un resguardo de NTLM para un cliente de Linux

Desde Ubuntu 16.04, para verificar que el error anterior se deba al resguardo de NTLM, sigue los pasos de esta sección. Los pasos son similares a los de otras distribuciones de Linux.

Configura la autenticación de Kerberos

  1. Configura un cliente Kerberos:

    sudo apt-get install krb5-user
    
  2. Cuando se te solicite el dominio predeterminado, escribe un nombre de dominio local en letras mayúsculas.

  3. Ejecuta el siguiente comando para instalar las herramientas de línea de comandos de SQL Server:

    curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
    curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
    sudo apt-get update
    sudo apt-get install mssql-tools unixodbc-dev
    

Conéctate con la autenticación de Windows

  1. Ejecuta la herramienta kinit de la siguiente manera: kinit <user_account>
  2. Para conectarse con la autenticación de Windows, ejecuta: /opt/mssql-tools/bin/sqlcmd -S <address>
  3. Ejecuta el comando klist y verifica si se emitió un ticket específico para: "MSSQLSvc/<address>:1433 @ domain"
  4. Si no se emitió el ticket, es posible que el error anterior indique un problema que produzca el resguardo de NTLM.

Motivos para el resguardo de NTLM

El resguardo de NTLM es una configuración incorrecta de cliente que se puede asociar con las siguientes condiciones:

  • De forma predeterminada, Windows no intenta la autenticación de Kerberos para un host si el nombre de host es una dirección IP. Para habilitar la autenticación Kerberos desde el dominio administrado, prueba el método que se describe aquí. Este método no funciona con credenciales locales cuando se deben usar FQDN.
  • La autenticación de Kerberos mediante relaciones de confianza externas no funciona. En su lugar, usa relaciones de confianza de bosques, como se describe aquí.
  • La autenticación de Kerberos requiere el enrutamiento de sufijo de nombre para habilitar el hallazgo de servicios en otro bosque. Prueba el método que se describe aquí.
  • La autenticación de Kerberos no funciona si no hay ningún SPN registrado para el servicio. Usa solo FQDN o direcciones IP obtenidos de Google Cloud Console para conectarte con la autenticación de Windows.

Usuarios de AD locales: cómo crear un acceso a Windows

Puedes usar un usuario de AD local con el fin de crear un acceso a Windows en Cloud SQL para SQL Server.

Por ejemplo, puedes conectarte con SQL Server Management Studio (SMSS), que se ejecuta en una VM de Windows alojada en la nube privada virtual (VPC) del proyecto de Google Cloud.

En el caso de la autenticación de Windows, en este contexto, Cloud SQL para SQL Server solo es compatible con el protocolo de Kerberos. Para la autenticación de Windows basada en Kerberos, el cliente debe resolver el nombre de DNS de AD local y Microsoft AD administrado.

Configura relaciones de confianza unidireccionales o bidireccionales

Primero, decide si usarás una relación de confianza unidireccional o bidireccional.

Luego, sigue las instrucciones para establecer la relación de confianza entre el dominio de AD local y el dominio de Microsoft AD administrado.

Configura una VM de Windows y crea un acceso a Windows

Después de establecer la relación de confianza entre el dominio de AD local y el dominio de Microsoft AD administrado, completa los siguientes pasos. Para fines de ejemplo, en estos pasos se usa SQL Server Management Studio (SSMS), que se ejecuta en una VM de Windows y se aloja en la VPC del proyecto de Google Cloud:

  1. Crea una VM de Windows.
    • Crea una VM con una versión de Windows compatible con Microsoft AD administrado.
    • Crea la VM en el proyecto que aloja tu dominio de Microsoft AD administrado. Si hay una VPC compartida que sea una red autorizada, también puedes crear la VM en cualquiera de sus proyectos de servicio.
    • Crea la VM en una red de VPC que sea una red autorizada del dominio de Microsoft AD administrado y tenga configurado el acceso a servicios privados para Cloud SQL.
  2. Une la VM de Windows al dominio de Microsoft AD administrado.
  3. Instala SSMS en la VM de Windows.
  4. Resuelve el dominio local en la red de VPC
    • Desde la red autorizada en la que se ejecuta la VM de Windows, habilita la resolución de DNS local mediante los pasos que se indican en la página Resuelve consultas para objetos ajenos a AD administrado. Los pasos que se indican en esa página son requisitos previos para que la autenticación de Windows basada en Kerberos funcione para los usuarios locales.
  5. Crea un acceso a Windows para un usuario local.

    • Sigue las instrucciones para CREAR ACCESO a fin de crear un acceso a Windows para un usuario local. Por ejemplo, especifica un comando similar al siguiente:
    CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS
    
  6. Accede a tu instancia de Cloud SQL para SQL Server mediante las instrucciones específicas de la aplicación a fin de acceder a un usuario local. Por ejemplo, si usas SQL Server Management Studio, consulta estas instrucciones.

Si se produce un problema durante el acceso a una instancia de SQL Server, realiza estas verificaciones:

  • Verifica las configuraciones del firewall de la red local y la VPC autorizada por el proyecto con las instrucciones para crear una relación de confianza con un dominio local.
  • Verifica el Enrutamiento de sufijo de nombre para la relación de confianza local.
  • Verifica que puedas realizar estas operaciones de resolución de DNS desde la VM de Windows que ejecuta SSMS:
    • nslookup fqdn-for-managed-ad-domain
    • nslookup fqdn-for-on-premises-ad-domain
    • nslookup fqdn-for-cloud-sql-server-instance

Sugerencias

  • Se admite una instancia con IP pública, siempre que también tenga una IP privada. La IP privada debe estar habilitada para la instancia. Luego, puedes usar una IP pública o privada para conectarte a la instancia, siempre que ambas estén disponibles.
  • Si recibes uno de los siguientes errores, confirma que cumples con todos los requisitos previos para la integración:
    • "No se encontró la cuenta de servicio por proyecto y por producto"
    • “Permiso insuficiente para integrarse con el servicio administrado para el dominio de Microsoft Active Directory”
  • Si recibes el error “No se encontró el dominio”, verifica que el nombre de dominio, que distingue entre mayúsculas y minúsculas, esté correcto.
  • Si la autenticación de Windows falla desde un dominio que está conectado a través de una relación de confianza, verifica que la autenticación de Windows funcione para un usuario desde un dominio administrado. Si funciona, sigue estas instrucciones:
    1. Verifica que hayas usado un nombre de DNS. Las direcciones IP no son compatibles desde dominios conectados mediante una relación de confianza.
    2. Asegúrate de haber seguido todos los pasos para crear una relación de confianza con un dominio local, incluida la apertura de todos los puertos de firewall.
    3. Valida la relación de confianza.
    4. Verifica que la dirección de la confianza permita a los usuarios del dominio (conectados a través de una relación de confianza) autenticarse en el dominio administrado.
    5. Verifica que el enrutamiento de sufijo de nombre esté configurado en el dominio que se conecta a través de una relación de confianza.
    6. Verifica que la confianza funcione sin usar Cloud SQL para SQL Server:
      1. Crea una VM de Windows.
      2. Únete al dominio de Microsoft AD administrado.
      3. Intenta ejecutar, por ejemplo, Notepad como un usuario desde el dominio que se conecta a través de una relación de confianza.
    7. Reinicia la VM de cliente y vuelve a probar la autenticación de Windows.
  • Puedes intentar crear un acceso a SQL Server, pero entonces puedes recibir el siguiente error: “No se encontró el usuario de Windows NT o el nombre o dominio del grupo. Vuelve a verificar el nombre”. Esto puede deberse a que los grupos locales del dominio no son compatibles; si corresponde, usa grupos globales o universales.
  • Cuando un usuario las emite desde un dominio conectado a través de una relación de confianza, las consultas de SQL Server pueden generar el siguiente error: “No se pudo obtener información sobre el grupo o usuario de Windows NT”. Este error se puede producir, por ejemplo, si creas accesos desde dominios conectados a través de una relación de confianza. El error también puede ocurrir si otorgas privilegios a los accesos desde dominios conectados a través de una relación de confianza. En estos casos, reintentar la operación suele dar buenos resultados. Si los reintentos fallan, cierra la conexión y abre una nueva.
  • Si las consultas de SQL Server generan el error “El acceso es de un dominio no confiable”, ten en cuenta que las direcciones IP no son compatibles con los usuarios de dominios conectados mediante una relación de confianza. Además, las siguientes acciones pueden resolver este problema:
    • Si se usa una dirección IP para conectar usuarios desde un dominio administrado, sigue estas instrucciones.
    • Evita usar proxies y siempre usa el mismo nombre de DNS a fin de conectarte a Cloud SQL para SQL Server, como lo ves en Google Cloud Console.
    • Borra definitivamente los tickets de Kerberos existentes. El error anterior puede ocurrir si tenías un cliente que se conectó recientemente a una instancia de SQL Server, y la instancia se detuvo y se inició. También puede que el error se produzca si se inhabilita la autenticación de Windows y se vuelve a habilitar para la instancia de SQL Server. Si el cliente usa la caché de credenciales de Windows, bloquea y desbloquea la estación de trabajo del cliente o ejecuta klist purge.
  • Un intento de habilitar la autenticación de Windows puede generar el error “Esta instancia necesita una fecha más reciente de creación para admitir el Servicio administrado para Microsoft Active Directory”. Ten en cuenta lo siguiente:
    • En Cloud SQL, si una instancia de SQL Server se creó el 12 de marzo de 2021 o antes, no se puede integrar en Microsoft AD administrado.
  • Un intento de crear una instancia de SQL Server puede generar el error “Esta instancia no admite el servicio administrado para Microsoft Active Directory”. Si recibes este error, es posible que el proyecto no sea compatible. Intenta usar otro.
  • Si una instancia tiene problemas continuos con la autenticación de Windows (sin importar si esta se actualizó recientemente o no), intenta desunir el dominio de Active Directory administrado y, luego, volver a unirlo. Para ello, usa el procedimiento de actualización a fin de separar y volver a unir el dominio. Esto no quita los usuarios o accesos autenticados con Windows existentes en tus bases de datos. Sin embargo, quitar la autenticación de Windows hace que una instancia se reinicie.

Soluciona problemas

Haz clic en los vínculos de la tabla para obtener más información:

Para este error… El problema podría ser… Solución
Per-product, per-project service account not found. El nombre de la cuenta de servicio es incorrecto. En la página Cuentas de servicio, asegúrate de haber creado una cuenta de servicio para el proyecto de usuario correcto.
Insufficient permission to integrate with Managed Service for Microsoft Active Directory domain. Falta la función managedidentities.sqlintegrator en la cuenta de servicio. En la página IAM y administración, agrega la función managedidentities.sqlintegrator a tu cuenta de servicio.
Domain not found. El dominio no existe o se escribió mal. Asegúrate de que el nombre de dominio sea correcto y que exista en el mismo proyecto de usuario. Distingue entre mayúsculas y minúsculas.
The domain is busy with another operation. Please retry. Otra instancia de Cloud SQL ejecuta una operación en el mismo dominio de Active Directory administrado. Vuelve a intentar la operación. Si realizas un lote de actualizaciones en las instancias de Cloud SQL conectadas al mismo dominio, limita cuántas se realizan en paralelo.
The operation completed but an update to Active Directory failed. You may experience issues with Windows Authentication on this instance, please see https://cloud.google.com/sql/docs/sqlserver/configure-ad for tips. No se pudieron realizar las actualizaciones necesarias en el dominio de Active Directory administrado. Si tienes problemas con la autenticación de Windows, puedes intentar separar el dominio de Active Directory administrado y, luego, volver a unirlo. Para ello, usa el procedimiento de actualización a fin de separar y volver a unir el dominio. Esto no quita los usuarios o accesos autenticados con Windows existentes en tus bases de datos. Sin embargo, quitar la autenticación de Windows hace que una instancia se reinicie.
This instance would need a more recent creation date to support Managed Service for Microsoft Active Directory. En Cloud SQL, si una instancia de SQL Server se creó el 12 de marzo de 2021 o antes, no se puede integrar en Microsoft AD administrado. Prueba tu operación en una instancia creada después del 12 de marzo de 2021.

¿Qué sigue?

  • Confirma que revisaste por completo la página de descripción general, que incluye las limitaciones y las funciones no compatibles. Esa página también incluye vínculos a documentación adicional.