Usar Microsoft Active Directory gestionado por el cliente (CMAD)

En esta página se describe cómo usar Microsoft Active Directory gestionado por el cliente (también conocido como AD gestionado por el cliente o CMAD):

  • Integra Cloud SQL para SQL Server con CMAD.
  • Conéctate a una instancia con un usuario de Active Directory (AD).

Una instancia de Cloud SQL integrada con CMAD admite la autenticación de Windows, además de la autenticación de SQL.

Antes de empezar

Crear una instancia con autenticación de Windows

Puedes integrar CMAD durante la creación de la instancia habilitando la autenticación de Windows en la instancia. Para integrar, elige un dominio al que se unirá la instancia. Si no se puede unir a un dominio, no se podrá crear la instancia.

Antes de crear una instancia con autenticación de Windows, consulta los consejos y las limitaciones y alternativas.

Aunque puedes usar una IP pública, la instancia de Cloud SQL también debe tener acceso a una IP privada.

Utilice cualquiera de las siguientes opciones para crear una instancia integrada con CMAD y, por lo tanto, habilitada para la autenticación de Windows. Para obtener información sobre el comando básico para crear una instancia, consulta Crear instancias.

gcloud

Para crear una instancia con CMAD, ejecuta lo siguiente:

  gcloud sql instances create INSTANCE_NAME \
  --database-version=DATABASE_VERSION \
  --root-password=PASSWORD \
  --active-directory-domain=DOMAIN \
  --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \
  --active-directory-organizational-unit="OU=CLOUD_OU,DC=DC1,DC=DC2" \
  --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \
  --active-directory-dns-servers=IP1,IP2 \
  --cpu=CPU \
  --memory=MEMORY  \
  --network=NETWORK

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia de Cloud SQL para SQL Server que quieres crear.
  • DATABASE_VERSION: la versión de la base de datos que quieras usar, como SQLSERVER_2019_STANDARD.
  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se ubicará la instancia.
  • SECRET_NAME: es el secreto que quieres usar.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.
  • CPU: es la cantidad de CPU que quieres asignar a la instancia.
  • MEMORY: es la cantidad de memoria que quieres asignar a la instancia.
  • NETWORK: es el nombre de la red a la que se conectará tu instancia, como projects/my-gcp-project-123/global/networks/my-production-vpc.

REST v1

Para crear una instancia con CMAD, usa una solicitud POST con el método users:insert.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

Haz los cambios siguientes:

  • DATABASE_VERSION: la versión de la base de datos que quieras usar, como SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME: el nombre de la instancia de Cloud SQL para SQL Server que quieres crear.
  • REGION: la región en la que quieres que se encuentre la instancia, como us-central1.
  • PASSWORD: la contraseña de la instancia.
  • MACHINE_TYPE: el tipo de máquina que quieres usar en la instancia, como db-n1-standard-8.
  • NETWORK: es el nombre de la red a la que se conectará tu instancia, como projects/my-gcp-project-123/global/networks/my-production-vpc.
  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se ubicará la instancia.
  • SECRET_NAME: es el secreto que quieres usar.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
   "databaseVersion":"DATABASE_VERSION",
   "name":"INSTANCE_NAME",
   "region":"REGION",
   "rootPassword":"PASSWORD",
   "settings":{
      "tier":"MACHINE-TYPE",
      "ipConfiguration":{
         "privateNetwork":"NETWORK"
      },
      "activeDirectoryConfig":{
         "domain":"DOMAIN"
         "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
         "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
         "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
         "dns_servers":"IP1,IP2"
      }
   }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Para crear una instancia con CMAD, usa una solicitud POST con el método users:insert.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

Haz los cambios siguientes:

  • DATABASE_VERSION: la versión de la base de datos que quieras usar, como SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME: el nombre de la instancia de Cloud SQL para SQL Server que quieres crear.
  • REGION: la región en la que quieres que se encuentre la instancia, como us-central1.
  • PASSWORD: la contraseña de la instancia.
  • MACHINE_TYPE: el tipo de máquina que quieres usar en la instancia, como db-n1-standard-8.
  • NETWORK: es el nombre de la red a la que se conectará tu instancia, como projects/my-gcp-project-123/global/networks/my-production-vpc.
  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se ubicará la instancia.
  • SECRET_NAME: es el secreto que quieres usar.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
   "databaseVersion":"DATABASE_VERSION",
   "name":"INSTANCE_NAME",
   "region":"REGION",
   "rootPassword":"PASSWORD",
   "settings":{
      "tier":"MACHINE-TYPE",
      "ipConfiguration":{
         "privateNetwork":"NETWORK"
      },
      "activeDirectoryConfig":{
         "domain":"DOMAIN"
         "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
         "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
         "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
         "dns_servers":"IP1,IP2"
      }
   }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Actualizar una instancia con autenticación de Windows

