La integración de Cloud SQL para SQL Server con Microsoft Entra ID proporciona administración de identidades y accesos (IAM) centralizada para tus bases de datos con tu arrendatario existente de Microsoft Entra ID.
Esta integración ofrece los siguientes beneficios:
Autenticación centralizada. Permite que los usuarios y las aplicaciones accedan a sus instancias de Cloud SQL para SQL Server con sus identidades existentes de Microsoft Entra ID sin volver a ingresar una contraseña. Esta capacidad elimina la necesidad de administrar contraseñas y accesos específicos de SQL Server por separado.
Seguridad mejorada. Te ayuda a aplicar las políticas de seguridad existentes de tu organización, como la autenticación de varios factores (MFA) y las reglas de acceso condicional (CA), a nivel de la base de datos.
Administración de usuarios simplificada. Cuando se inhabilita o quita la cuenta de Microsoft Entra ID de un usuario, se revoca automáticamente el acceso del usuario a la base de datos. Esta capacidad ayuda a simplificar la baja y las revisiones de acceso.
Requisitos previos para la integración
Para usar la integración de Cloud SQL para SQL Server con Microsoft Entra ID, tu instancia debe cumplir con los siguientes requisitos:
Debes tener una instancia existente de SQL Server 2022 o crear una nueva.
La autenticación de Microsoft Entra ID solo se admite en SQL Server 2022 y no está disponible en SQL Server 2017 ni en SQL Server 2019.
Habilita la autenticación de Microsoft Entra ID.
Antes de habilitar la autenticación de Microsoft Entra ID, completa los siguientes pasos en el portal de Azure:
- Busca tu ID de usuario de Microsoft Entra.
Crea un nuevo registro de aplicación en Microsoft Entra ID.
Cloud SQL para SQL Server usa esta aplicación para comunicarse con tu ID de inquilino de Microsoft Entra. Cuando crees la aplicación, anota el ID de cliente o de la aplicación.
Otorga permisos a la aplicación para leer datos de directorios:
- Selecciona el registro de la aplicación que acabas de crear y, luego, haz clic en Permisos de API.
- Selecciona Agregar un permiso > Microsoft Graph > Permisos de aplicación.
- Otorga uno de los siguientes conjuntos de permisos:
- Opción 1.
- Directory.Read.All
- Opción 2. Proporciona permisos más específicos.
- Application.Read.All
- Group.Read.All
- User.Read.All
- Opción 1.
- Otorga consentimiento de administrador para todo el arrendatario para permitir que la aplicación use estos permisos.
Conectividad de red
Microsoft Entra ID es un servicio público que usa extremos públicos para la autenticación. Para que la autenticación de Microsoft Entra ID funcione correctamente, tu instancia de Cloud SQL debe poder establecer conexiones salientes con estos extremos públicos. En las siguientes secciones, se analizan los próximos pasos según la configuración de conectividad de red de tu instancia:
Instancias con una IP pública
Si tu instancia de Cloud SQL está configurada con una dirección IP pública, tiene acceso saliente integrado a Internet.
Si bien no se requiere ninguna configuración de red adicional para que funcione la autenticación de Microsoft Entra ID, revisa las limitaciones antes de continuar.
Instancias con una IP privada
Si tu instancia de Cloud SQL está configurada solo con una dirección IP privada, no tendrá acceso directo a Internet. Debes configurar una ruta de salida para permitir que la instancia llegue a los extremos de identidad públicos de Microsoft. La configuración de la integración de Microsoft Entra ID depende de cómo esté configurada tu instancia privada:
Private Service Connect
Si tu instancia de Cloud SQL está configurada para usar una dirección IP privada, te recomendamos que uses Private Service Connect para habilitar Microsoft Entra ID, ya que elimina ciertas tareas de mantenimiento generales, como las siguientes:
- Administrar VMs de host de bastión
- Mantenimiento de rutas
- Crear rutas demasiado amplias, como las que se requieren para la conectividad de PSA
Antes de continuar, revisa las limitaciones para usar el ID de Microsoft Entra.
Para habilitar la conectividad, debes configurar la traducción de direcciones de red de Cloud (Cloud NAT) en la VPC del consumidor. Esto permite que la instancia habilitada para PSC use la puerta de enlace de Cloud NAT para el tráfico saliente a los extremos públicos de Microsoft. Una vez habilitado, el enrutamiento interno restringe el tráfico para que solo el tráfico relacionado con Microsoft Entra ID llegue a tu instancia de Cloud NAT.
Para habilitar la conectividad, completa los siguientes pasos obligatorios:
- Crea una instancia habilitada para PSC.
- Configura la conectividad saliente para tu instancia de Cloud SQL.
- Crea una puerta de enlace de Cloud NAT.
Acceso privado a servicios
Si tu instancia de Cloud SQL está configurada para usar una dirección IP privada y usas PSA, debes seguir estos pasos para habilitar la conectividad a Microsoft Entra ID:
Implementa una VM host de bastión dentro de tu VPC.
Cuando creas una VM de host de bastión en tu proyecto, se debe habilitar el reenvío de IP. Si creaste una VM de host de bastión basada en Linux, configúrala para que realice el reenvío de IP:
sudo sysctl net.ipv4.conf.all.forwarding=1 sudo iptables --table nat --append POSTROUTING --out-interface ens4 -j MASQUERADEConfigura las rutas de red necesarias para dirigir el tráfico de autenticación de Microsoft Entra ID desde tu instancia de Cloud SQL a través del host de VM del host de bastión para llegar a Internet.
Agrega las rutas correspondientes para cada extremo de Microsoft Entra ID. Puedes encontrar los rangos de IP actuales en la sección
AzureActiveDirectory.ServiceEndpointdel archivo de recursos Rangos de IP y etiquetas de servicio de Azure.gcloud
Para cada rango de IP de Microsoft Entra ID, crea dos rutas y reemplaza
VM_NAMEyVM_ZONEpor el nombre y la zona reales de tu VM del host de bastión:gcloud --project=PROJECT_ID compute routes create NAME \ --network=NETWORK --destination-range=RANGE \ --priority=998 --next-hop-gateway=default-internet-gateway gcloud --project=PROJECT_ID compute routes create NAME \ --network=NETWORK --destination-range=RANGE --priority=999 \ --next-hop-instance=VM_NAME --next-hop-instance-zone=VM_ZONE \ --next-hop-ilb=ILB_VALUEReemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto en el que reside tu instancia de Cloud SQL.
- NAME: Es el nombre de la ruta que deseas crear.
- NETWORK: Es el nombre de la red en la que reside tu instancia de Cloud SQL.
- RANGE: Es el rango de IP que deseas usar.
- VM_NAME: Es el nombre de la VM del host de bastión que deseas incluir.
- VM_ZONE: Es la zona de la VM del host de bastión que deseas incluir, como
us-central1. ILB_VALUE: Opcional Es el nombre o la dirección IP de una regla de reenvío para un balanceador de cargas TCP/UDP interno. Si configuraste un balanceador de cargas delante de las VMs del host de bastión, debes incluir la marca
--next-hop-ilben este comando.Para obtener más información, consulta Balanceadores de cargas de red de transferencia internos como próximos saltos.
Un ejemplo podría verse de la siguiente manera:
gcloud --project=my-customer-project compute routes create my-route-1 --network=default --destination-range=20.20.32.0/27 --priority=998 --next-hop-gateway=default-internet-gateway gcloud --project=my-customer-project compute routes create my-route-2 --network=default --destination-range=20.20.32.0/27 --priority=999 --next-hop-instance=my-bastion-vm --next-hop-instance-zone=us-central1-c --next-hop-ilb=fr-ilb1Usa el mismo comando del paso anterior para aplicar la misma configuración y permitir el tráfico para las verificaciones de revocación de certificados de Microsoft Entra ID. Usa los rangos de IP que se indican en Dirección IP del estado del certificado de DigiCert.
Si no completas este paso, es posible que la autenticación de Microsoft Entra ID siga funcionando, pero también es posible que experimentes demoras al abrir conexiones nuevas.
Administra la autenticación de Microsoft Entra ID
Puedes habilitar la autenticación de Entra ID para una instancia nueva o existente.
Crea una instancia con la autenticación de Microsoft Entra ID habilitada
Puedes habilitar la autenticación con Microsoft Entra ID cuando creas una instancia nueva de Cloud SQL para SQL Server. Debes proporcionar el ID de inquilino y el ID de aplicación (ID de cliente) específicos de Microsoft Entra del registro de la aplicación que configuraste en tu portal de Azure.
Para obtener más información, consulta Requisitos previos.
gcloud
gcloud beta sql instances create INSTANCE_NAME \
--database-version=EDITION \
--tier=TIER \
--network=NETWORK
--root-password=PASSWORD
--entra-id-tenant-id=TENANT_ID \
--entra-id-application-id=APPLICATION_ID
Reemplaza lo siguiente:
- INSTANCE_NAME: El nombre de la instancia que deseas crear.
- EDITION: Es la edición de la instancia que deseas usar, como
SQLSERVER_2022_STANDARD. - TIER: Es el nivel de instancia o el tipo de máquina que deseas usar, como
db-custom-2-3840. - NETWORK: Es el nombre de la red que deseas usar.
- PASSWORD: La contraseña de la instancia.
- TENANT_ID: Es el ID de la instancia de Microsoft Entra.
- APPLICATION_ID: Es el ID de la aplicación o del cliente.
Un ejemplo podría verse de la siguiente manera:
gcloud beta sql instances create my-entraid-instance \
--database-version=SQLSERVER_2022_STANDARD \
--tier=db-custom-2-3840 \
--assign-ip \
--root-password=D61Xv36f!0lE \
--entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
--entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd
REST v1
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el nombre del proyecto en el que se ubicará la instancia que deseas crear.
- INSTANCE_ID: Es el ID de la instancia que deseas crear.
- EDITION: Es la edición de la instancia que deseas usar, como
SQLSERVER_2022_STANDARD. - REGION: Es la región en la que deseas que resida la instancia, como
us-central1. - PASSWORD: La contraseña de la instancia.
- TIER: Es el nivel de instancia o el tipo de máquina que deseas usar, como
db-custom-2-3840. - NETWORK: Es el nombre de la red que deseas usar.
- TENANT_ID: Es el ID de la instancia de Microsoft Entra.
- APPLICATION_ID: Es el ID de la aplicación o del cliente.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{
"databaseVersion":"EDITION",
"name":"INSTANCE_ID",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":
{
"tier":"TIER",
"ipConfiguration":
{
"privateNetwork":"NETWORK"
},
"entraidConfig":
{
"tenantId": "TENANT_ID",
"applicationId": "APPLICATION_ID"
}
}
}
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_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el nombre del proyecto en el que se ubicará la instancia que deseas crear.
- INSTANCE_ID: Es el ID de la instancia que deseas crear.
- EDITION: Es la edición de la instancia que deseas usar, como
SQLSERVER_2022_STANDARD. - REGION: Es la región en la que deseas que resida la instancia, como
us-central1. - PASSWORD: La contraseña de la instancia.
- TIER: Es el nivel de instancia o el tipo de máquina que deseas usar, como
db-custom-2-3840. - NETWORK: Es el nombre de la red que deseas usar.
- TENANT_ID: Es el ID de la instancia de Microsoft Entra.
- APPLICATION_ID: Es el ID de la aplicación o del cliente.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{
"databaseVersion":"EDITION",
"name":"INSTANCE_ID",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":
{
"tier":"TIER",
"ipConfiguration":
{
"privateNetwork":"NETWORK"
},
"entraidConfig":
{
"tenantId": "TENANT_ID",
"applicationId": "APPLICATION_ID"
}
}
}
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_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Administra la autenticación de Microsoft Entra ID en una instancia existente
Puedes habilitar, modificar o inhabilitar la configuración de ID de Microsoft Entra en una instancia existente en cualquier momento.
Para modificar la configuración de tu instancia, debes aplicar un parche a la instancia con los valores nuevos o borrados del ID de inquilino y del ID de aplicación (cliente).
Este proceso no implica unirse a un dominio ni dejar de pertenecer a él.
Puedes actualizar los valores del ID de inquilino y del ID de aplicación sin habilitar ni inhabilitar la integración con Microsoft Entra ID.
gcloud
gcloud beta sql instances patch INSTANCE_NAME \
--entra-id-tenant-id="NEW_TENANT_ID" \
--entra-id-application-id="NEW_APPLICATION_ID"
Reemplaza lo siguiente:
- INSTANCE_NAME: Es el nombre de la instancia que deseas modificar.
- NEW_TENANT_ID: Es el ID de la nueva instancia de Microsoft Entra. Para inhabilitar Microsoft Entra ID, deja esta cadena vacía.
- NEW_APPLICATION_ID: Es el ID de cliente o de la aplicación nuevos. Para inhabilitar Microsoft Entra ID, deja esta cadena vacía.
Un ejemplo podría verse de la siguiente manera:
gcloud beta sql instances patch my-existing-instance \
--entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
--entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd
REST v1
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra la instancia que deseas modificar.
- INSTANCE_ID: Es el ID de la instancia que deseas modificar.
- TENANT_ID: Es el ID de la instancia de Microsoft Entra. Para inhabilitar Microsoft Entra ID, deja esta cadena vacía.
- APPLICATION_ID: Es el ID de la aplicación o del cliente. Para inhabilitar Microsoft Entra ID, deja esta cadena vacía.
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{
"settings":
{
"entraidConfig":
{
"tenantId": "NEW_TENANT_ID",
"applicationId": "NEW_APPLICATION_ID"
}
}
}
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_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra la instancia que deseas modificar.
- INSTANCE_ID: Es el ID de la instancia que deseas modificar.
- TENANT_ID: Es el ID de la instancia de Microsoft Entra. Para inhabilitar Microsoft Entra ID, deja esta cadena vacía.
- APPLICATION_ID: Es el ID de la aplicación o del cliente. Para inhabilitar Microsoft Entra ID, deja esta cadena vacía.
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{
"settings":
{
"entraidConfig":
{
"tenantId": "NEW_TENANT_ID",
"applicationId": "NEW_APPLICATION_ID"
}
}
}
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_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Agrega el certificado a la aplicación
Para que tu ID de Microsoft Entra autentique tu instancia de Cloud SQL para SQL Server, debes subir el certificado público de la instancia de Cloud SQL para SQL Server al registro de la app de tu ID de Microsoft Entra.
Después de habilitar la autenticación de Microsoft Entra ID en tu instancia, crea un certificado específico de la instancia para Microsoft Entra ID.
gcloud
gcloud beta sql ssl entraid-certs create --instance=INSTANCE_NAMEReemplaza lo siguiente:
- INSTANCE_NAME: Es el nombre de la instancia para la que deseas crear un certificado.
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_ID: el ID de la instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate
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_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_ID: el ID de la instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate
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_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }Recupera los detalles de la instancia para obtener los detalles del certificado que acabas de crear:
gcloud
gcloud beta sql ssl entraid-certs list --instance=INSTANCE_NAME --format="value(ssl_cert.cert)"Reemplaza lo siguiente:
- INSTANCE_NAME: Es el nombre de la instancia asociada al certificado que acabas de crear.
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_ID: el ID de la instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
Este comando imprime un certificado que puedes guardar en un archivo y, luego, subir al portal de Azure.
Debes quitar todos los caracteres de salto de línea incorporados del archivo y separar manualmente cada línea nueva. De lo contrario, fallará la carga del archivo.
Por ejemplo, es posible que recibas una cadena de texto similar a la siguiente:
Line1\Line2\Line3Debes separar cada línea de forma manual, de manera similar a lo siguiente:
Line1 Line2 Line3Como alternativa, si no quieres realizar esta tarea de forma manual, usa el siguiente comando:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'Reemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_NAME: Es el nombre de la instancia asociada al certificado que acabas de crear.
REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_ID: el ID de la instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
Este comando imprime un certificado que puedes guardar en un archivo y, luego, subir al portal de Azure.
Debes quitar todos los caracteres de salto de línea incorporados del archivo y separar manualmente cada línea nueva. De lo contrario, fallará la carga del archivo.
Por ejemplo, es posible que recibas una cadena de texto similar a la siguiente:
Line1\Line2\Line3Debes separar cada línea de forma manual, de manera similar a lo siguiente:
Line1 Line2 Line3Como alternativa, si no quieres realizar esta tarea de forma manual, usa el siguiente comando:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'Reemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_NAME: Es el nombre de la instancia asociada al certificado que acabas de crear.
Agrega tu certificado al portal de Azure.
- Navega a tu Registro de aplicación en el portal de Azure.
- Abre Certificados y secretos.
- Selecciona Subir certificado. Navega al archivo de certificado que recuperaste de tu instancia y agrégalo.
- Haz clic en Aceptar.
Rota el certificado de Microsoft Entra ID
Debes rotar el certificado de Microsoft Entra ID antes de que venza. Te recomendamos que comiences este proceso al menos una semana antes de la fecha de vencimiento programada:
Sigue los pasos que se indican en Agrega el certificado a la aplicación para crear un certificado nuevo inactivo en tu instancia de Cloud SQL para SQL Server y, luego, súbelo a Microsoft Entra ID con Azure Portal. Esto no afecta el certificado activo actual.
Activa el nuevo certificado en la instancia de Cloud SQL para SQL Server, lo que hace que Cloud SQL para SQL Server comience a usar el nuevo certificado para todas las autenticaciones nuevas.
gcloud
gcloud beta sql ssl entraid-certs rotate --instance=INSTANCE_NAMEReemplaza lo siguiente:
- INSTANCE_NAME: Es el nombre de la instancia asociada al certificado que deseas rotar.
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_ID: el ID de la instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra tu instancia.
- INSTANCE_ID: el ID de la instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
Tu instancia ahora usa el certificado nuevo.
Puedes quitar de forma segura el certificado anterior del registro de la app de Microsoft Entra ID y de la instancia de Cloud SQL para SQL Server. Para obtener más información, consulta Cómo agregar y administrar credenciales de aplicaciones en Microsoft Entra ID.
Cómo revertir el certificado de Microsoft Entra ID
Si experimentas problemas después de rotar a un certificado nuevo, puedes revertir al certificado anterior.
Para realizar una reversión, el certificado anterior debe seguir siendo válido y tu registro de aplicación de Microsoft Entra ID debe seguir confiando en él.
Los siguientes comandos reactivan de inmediato el certificado anterior especificado en tu instancia de Cloud SQL para SQL Server.
gcloud
gcloud beta sql ssl entraid-certs rollback --instance=INSTANCE_NAME
Reemplaza lo siguiente:
- INSTANCE_NAME: Es el nombre de la instancia asociada al certificado que deseas revertir.
REST v1
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra la instancia.
- INSTANCE_ID: Es el ID de la instancia para la que deseas revertir el certificado.
- CERTIFICATE_NAME: Es el nombre del certificado nuevo que deseas usar para reemplazar el certificado anterior, como
sha1Fingerprint.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate
Cuerpo JSON de la solicitud:
{
{
"RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
}
}
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_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra la instancia.
- INSTANCE_ID: Es el ID de la instancia para la que deseas revertir el certificado.
- CERTIFICATE_NAME: Es el nombre del certificado nuevo que deseas usar para reemplazar el certificado anterior, como
sha1Fingerprint.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate
Cuerpo JSON de la solicitud:
{
{
"RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
}
}
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_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Crea el acceso inicial a Microsoft Entra ID
Después de habilitar la autenticación de Microsoft Entra ID en la instancia, debes crear tus accesos de Microsoft Entra ID.
Crea el primer acceso a Microsoft Entra ID.
Este acceso inicial, que representa un usuario o grupo de Microsoft Entra ID, no se puede crear con T-SQL. Debes crearla con gcloud CLI o la API de Cloud SQL Admin:
gcloud
gcloud sql users create USER_NAME --instance=INSTANCE_NAME --type=ENTRAID_USERReemplaza lo siguiente:
- USER_NAME: Es el nombre del usuario de Cloud SQL para SQL Server que deseas crear.
- INSTANCE_NAME: Es el nombre de la instancia para la que deseas crear inicios de sesión de Microsoft Entra ID.
- ENTRAID_USER: Es el nombre de usuario de Microsoft Entra ID.
Un ejemplo podría verse de la siguiente manera:
gcloud sql users create myentraiduser@mytenant.com --instance=my-entraid-instance --type=ENTRAID_USERREST v1
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra la instancia.
- INSTANCE_ID: Es el ID de la instancia que deseas actualizar.
- USER_NAME: Es el nombre del usuario de Cloud SQL para SQL Server que deseas crear.
- ENTRAID_USER: Es el nombre de usuario de Microsoft Entra ID.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "USER_NAME" "type": "ENTRAID_USER" }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_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }REST v1beta4
No todos los campos posibles se muestran en la siguiente llamada a la API básica. Para obtener el prototipo de una solicitud JSON, consulta Configuración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que se encuentra la instancia.
- INSTANCE_ID: Es el ID de la instancia que deseas actualizar.
- USER_NAME: Es el nombre del usuario de Cloud SQL para SQL Server que deseas crear.
- ENTRAID_USER: Es el nombre de usuario de Microsoft Entra ID.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "USER_NAME" "type": "ENTRAID_USER" }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_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }Una vez que se crea el acceso inicial a Microsoft Entra ID, puedes conectarte a la base de datos como ese usuario.
Crear inicios de sesión posteriores en Microsoft Entra ID
Puedes crear y administrar inicios de sesión adicionales de Microsoft Entra ID, como se indicó en el paso anterior.
Como alternativa, si prefieres usar otra herramienta, como SQL Server Management Studio (SSMS), primero debes otorgar al acceso inicial permiso para administrar otros accesos:
GRANT ALTER ANY LOGIN TO [ENTRA_ID_USER] AS CustomerDbRootRoleReemplaza ENTRAID_USER por el nombre de usuario de Microsoft Entra ID.
Una vez que se otorgan los permisos, este acceso puede crear y administrar otros accesos de Microsoft Entra ID con comandos estándar de T-SQL. Un comando de ejemplo puede ser similar al siguiente:
CREATE LOGIN [<<ENTRA_ID_USER>>] FROM EXTERNAL PROVIDERReemplaza ENTRAID_USER por el nombre de usuario de Microsoft Entra ID.
Para crear usuarios basados en los inicios de sesión de Microsoft Entra ID o para otorgar permisos, usa los comandos estándar de T-SQL.
Para obtener más información, incluido cómo crear un acceso con la sintaxis adecuada, consulta Configura la autenticación de Microsoft Entra para SQL Server con el registro de la app.
Prácticas recomendadas
Para ayudar a aislar los permisos y definir mejor los límites de seguridad, te recomendamos que crees un registro de aplicación de Microsoft Entra ID único para cada instancia de Cloud SQL para SQL Server. Revocar las credenciales de la aplicación no afectará a otras instancias no relacionadas.
Para obtener más información, consulta Cómo registrar una aplicación en Microsoft Entra ID.
Soluciona problemas
En las siguientes secciones, se abordan los problemas que puedes encontrar mientras administras la integración de Microsoft Entra ID.
Problemas de conectividad de red con instancias de IP privada
Es posible que experimentes algunos de los siguientes problemas durante la configuración de la integración:
- Operaciones lentas para crear inicios de sesión de Microsoft Entra ID
- No se pueden crear accesos de Microsoft Entra ID
- No se puede conectar a la instancia con la autenticación de Microsoft Entra ID
Para solucionar estos problemas, realiza la siguiente prueba de conectividad:
Dentro del mismo proyecto y la misma VPC, y en la misma región que tu instancia de Cloud SQL para SQL Server, crea una VM de prueba configurada solo con una IP privada. Google Cloud
Conéctate a la VM que acabas de crear con el protocolo de escritorio remoto (RDP) o el protocolo de shell seguro (SSH). Luego, ejecuta los siguientes comandos para probar la accesibilidad. Estos pasos se pueden aplicar a VMs basadas en Linux y en Windows:
curl -4iv login.microsoftonline.com curl -4iv graph.microsoft.com curl -4iv ocsp.digicert.com
Si no puedes acceder a ninguno de estos extremos, ya sea por errores de tiempo de espera o de conexión rechazada, verifica la configuración de tu red para lo siguiente:
- En el caso de Private Service Connect, asegúrate de que Cloud NAT esté configurado correctamente para permitir el acceso saliente a Internet.
- En el caso del acceso privado a servicios, verifica la configuración de tus rutas personalizadas y hosts bastión.
- Verifica las reglas de firewall de VPC para asegurarte de que no se bloquee el tráfico de salida a estos dominios.
Mensajes de error comunes:
Es posible que encuentres el siguiente error de acceso durante la autenticación de Microsoft Entra ID:
Login failed for user ""
Para resolver este problema, asegúrate de que exista un acceso de SQL Server para este usuario de Microsoft Entra ID.
Migración desde Microsoft Active Directory
En las siguientes situaciones, puedes habilitar la autenticación de Microsoft Entra ID sin inhabilitar la autenticación existente de Microsoft Active Directory:
- Realizar una migración por etapas Trasladar la autoridad de autenticación de Microsoft Active Directory a Microsoft Entra ID con Active Directory administrado por el cliente (CMAD) o el Servicio administrado para Microsoft Active Directory
- Usar un entorno híbrido Mantener habilitados simultáneamente Microsoft Active Directory y Microsoft Entra ID
Réplicas de lectura
- Si agregas una réplica de lectura a una instancia principal que tiene habilitado el ID de Microsoft Entra, la réplica de lectura se configura automáticamente para usar el ID de Microsoft Entra.
- Si la instancia principal tiene habilitado Microsoft Entra ID y restauras una copia de seguridad en esa instancia, su réplica de lectura asociada se configura automáticamente para usar Microsoft Entra, ya que la identidad no cambia.
Instancias clonadas y restablecimiento a una instancia diferente
La integración de Microsoft Entra ID no se configura automáticamente en la instancia nueva en los siguientes casos:
- Es un clon de la instancia principal.
- Es una copia de seguridad que se restableció en una instancia que no es la principal.
En esos casos, debes habilitar Microsoft Entra ID de forma manual en la instancia nueva y, luego, volver a subir su certificado a la aplicación de Microsoft Entra ID. Este requisito es una medida de seguridad para evitar que varias instancias no relacionadas usen la misma identidad de aplicación.
Limitaciones
- La autenticación de Microsoft Entra ID solo se admite en SQL Server 2022 y no está disponible en SQL Server 2017 ni en SQL Server 2019.
- Si clonas una instancia o restableces una copia de seguridad en una instancia diferente, la integración de Microsoft Entra ID no se configura automáticamente en la instancia nueva. Para obtener más información, consulta Copia de seguridad y recuperación.
- La autenticación de Microsoft Entra ID no es compatible con las instancias de alta disponibilidad (HA) configuradas con una IP pública.
- La autenticación de Microsoft Entra ID no es compatible con las instancias principales habilitadas para PSC ni con sus instancias de réplica de lectura correspondientes.
- Evita rotar los certificados de Microsoft Entra ID en las instancias principales que tienen réplicas adjuntas. Si rotas el certificado de la instancia principal, los certificados de réplica no se actualizarán.
- La integración de Microsoft Entra ID con Cloud SQL para SQL Server se puede configurar con gcloud CLI o la API de Cloud SQL Admin. La integración no se puede administrar con Terraform.
¿Qué sigue?
- Obtén más información sobre Microsoft Entra ID