Cette page contient des informations à examiner avant de commencer une intégration. Après avoir consulté les informations ci-dessous, y compris les limites, consultez Utiliser Active Directory géré par le client.
Vous pouvez intégrer Cloud SQL pour SQL Server à Microsoft Active Directory géré par le client (également appelé AD géré par le client ou CMAD).
L'authentification, l'autorisation et bien plus sont disponibles via CMAD. Par exemple, la jointure d'une instance à un domaine CMAD vous permet de vous connecter à l'aide de l'authentification Windows avec une identité basée sur AD. L'intégration de Cloud SQL pour SQL Server avec un domaine AD présente l'avantage supplémentaire de l'intégration Google Cloud à vos domaines AD sur site.
Avant de commencer
Vous pouvez l'intégrer à CMAD, ce qui ajoute la compatibilité avec l'authentification Windows à une instance. Toutefois, avant d'effectuer l'intégration, votre projetGoogle Cloud doit remplir les conditions suivantes :
- Pour que l'authentification fonctionne, vos instances Cloud SQL doivent disposer d'une connectivité réseau à tous les domaines Active Directory concernés. Cela inclut le domaine principal auquel l'instance est associée, ainsi que tous les domaines enfants ou approuvés contenant des utilisateurs qui doivent accéder à Cloud SQL pour SQL Server. Pour ce faire, assurez-vous que les ports suivants (TCP et UDP) sont ouverts entre vos instances Cloud SQL et tous vos contrôleurs de domaine :
53,88,135,389,445,464,3268,3269et49152à65535. - Vous devez créer une unité organisationnelle (UO)
pour stocker tous les objets d'intégration associés.
- Dans cette UO, vous avez également besoin d'un compte administrateur disposant des autorisations suivantes :
- Créer des objets Ordinateur
- Supprimer des objets ordinateur
- Créer des objets User
- Supprimer des objets utilisateur
- Écrire toutes les propriétés
- Réinitialiser le mot de passe
- Durée de verrouillage en lecture, durée de verrouillage en écriture
- Nous vous recommandons également d'accorder à ce compte administrateur l'autorisation de gérer les enregistrements DNS, par exemple en l'ajoutant au groupe DnsAdmins.
Si vous n'accordez pas ces autorisations, l'intégration fonctionnera quand même. Toutefois, pour vous connecter à votre instance, vous devrez créer manuellement les enregistrements DNS nécessaires, comme décrit dans Se connecter à une instance avec un utilisateur.
L'autre option consiste à se connecter à l'aide de l'adresse IP de l'instance, ce qui présente des limites et ne fonctionnera pas pour les connexions à partir de domaines approuvés.
- Dans cette UO, vous avez également besoin d'un compte administrateur disposant des autorisations suivantes :
- Vous devez stocker vos identifiants d'administrateur dans un secret Secret Manager, au format JSON suivant :
{ "credentials": [ { "validAfterUTC": "VALID_AFTER_UTC_VALUE", "administratorLogin": "ADMINISTRATOR_LOGIN_VALUE_1", "administratorPassword": "ADMINISTRATOR_PASSWORD_VALUE_1" }, { "validAfterUTC": "VALID_AFTER_UTC_VALUE_2", "administratorLogin": "ADMINISTRATOR_LOGIN_VALUE_2", "administratorPassword": "ADMINISTRATOR_PASSWORD_VALUE_2" } ] }
Remplacez les éléments suivants :
- VALID_AFTER_UTC_VALUE_1 : première valeur UTC que vous souhaitez utiliser, fournie au format
YYYY-MM-DDThh:mm:ssZ. Par exemple,2099-07-01T10:30:00Z. - ADMINISTRATOR_LOGIN_VALUE_1 : première identifiant d'administrateur que vous souhaitez utiliser, par exemple
myadmin. N'incluez pas le nom de domaine dans la valeur. Les entrées semblables àmyadmin@my-domain-name.comne sont pas acceptées. - ADMINISTRATOR_PASSWORD_VALUE_1 : mot de passe de l'administrateur.
- VALID_AFTER_UTC_VALUE_2 : deuxième valeur UTC que vous souhaitez utiliser, fournie au format
YYYY-MM-DDThh:mm:ssZ. Par exemple,2099-07-01T10:30:00Z. - ADMINISTRATOR_LOGIN_VALUE_2 : identifiant de connexion du deuxième administrateur que vous souhaitez utiliser, par exemple
myadmin2. De même, n'incluez pas le nom de domaine dans la valeur. Les entrées semblables àmyadmin2@my-domain-name.comne sont pas acceptées. - ADMINISTRATOR_PASSWORD_VALUE_2 : mot de passe du deuxième administrateur.
Ce fichier peut contenir plusieurs entrées d'identifiants pour atténuer les problèmes de propagation lente ou pour tenir compte des rotations planifiées à l'avance.
Le champ
validAfterUTCest facultatif. S'il n'est pas spécifié, les identifiants sont considérés comme toujours valides. Nous vous recommandons de conserver ces identifiants disponibles en permanence dans Secret Manager et d'utiliser l'automatisation pour mettre à jour le mot de passe si vous faites tourner les identifiants.Vous pouvez supprimer le secret après la création de l'instance, mais sachez que les opérations futures telles que le clonage ou l'ajout d'un réplica en lecture entraîneront la non-association de la nouvelle instance au domaine.
De plus, la suppression de l'instance d'origine laissera des objets orphelins, tels que le compte de l'ordinateur, dans votre CMAD.
- VALID_AFTER_UTC_VALUE_1 : première valeur UTC que vous souhaitez utiliser, fournie au format
- Disposer d'une liste d'adresses IP de serveur DNS pour votre Active Directory géré par le client, qui sont généralement vos contrôleurs de domaine. Nous vous recommandons d'utiliser des adresses IP statiques pour ces serveurs.
- Attribuez des comptes de service par produit et par projet.
Créer et configurer un compte de service
Pour créer un compte de service disposant des autorisations requises, vérifiez les points suivants :
- Vous devez activer l'API Cloud SQL Admin.
- Vous devez disposer des autorisations suivantes :
- resourcemanager.projects.setIamPolicy
- secretmanager.secrets.getIamPolicy
- secretmanager.secrets.setIamPolicy
Vous devez disposer d'un compte de service par produit et par projet pour chaque projet que vous prévoyez d'intégrer à CMAD. Utilisez gcloud CLI pour créer le compte au niveau du projet. Le compte de service par produit et par projet doit se voir attribuer les autorisations
secretmanager.secrets.getIamPolicyetsecretmanager.secrets.setIamPolicypour le secret créé à l'étape précédente. Pour en savoir plus, consultez Autorisations Secret Manager.Nous vous recommandons de créer un rôle personnalisé avec les autorisations dont vous avez besoin.
Pour créer un compte de service avec la gcloud CLI, exécutez la commande suivante :
gcloud beta services identity create --service=sqladmin.googleapis.com
--project=PROJECT_ID
Cette commande renvoie un nom de compte de service au format suivant :
service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com
Voici un exemple de nom de compte de service :
service-333445@gcp-sa-cloud-sql.iam.gserviceaccount.com
Pour accorder l'autorisation nécessaire à l'intégration, exécutez la commande suivante :
gcloud iam roles create secretIamPolicyManager --project=PROJECT_ID
--permissions="secretmanager.secrets.getIamPolicy,secretmanager.secrets.setIamPolicy"
Exécutez ensuite la commande suivante :
gcloud secrets add-iam-policy-binding ADCredentials --project="722300452883"
--member="serviceAccount:service-SQL_PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com"
--role="projects/PROJECT-ID/roles/secretIamPolicyManager"
Pour en savoir plus, consultez gcloud beta services identity create.
Bonnes pratiques pour l'intégration à CMAD
Lorsque vous intégrez CMAD, nous vous recommandons de suivre les étapes ci-dessous.
Conditions préalables à l'intégration
Utilisez l'outil de diagnostic Active Directory pour résoudre les problèmes de configuration d'AD avec votre domaine sur site et vos instances Cloud SQL pour SQL Server dans la console Google Cloud . Ignorez les étapes liées au service géré pour Microsoft Active Directory.
Topologies pour l'intégration à CMAD
Cloud SQL pour SQL Server n'est pas compatible avec les groupes locaux à un domaine. Toutefois, les alternatives suivantes sont disponibles :
- Ajoutez des groupes globaux ou des connexions utilisateur individuelles directement dans SQL Server.
- Utilisez des groupes universels si tous les groupes et tous les utilisateurs appartiennent à la même forêt.
Cloud SQL pour SQL Server n'est pas compatible avec les groupes locaux à un domaine en tant que connexions. Pour accorder des autorisations aux utilisateurs du domaine, vous devez utiliser des groupes globaux ou universels, comme décrit dans cette section.
Option 1 : Ajouter des comptes utilisateur et des groupes en tant que connexions à SQL Server
Si vous avez plusieurs domaines, dans plusieurs forêts et que vous avez plusieurs groupes globaux, vous pouvez ajouter tous les comptes utilisateur individuels, ainsi que les groupes globaux et universels, directement en tant que connexions à SQL Server. À titre d'exemple, consultez le schéma suivant pour l'option 1 :