Puedes actualizar el dominio de una instancia, por ejemplo, cambiando o añadiendo un dominio.

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

Si una instancia está unida a un dominio de CMAD, primero se desunirá de ese dominio antes de unirse al nuevo. Si la actualización falla, es posible que la instancia ya no esté unida a ningún dominio.

gcloud

A continuación, se muestra un comando de ejemplo para actualizar una instancia. El comando añade o sustituye un dominio. Pasa --active-directory-domain=DOMAIN al comando de la siguiente manera:

  gcloud sql instances patch INSTANCE_NAME \
  --active-directory-domain=DOMAIN \
  --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \
  --active-directory-organizational-unit="OU=CLOUDOU,DC=DOMAIN,DC=COM" \
  --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \
  --active-directory-dns-servers=IP1,IP2

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia de Cloud SQL para SQL Server que quieres actualizar.
  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se encuentra la instancia.
  • SECRET_NAME: es el secreto asociado a la instancia.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.

REST v1

Para actualizar una instancia de CMAD, usa una solicitud PATCH con el método users:insert.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se encuentra la instancia.
  • SECRET_NAME: es el secreto asociado a la instancia.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
    "settings":{
        "activeDirectoryConfig":{
          "domain":"DOMAIN"
          "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
          "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
          "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
          "dns_servers":"IP1,IP2"
        }
    }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Para actualizar una instancia de CMAD, usa una solicitud PATCH con el método users:insert.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se encuentra la instancia.
  • SECRET_NAME: es el secreto asociado a la instancia.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
    "settings":{
        "activeDirectoryConfig":{
          "domain":"DOMAIN"
          "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
          "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
          "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
          "dns_servers":"IP1,IP2"
        }
    }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Migración entre el servicio gestionado de Microsoft Active Directory y CMAD

Para migrar una instancia de la integración con Managed Microsoft AD a la integración con CMAD, usa el siguiente comando de gcloud CLI:

  gcloud sql instances patch INSTANCE_NAME \
  --active-directory-domain=DOMAIN \
  --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \
  --active-directory-organizational-unit="OU=CLOUDOU,DC=DOMAIN,DC=COM" \
  --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \
  --active-directory-dns-servers=IP1,IP2

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia de Cloud SQL para SQL Server que quieres modificar.
  • DOMAIN: el nombre de dominio que quieras usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica el modo del dominio. Si Google ha creado el dominio y es su propietario, introduzca MANAGED_ACTIVE_DIRECTORY. Si el usuario crea el dominio y es su propietario, introduce CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: es el nombre de la unidad organizativa que quieres usar. Por ejemplo, CLOUDOU. Puedes introducir tantas unidades organizativas como necesites.
  • DC1: es el primer componente de dominio que se usa para el nombre distinguido de la unidad organizativa. Por ejemplo, DOMAIN. Puedes introducir tantos componentes de dominio como necesites.
  • DC2: es el segundo componente de dominio que se usa en el nombre distinguido de la unidad organizativa. Por ejemplo, COM. Un valor completo de la marca --active-directory-organizational-unit podría ser el siguiente: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes introducir tantos componentes de dominio como necesites.
  • PROJECT_ID: es el ID del proyecto en el que se encuentra la instancia.
  • SECRET_NAME: es el secreto asociado a la instancia.
  • IP1: es la dirección IP del primer servidor DNS que quieras usar, como 10.20.30.40. Puedes introducir tantas direcciones IP como necesites.
  • IP2: es la dirección IP del segundo servidor DNS que quieres usar, como 20.30.40.50. Puedes introducir tantas direcciones IP como necesites.

Conectarse a una instancia con un usuario

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

Después de integrar una instancia con CMAD, puedes conectarte a ella con el usuario sqlserver de la siguiente manera:

  1. Crea un inicio de sesión de SQL Server basado en un usuario o grupo de Windows de la siguiente manera:
          CREATE LOGIN [domain\user_or_group] FROM WINDOWS
        
  2. Inicia sesión en la instancia mediante la autenticación de Windows con el nombre DNS de la instancia. Estos son algunos ejemplos de nombres DNS de instancias que puede especificar:
    • Se muestra un ejemplo de conexión a través de una IP privada:
            private.myinstance.us-central1.myproject.cloudsql.mydomain.com
            
    • Se muestra un ejemplo de conexión a través de una IP pública:
              public.myinstance.us-central1.myproject.cloudsql.mydomain.com
              
    • Se muestra un ejemplo de conexión a través del proxy de autenticación de Cloud SQL:
              proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
              

      Para obtener más información, consulta Usar el proxy de autenticación de Cloud SQL con la autenticación de Windows.

