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
- En la consola de Google Cloud , selecciona el nombre de tu proyecto.
- Asegúrate de tener habilitada la facturación para tu Google Cloud proyecto. Obtén más información para confirmar que tienes habilitada la facturación para tu proyecto.
- Instala e inicializa la CLI de gcloud.
- Asegúrate de tener la función de administrador de Cloud SQL en tu cuenta de usuario. Ve a la página de Identity and Access Management (IAM).
- Revisa los requisitos previos para la integración.
- Verifica que la replicación de Active Directory funcione correctamente. Si no se implementa correctamente, es posible que experimentes problemas con la integración de CMAD.
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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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, ingresaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: Es el nombre de la unidad organizativa que deseas usar.
Por ejemplo,
CLOUDOUPuedes 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,
DOMAINPuedes 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,
COMUn valor completo para la marca--active-directory-organizational-unitpodrí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:
- 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
- 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.
- A continuación, se muestra un ejemplo de conexión a través de una IP privada:
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:
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:
- Accede con las credenciales locales que quieras usar. No uses comandos de
"Run as...". - Abre un símbolo del sistema.
- Ejecuta
klist purge. - Desde SSMS, intenta conectarte a SQL Server con la autenticación de Windows.
- Ejecuta
klisty verifica si se emitió un ticket para el error devuelto. - Si no existe dicho ticket, es probable que se deba al resguardo de NTLM.
- 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
- Configura un cliente Kerberos:
sudo apt-get install krb5-user
- Cuando se te solicite el dominio predeterminado, escribe un nombre de dominio local en letras mayúsculas.
- 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
- Ejecuta la herramienta kinit de la siguiente manera:
kinit
- Para conectarte con la autenticación de Windows, ejecuta el siguiente comando:
/opt/mssql-tools/bin/sqlcmd -S
- Ejecuta el comando klist y verifica si se emitió un ticket específicamente para el siguiente mensaje devuelto:
MSSQLSvc/:1433 @ domain
- 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:
- 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.
- 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.
- Valida la relación de confianza.
- 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.
- Sigue los pasos que se describen en Prepara un dominio no enrutable para la sincronización de directorios.
- Verifica que la confianza funcione sin usar Cloud SQL para SQL Server:
- Crea una VM de Windows.
- Únete al dominio de CMAD.
- Intenta ejecutar, por ejemplo, Notepad como un usuario desde el dominio que se conecta a través de una relación de confianza.
- 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:
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:
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?
- Descripción general de Active Directory administrado por el cliente (CMAD)
- Usa la herramienta de diagnóstico de Active Directory