Option 2 : Définir un groupe universel dans l'un de vos domaines
Si vos domaines se trouvent dans la même forêt, vous pouvez définir un groupe universel dans l'un de vos domaines. Vous pouvez ensuite ajouter tous les comptes utilisateur individuels ainsi que les groupes globaux et universels en tant qu'enfants de ce groupe universel défini, puis ajouter le groupe universel défini en tant que connexion SQL Server. À titre d'exemple, consultez le schéma suivant pour l'option 2 :

Limites et alternatives
Les limites suivantes s'appliquent lors de l'intégration à CMAD :
- Les instances Cloud SQL pour SQL Server qui utilisent Private Service Connect (PSC) pour la connectivité privée ne sont pas compatibles. Utilisez plutôt l'accès aux services privés (PSA).
- Les groupes locaux à un domaine ne sont pas acceptés, mais vous pouvez ajouter des groupes globaux ou des connexions utilisateur individuelles directement dans SQL Server. Vous pouvez également utiliser des groupes universels lorsque tous les groupes et tous les utilisateurs appartiennent à la même forêt.
- S'il existe d'autres domaines approuvés et que vous prévoyez d'accéder aux instances SQL Server avec des noms d'utilisateur provenant de ces domaines, ils doivent être connectés via une approbation bidirectionnelle. Les relations d'approbation unidirectionnelles et externes ne sont pas prises en charge.
- En général, les nouveaux utilisateurs créés via la console Google Cloud se voient attribuer le rôle
CustomerDbRootRole, qui dispose de ce rôle de base de données fixe pour l'agent SQL Server :SQLAgentUserRole. Toutefois, les utilisateurs créés directement via SQL Server, tels que les utilisateurs CMAD, ne peuvent pas se voir attribuer ce rôle, ni utiliser l'agent SQL Server : en effet, la base de données MSDB dans laquelle ce rôle doit être attribué est protégée. - Les noms de domaine complets (FQDN, fully qualified domain names) ne sont pas acceptés par SQL Server.
Par conséquent, utilisez des noms de domaine (noms courts) plutôt que des noms de domaine complets lorsque vous créez des connexions SQL Server. Par exemple, si votre nom de domaine est
ad.mydomain.com, créez des connexions SQL Server pourad\userplutôt que pourad.mydomain.com\user. - Pour accéder aux instances SQL Server, utilisez toujours les noms de domaine complets. Par exemple, vous pouvez utiliser un nom de domaine complet semblable à
private.myinstance.us-central1.myproject.cloudsql.mydomain.com. Les noms Netbios ne sont pas acceptés. C'est également le cas des noms courts si les suffixes DNS sont omis. - Les connexions SQL Server basées sur des utilisateurs et des groupes Active Directory ne peuvent pas être gérées depuis la console Google Cloud .
- L'authentification Windows ne fonctionnera pas avec une approbation externe. L'erreur renvoyée peut être la suivante :
De plus, comme pour les recommandations de Microsoft, utilisez une approbation de forêt au lieu d'une approbation externe pour l'authentification Kerberos. - La dernière version du secret est toujours utilisée. Le secret doit être actif et ne peut pas être détruit.
Points de terminaison Active Directory et connexions TLS
Si vous utilisez l'authentification Windows et que vous souhaitez établir une connexion TLS sans faire confiance au certificat du serveur, vous devez faire une rotation des certificats une fois l'authentification Windows activée sur l'instance.
Si la connexion échoue et que l'un de vos certificats a été créé avant le 15 mars 2025, vous devez à nouveau faire pivoter le certificat de serveur et réessayer d'établir la connexion.
Non compatible avec l'intégration
Les fonctionnalités suivantes ne sont pas compatibles lors de l'intégration à CMAD :
- Les groupes locaux à un domaine.
- L'authentification NTLM.
- La connexion avec une adresse IP à partir de domaines connectés via une relation d'approbation.
- Les instances avec des noms longs (plus de 63 caractères).
Surveillance
Vous pouvez utiliser la métrique suivante pour surveiller l'état et l'intégrité de CMAD :
cloudsql.googleapis.com/database/active_directory/domain_reachable
Cette métrique indique si le CMAD est accessible depuis l'instance Cloud SQL. Il s'agit d'un outil utile pour résoudre les problèmes de réseau :
cloudsql.googleapis.com/database/active_directory/instance_available