Si utilizas la dirección IP de la instancia, debes configurar los clientes de Kerberos para que admitan nombres de host IP. Cloud SQL no admite el inicio de sesión con direcciones IP de dominios conectados mediante una relación de confianza.

Usar 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 CMAD.

Antes de empezar, 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 Iniciar el proxy de autenticación de Cloud SQL.

Para la autenticación de Windows, debes ejecutar el proxy de autenticación de Cloud SQL en el puerto 1433. Para asignar una entrada de nombre principal de servicio (SPN) predefinida a una dirección del proxy de autenticación de Cloud SQL, usa el siguiente comando:

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

Ejecutar 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 hosts para asignar lo siguiente a 127.0.0.1:

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

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

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

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

cloud-sql-proxy.exe --credentials-file credential.json project:name

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

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

En concreto, si un host no local es, por ejemplo, MyOtherHost, puedes añadir lo siguiente al archivo hosts:

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

Solucionar problemas de fallback de NTLM en clientes

Si usas la autenticación de Windows y una dirección IP de instancia para iniciar sesión en una instancia, debes configurar un cliente de Kerberos para que admita nombres de host IP.

Cloud SQL no admite la autenticación NTLM, pero es posible que algunos clientes de 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 la causa sea la alternativa 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. Para obtener más información, consulta Motivos por los que se recurre a NTLM.

Verificación de una alternativa NTLM para un cliente de Windows

Desde un terminal de Windows, para verificar que un error se ha debido a una alternativa de NTLM, haz lo siguiente:

  1. Inicia sesión con las credenciales locales que quieras usar. No uses comandos "Run as...".
  2. Abre el símbolo del sistema.
  3. Ejecuta klist purge.
  4. En SSMS, intenta conectarte a SQL Server con la autenticación de Windows.
  5. Ejecuta klist y comprueba si se ha emitido un ticket para el error devuelto.
    MSSQLSvc/
    :1433 @ domain.
  6. Si no existe, es probable que el error se deba a la alternativa NTLM.
  7. Si existe un ticket de este tipo, comprueba que tu controlador de SQL Server no aplique la autenticación NTLM. También debes comprobar si la autenticación NTLM se aplica mediante una política de grupo.

Verificar la alternativa NTLM para un cliente Linux

En Ubuntu 16.04, para verificar si un error se ha debido a una alternativa NTLM, sigue los pasos de esta sección. Los pasos son similares a los de otras distribuciones de Linux.

Configurar la autenticación de Kerberos

  1. Configura un cliente de Kerberos:
          sudo apt-get install krb5-user
        
  2. Cuando se te pida el reino predeterminado, escribe el nombre de un dominio local con 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
        

Conectarse con la autenticación de Windows

  1. Ejecuta la herramienta kinit de la siguiente manera:
        kinit 
        
  2. Para conectarte con la autenticación de Windows, ejecuta lo siguiente:
        /opt/mssql-tools/bin/sqlcmd -S 
  3. Ejecuta el comando klist y comprueba si se ha emitido un ticket específicamente para el siguiente mensaje devuelto:
        MSSQLSvc/
    :1433 @ domain
  4. Si no se ha emitido el ticket, es probable que el error anterior indique un problema que provoque la activación de NTLM.

Motivos para usar NTLM como alternativa

El uso de NTLM como alternativa es un error de configuración del cliente que puede estar asociado a las siguientes condiciones:

  • De forma predeterminada, Windows no intenta autenticar con Kerberos un host si el nombre de host es una dirección IP. Para habilitar la autenticación de Kerberos para direcciones IP, prueba el método descrito en la documentación de Microsoft.
  • La autenticación de Kerberos a través de relaciones de confianza externas no funciona. Usa relaciones de confianza entre bosques en su lugar.
  • La autenticación de Kerberos requiere el enrutamiento de sufijos de nombres para poder encontrar servicios en otro bosque. Prueba el método descrito en Configurar una relación de confianza entre dos dominios.
  • La autenticación de Kerberos no funciona si no hay ningún SPN registrado para el servicio. Para conectarte con la autenticación de Windows, usa solo FQDNs o direcciones IP que obtengas de la Google Cloud consola.

Crear un inicio de sesión de Windows para usuarios de AD local

Siga las instrucciones de CREATE LOGIN para crear un inicio de sesión de Windows para un usuario local. Por ejemplo, especifica un comando similar al siguiente:

CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS

Consejos para usar CMAD con Cloud SQL

