Usa Microsoft Active Directory administrado por el cliente (CMAD)

En esta página, se describe cómo usar Microsoft Active Directory administrado por el cliente (también conocido como AD administrado 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 en CMAD admite la autenticación de Windows, además de la autenticación de SQL.

Antes de comenzar

Crea una instancia con autenticación de Windows

Puedes integrar CMAD durante la creación de la instancia habilitando 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.

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

Usa cualquiera de las siguientes opciones para crear una instancia integrada en CMAD y, como resultado, habilitada para la autenticación de Windows. Si quieres obtener información sobre el comando básico para crear una instancia, consulta Crea instancias.

gcloud

Para crear una instancia con CMAD, ejecuta el siguiente comando:

  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

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia de Cloud SQL para SQL Server que deseas crear.
  • DATABASE_VERSION: Es la versión de la base de datos que deseas usar, como SQLSERVER_2019_STANDARD.
  • DOMAIN: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que residirá la instancia.
  • SECRET_NAME: Es el secreto que deseas usar.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.
  • CPU: Es la cantidad de CPU que deseas asignar a la instancia.
  • MEMORY: Es la cantidad de memoria que deseas 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

Reemplaza lo siguiente:

  • DATABASE_VERSION: Es la versión de la base de datos que deseas usar, como SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME: Es el nombre de la instancia de Cloud SQL para SQL Server que deseas crear.
  • REGION: Es la región en la que deseas que resida la instancia, como us-central1.
  • PASSWORD: Es la contraseña de la instancia.
  • MACHINE_TYPE: Es el tipo de máquina que deseas usar para 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: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que residirá la instancia.
  • SECRET_NAME: Es el secreto que deseas usar.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.

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, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

Reemplaza lo siguiente:

  • DATABASE_VERSION: Es la versión de la base de datos que deseas usar, como SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME: Es el nombre de la instancia de Cloud SQL para SQL Server que deseas crear.
  • REGION: Es la región en la que deseas que resida la instancia, como us-central1.
  • PASSWORD: Es la contraseña de la instancia.
  • MACHINE_TYPE: Es el tipo de máquina que deseas usar para 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: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que residirá la instancia.
  • SECRET_NAME: Es el secreto que deseas usar.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.

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, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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"
}

Actualiza una instancia con autenticación de Windows

Puedes actualizar el dominio de una instancia existente, por ejemplo, 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 CMAD, 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.

gcloud

El siguiente es un ejemplo 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 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

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia de Cloud SQL para SQL Server que deseas actualizar.
  • DOMAIN: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que reside la instancia.
  • SECRET_NAME: Es el secreto asociado a la instancia.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.

REST v1

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

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • DOMAIN: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que reside la instancia.
  • SECRET_NAME: Es el secreto asociado a la instancia.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.

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, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • DOMAIN: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que reside la instancia.
  • SECRET_NAME: Es el secreto asociado a la instancia.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.

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, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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 administrado para 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 la CLI de gcloud:

  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

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia de Cloud SQL para SQL Server que deseas modificar.
  • DOMAIN: Es el nombre de dominio que deseas usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: Indica el modo del dominio. Si Google creó el dominio y es su propietario, ingresa MANAGED_ACTIVE_DIRECTORY. Si el usuario creó el dominio y es su propietario, ingresa CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar. Por ejemplo, CLOUDOU Puedes ingresar tantas unidades organizativas como necesites.
  • DC1: Es el primer componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, DOMAIN Puedes ingresar tantos componentes de dominio como necesites.
  • DC2: Es el segundo componente del dominio que se usa para el nombre distintivo de la unidad organizativa. Por ejemplo, COM Un valor completo para la marca --active-directory-organizational-unit podría verse de la siguiente manera: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Puedes ingresar tantos componentes de dominio como necesites.
  • PROJECT_ID: Es el ID del proyecto en el que reside la instancia.
  • SECRET_NAME: Es el secreto asociado a la instancia.
  • IP1: Es la dirección IP del primer servidor DNS que deseas usar, como 10.20.30.40. Puedes ingresar tantas direcciones IP como sea necesario.
  • IP2: Es la dirección IP del segundo servidor DNS que deseas usar, como 20.30.40.50. Puedes ingresar tantas direcciones IP como sea necesario.

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 CMAD, 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 y el nombre de DNS de la instancia. Estos son algunos ejemplos de nombres de DNS de instancia para especificar:
    • A continuación, se muestra un ejemplo de conexión a través de una IP privada:
            private.myinstance.us-central1.myproject.cloudsql.mydomain.com
            
    • A continuación, se muestra un ejemplo de conexión a través de una IP pública:
              public.myinstance.us-central1.myproject.cloudsql.mydomain.com
              
    • En el siguiente ejemplo, se muestra una 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 Usa el proxy de Cloud SQL Auth con la autenticación de Windows.