.
  • Se admite una instancia con IP pública, siempre que también tenga una IP privada. La IP privada debe estar habilitada en la instancia. Después, puedes elegir si quieres usar una IP pública o una IP privada para conectarte a la instancia, siempre que ambas estén disponibles.
  • Antes de crear una instancia, incluida una instancia de sustitución, consulta lo siguiente:
  • Si la autenticación de Windows falla en un dominio conectado a través de una relación de confianza, comprueba que la autenticación de Windows funciona para un usuario de un dominio gestionado por el cliente. Si es así, haz lo siguiente:
    1. Comprueba que has usado un nombre DNS. No se admiten direcciones IP de dominios conectados mediante una relación de confianza.
    2. Asegúrate de haber completado los pasos descritos en el artículo Configurar una relación de confianza entre dos dominios, incluido el paso de abrir todos los puertos del firewall.
    3. Valida la relación de confianza.
    4. Verifica que la dirección de la confianza permite que los usuarios del dominio (conectado a través de una relación de confianza) se autentiquen.
    5. Sigue los pasos que se indican en el artículo Preparar un dominio no enrutable para la sincronización de directorios.
    6. Verifica que la confianza funciona sin usar Cloud SQL para SQL Server:
      1. Crea una VM de Windows.
      2. Únelo al dominio de CMAD.
      3. Intenta ejecutar, por ejemplo, el Bloc de notas como usuario del dominio que está conectado a través de una relación de confianza.
    7. Reinicia la VM cliente y vuelve a probar la autenticación de Windows.
  • Puede que intentes crear un inicio de sesión de SQL Server, pero recibas el siguiente error:
        Windows NT user or group domain\name not found. Check the name again.
        

    Esto puede deberse a que no se admiten grupos locales de dominio. Si es el caso, usa grupos globales o universales.

  • Si las consultas de SQL Server devuelven el siguiente error, ten en cuenta que las direcciones IP no se admiten para los usuarios de dominios conectados a través de una relación de confianza:
        The login is from an untrusted domain.
        

    Las siguientes acciones pueden solucionar este problema:

    • Si se usa una dirección IP para conectar a los usuarios de un dominio gestionado, sigue las instrucciones de la documentación de Microsoft.
    • Evita usar proxies y utiliza siempre el mismo nombre de DNS para conectarte a Cloud SQL para SQL Server, tal como aparece en la consola de Google Cloud .
  • Si una instancia tiene problemas continuos con la autenticación de Windows (tanto si la instancia se ha actualizado recientemente como si no), prueba a quitarla del dominio y, a continuación, volver a añadirla. Para ello, siga el procedimiento de actualización para abandonar el dominio y, a continuación, volver a unirse a él. Si lo haces, no se eliminarán los usuarios ni los inicios de sesión autenticados con Windows que haya en tus bases de datos. Sin embargo, si quitas la autenticación de Windows, la instancia se reiniciará.
  • Usa la herramienta de diagnóstico de AD para solucionar problemas de configuración de AD con tu dominio gestionado por el cliente y las instancias de Cloud SQL para SQL Server en la Google Cloud consola. Omite los pasos relacionados con Microsoft AD gestionado.

Solucionar problemas

En la siguiente tabla se muestran mensajes de error habituales y posibles soluciones:

Para este error... El problema puede deberse a lo siguiente: Prueba esto...
Per-product, per-project Service Account (P4 SA) not found for project. El nombre de la cuenta de servicio no es correcto. En la página Cuentas de servicio, asegúrate de haber creado una cuenta de servicio para el proyecto de usuario correcto.
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-cmad for tips. No se han podido realizar las actualizaciones necesarias en el dominio de CMAD. Si tienes problemas con la autenticación de Windows, puedes probar a abandonar el dominio de CMAD y volver a unirte. Para ello, sigue el procedimiento de actualización para abandonar el dominio y, después, volver a unirte a él. Si lo haces, no se eliminarán los usuarios ni los inicios de sesión autenticados de Windows que haya en tus bases de datos. Sin embargo, si quitas la autenticación de Windows, la instancia se reiniciará.
This instance would need new network architecture to support Active Directory. See https://cloud.google.com/sql/docs/sqlserver/configure-cmad." Esta instancia no usa la nueva arquitectura de red. Actualiza la instancia a la nueva arquitectura de red.
Admin credential secret name / Organizational unit / DNS Server names is required or Invalid Admin credential secret name / OrganizationalUnit / DNS Server names provided. Se necesitan las credenciales de administrador, la unidad organizativa y los servidores DNS. Vuelve a enviar la solicitud con estos parámetros especificados.
Integration failed due to insufficient permissions. The Service Agent for this project must be granted the secretmanager.secrets.getIamPolicy and secretmanager.secrets.setIamPolicy permissions on the provided admin credential key in Secret Manager. El agente de servicio de este proyecto no tiene los permisos necesarios. Crea un rol personalizado con los permisos secretmanager.secrets.getIamPolicy y secretmanager.secrets.setIamPolicy, y asígnalo al agente de servicio de este proyecto. Para obtener más información, consulta Roles y permisos de Secret Manager.

Siguientes pasos