Si usas la dirección IP de la instancia, debes configurar los clientes de Kerberos para admitir nombres de host de IP. Cloud SQL no admite el acceso con direcciones IP de dominios conectados a través de una relación de confianza.

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

Puedes usar el proxy de autenticación de Cloud SQL con tu integración de CMAD.

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 Cloud SQL Auth.

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

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

Ejecuta el proxy de Cloud SQL Auth de forma local

Si ejecutas el proxy de Cloud SQL Auth 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 Cloud SQL Auth mediante este comando y hacer que esté disponible en 127.0.0.1:1433:

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

Ejecuta el proxy de Cloud SQL Auth de forma no local

Para ejecutar el proxy de Cloud SQL Auth de forma externa, sigue las instrucciones de Ejecuta el proxy de Cloud SQL Auth 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]

Soluciona 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, debes configurar un cliente Kerberos para admitir nombres de host de IP.

Cloud SQL no admite la autenticación NTLM, 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. Para obtener más información, consulta Motivos para el resguardo de NTLM.

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

Desde una terminal de Windows, para verificar que un resguardo de NTLM haya provocado un error, completa los siguientes pasos:

  1. Accede con las credenciales locales que quieras usar. No uses comandos de "Run as...".
  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 el error devuelto.
    MSSQLSvc/
    :1433 @ domain.
  6. Si no existe dicho ticket, es probable que 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 una política de grupo.

Verifica el resguardo de NTLM para un cliente de Linux

Desde Ubuntu 16.04, para verificar que un resguardo de NTLM haya provocado un error, 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 
        
  2. Para conectarte con la autenticación de Windows, ejecuta el siguiente comando:
        /opt/mssql-tools/bin/sqlcmd -S 
  3. Ejecuta el comando klist y verifica si se emitió un ticket específicamente para el siguiente mensaje devuelto:
        MSSQLSvc/
    :1433 @ domain
  4. Si no se emitió el ticket, es posible que el error anterior indique un problema que produce 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 para direcciones IP, prueba el método que se describe en la documentación de Microsoft.
  • La autenticación de Kerberos mediante relaciones de confianza externas no funciona. Usa la confianza entre bosques en su lugar.
  • 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 en Cómo 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. Usa solo FQDN o direcciones IP que obtengas de la consola de Google Cloud para conectarte con la autenticación de Windows.

Crea un acceso a Windows para usuarios de AD locales

Sigue las instrucciones de CREATE LOGIN para 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

Sugerencias 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 para la instancia. Luego, puedes usar una IP pública o privada para conectarte a la instancia, siempre que ambas estén disponibles.
  • Antes de crear una instancia, incluso como instancia de reemplazo, revisa lo siguiente:
  • 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 por el cliente. Si es así, completa lo siguiente:
    1. Verifica que hayas usado un nombre de DNS. Las direcciones IP no son compatibles desde dominios conectados a través de una relación de confianza.
    2. Asegúrate de haber completado los pasos en Configura una relación de confianza entre dos dominios, 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.
    5. Sigue los pasos que se describen en Prepara un dominio no enrutable para la sincronización de directorios.
    6. Verifica que la confianza funcione sin usar Cloud SQL para SQL Server:
      1. Crea una VM de Windows.
      2. Únete al dominio de CMAD.
      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:
        Windows NT user or group domain\name not found. Check the name again.
        

    Esto puede deberse a que los grupos locales del dominio no son compatibles; si corresponde, usa grupos globales o universales.

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

    Las siguientes acciones podrían resolver este problema:

    • Si se usa una dirección IP para conectar usuarios desde un dominio administrado, sigue las instrucciones de la documentación de Microsoft.
    • Evita usar proxies y siempre usa el mismo nombre de DNS para conectarte a Cloud SQL para SQL Server, como lo ves en la consola de Google Cloud .
  • Si una instancia tiene problemas continuos con la autenticación de Windows (sin importar si esta se actualizó recientemente o no), intenta desunirla del dominio y, luego, volver a unirla. Para ello, usa el procedimiento de actualización para 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.
  • Usa la herramienta de diagnóstico de AD para solucionar problemas de configuración de AD con tu dominio administrado por el cliente y las instancias de Cloud SQL para SQL Server en la consola de Google Cloud . Omitir los pasos relacionados con Microsoft AD administrado

Solucionar problemas

En la siguiente tabla, se enumeran los mensajes de error comunes y las formas de abordarlos:

Para este error… El problema podría ser… Solución
Per-product, per-project Service Account (P4 SA) not found for project. 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.
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 pudieron realizar las actualizaciones necesarias en el dominio de CMAD. Si tienes problemas con la autenticación de Windows, puedes intentar separar el dominio de CMAD y, luego, volver a unirlo. Para ello, usa el procedimiento de actualización para 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 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. Las credenciales de administrador, la unidad organizativa y los servidores DNS son parámetros obligatorios. Vuelve a intentarlo 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.

¿Qué sigue?