Utiliser Microsoft Active Directory géré par le client (CMAD)

Cette page explique comment utiliser Microsoft Active Directory géré par le client (également appelé AD géré par le client ou CMAD) :

  • Intégrez Cloud SQL pour SQL Server à CMAD.
  • Vous connecter à une instance avec un utilisateur Active Directory (AD).

Une instance Cloud SQL intégrée à CMAD est compatible avec l'authentification Windows en plus de l'authentification SQL.

Avant de commencer

Créer une instance avec l'authentification Windows

Vous pouvez intégrer CMAD lors de la création d'une instance en activant l'authentification Windows pour l'instance. Pour procéder à l'intégration, choisissez un domaine que l'instance peut rejoindre. Si l'association au domaine échoue, la création de l'instance échoue.

Pour préparer la création d'une instance avec l'authentification Windows, consultez les conseils, ainsi que les limites et alternatives.

Bien que vous puissiez choisir d'utiliser une adresse IP publique, l'instance Cloud SQL doit également avoir accès à une adresse IP privée.

Utilisez l'une des options suivantes pour créer une instance intégrée à CMAD et donc activée pour l'authentification Windows. Pour en savoir plus sur la commande de base permettant de créer une instance, consultez Créer des instances.

gcloud

Pour créer une instance avec CMAD, exécutez la commande suivante :

  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

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance Cloud SQL pour SQL Server que vous souhaitez créer.
  • DATABASE_VERSION : version de la base de données que vous souhaitez utiliser, par exemple SQLSERVER_2019_STANDARD.
  • DOMAIN : nom de domaine que vous souhaitez utiliser, par exemple myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel résidera l'instance.
  • SECRET_NAME : secret que vous souhaitez utiliser.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • CPU : quantité de processeur que vous souhaitez attribuer à l'instance.
  • MEMORY : quantité de mémoire que vous souhaitez attribuer à l'instance.
  • NETWORK : nom du réseau auquel votre instance sera connectée, par exemple projects/my-gcp-project-123/global/networks/my-production-vpc.

REST v1

Pour créer une instance avec CMAD, exécutez une requête POST avec la méthode users:insert.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

Remplacez les éléments suivants :

  • DATABASE_VERSION : version de la base de données que vous souhaitez utiliser, par exemple SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME : nom de l'instance Cloud SQL pour SQL Server que vous souhaitez créer.
  • REGION : région dans laquelle vous souhaitez que l'instance réside, par exemple us-central1.
  • PASSWORD : mot de passe de l'instance.
  • MACHINE_TYPE : type de machine que vous souhaitez utiliser pour l'instance, par exemple db-n1-standard-8.
  • NETWORK : nom du réseau auquel votre instance sera connectée, par exemple projects/my-gcp-project-123/global/networks/my-production-vpc.
  • DOMAIN : nom de domaine que vous souhaitez utiliser, par exemple myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel résidera l'instance.
  • SECRET_NAME : secret que vous souhaitez utiliser.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Pour créer une instance avec CMAD, exécutez une requête POST avec la méthode users:insert.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

Remplacez les éléments suivants :

  • DATABASE_VERSION : version de la base de données que vous souhaitez utiliser, par exemple SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME : nom de l'instance Cloud SQL pour SQL Server que vous souhaitez créer.
  • REGION : région dans laquelle vous souhaitez que l'instance réside, par exemple us-central1.
  • PASSWORD : mot de passe de l'instance.
  • MACHINE_TYPE : type de machine que vous souhaitez utiliser pour l'instance, par exemple db-n1-standard-8.
  • NETWORK : nom du réseau auquel votre instance sera connectée, par exemple projects/my-gcp-project-123/global/networks/my-production-vpc.
  • DOMAIN : nom de domaine que vous souhaitez utiliser, par exemple myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel résidera l'instance.
  • SECRET_NAME : secret que vous souhaitez utiliser.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Mettre à jour une instance avec l'authentification Windows

Vous pouvez mettre à jour le domaine d'une instance existante en modifiant ou en ajoutant un domaine.

Pour obtenir des informations générales sur la mise à jour d'une instance, consultez la section Modifier des instances.

Si une instance est actuellement associée à un domaine CMAD, l'instance est initialement dissociée de ce domaine avant d'être associée au nouveau domaine. Si la mise à jour échoue, l'instance risque de ne plus être associée à aucun domaine.

gcloud

Voici un exemple de commande permettant de mettre à jour une instance existante. La commande ajoute ou remplace un domaine. Transmettez le paramètre --active-directory-domain=DOMAIN à la commande, comme suit :

  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

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance Cloud SQL pour SQL Server que vous souhaitez mettre à jour.
  • DOMAIN : nom de domaine que vous souhaitez utiliser, tel que myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel réside l'instance.
  • SECRET_NAME : secret associé à l'instance.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.

REST v1

Pour mettre à jour une instance CMAD, utilisez une requête PATCH avec la méthode users:insert.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • DOMAIN : nom de domaine que vous souhaitez utiliser, tel que myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel réside l'instance.
  • SECRET_NAME : secret associé à l'instance.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Pour mettre à jour une instance CMAD, utilisez une requête PATCH avec la méthode users:insert.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • DOMAIN : nom de domaine que vous souhaitez utiliser, tel que myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel réside l'instance.
  • SECRET_NAME : secret associé à l'instance.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Migration entre le service géré pour Microsoft Active Directory et CMAD

Pour migrer une instance de l'intégration à Managed Microsoft AD vers l'intégration à CMAD, utilisez la commande gcloud CLI suivante :

  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

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance Cloud SQL pour SQL Server que vous souhaitez modifier.
  • DOMAIN : nom de domaine que vous souhaitez utiliser, tel que myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY : indique le mode du domaine. Si le domaine a été créé et appartient à Google, saisissez MANAGED_ACTIVE_DIRECTORY. Si le domaine est créé et appartient à l'utilisateur, saisissez CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU : nom de l'unité organisationnelle que vous souhaitez utiliser. Exemple :CLOUDOU Vous pouvez saisir autant d'unités organisationnelles que nécessaire.
  • DC1 : premier composant de domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :DOMAIN Vous pouvez saisir autant de composants de domaine que nécessaire.
  • DC2 : deuxième composant du domaine utilisé pour le nom unique de l'unité organisationnelle. Exemple :COM Une valeur complète pour l'option --active-directory-organizational-unit peut se présenter comme suit : "OU=CLOUDOU,DC=DOMAIN,DC=COM". Vous pouvez saisir autant de composants de domaine que nécessaire.
  • PROJECT_ID : ID du projet dans lequel réside l'instance.
  • SECRET_NAME : secret associé à l'instance.
  • IP1 : adresse IP du premier serveur DNS que vous souhaitez utiliser, par exemple 10.20.30.40. Vous pouvez saisir autant d'adresses IP que nécessaire.
  • IP2 : adresse IP du deuxième serveur DNS que vous souhaitez utiliser, par exemple 20.30.40.50. Vous pouvez saisir autant d'adresses IP que nécessaire.

Se connecter à une instance avec un utilisateur

Concernant Cloud SQL pour SQL Server, l'utilisateur par défaut est sqlserver.

Après avoir intégré une instance à l'aide de CMAD, vous pouvez vous connecter à l'instance avec l'utilisateur sqlserver, comme suit :

  1. Créez une connexion SQL Server basée sur un utilisateur ou un groupe Windows, comme suit :
          CREATE LOGIN [domain\user_or_group] FROM WINDOWS
        
  2. Connectez-vous à l'instance avec son nom DNS à l'aide de l'authentification Windows. Voici quelques exemples de noms DNS d'instances que vous pouvez spécifier :
    • Voici un exemple de connexion via une adresse IP privée :
            private.myinstance.us-central1.myproject.cloudsql.mydomain.com
            
    • Voici un exemple de connexion via une adresse IP publique :
              public.myinstance.us-central1.myproject.cloudsql.mydomain.com
              
    • Voici un exemple de connexion via le proxy d'authentification Cloud SQL :
              proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
              

      Pour en savoir plus, consultez Utiliser le proxy d'authentification Cloud SQL avec l'authentification Windows.

Si vous utilisez l'adresse IP de l'instance, vous devez configurer les clients Kerberos pour accepter les noms d'hôte IP. Cloud SQL n'est pas compatible avec la connexion à l'aide d'adresses IP provenant de domaines connectés via une relation d'approbation.

Utiliser le proxy d'authentification Cloud SQL avec l'authentification Windows

Vous pouvez utiliser le proxy d'authentification Cloud SQL avec votre intégration CMAD.

Avant de commencer, vérifiez les points suivants :

Étapes de l'authentification Windows

Pour en savoir plus sur le démarrage du proxy d'authentification Cloud SQL, consultez la section Démarrer le proxy d'authentification Cloud SQL.

Pour l'authentification Windows, vous devez exécuter le proxy d'authentification Cloud SQL sur le port 1433. Pour mapper une entrée de nom principal de service (SPN, "Service Principal Name") prédéfini à une adresse de proxy d'authentification Cloud SQL, utilisez la commande suivante :

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

Exécuter localement le proxy d'authentification Cloud SQL

Si vous exécutez localement le proxy d'authentification Cloud SQL, utilisez votre fichier d'hôtes pour mapper les éléments suivants avec 127.0.0.1 :

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

Par exemple, vous pouvez ajouter les éléments suivants au fichier d'hôtes (par exemple, dans c:\windows\system32\drivers\etc\hosts) :

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

Dans cet exemple, vous pouvez exécuter le proxy d'authentification Cloud SQL à l'aide de cette commande et le rendre disponible sur 127.0.0.1:1433 :

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

Exécuter le proxy d'authentification Cloud SQL de manière non locale

Pour exécuter le proxy d'authentification Cloud SQL en externe, suivez les instructions de la section Exécuter localement le proxy d'authentification Cloud SQL, mais utilisez une entrée différente dans le fichier d'hôtes.

Plus précisément, si un hôte non local est, par exemple, MyOtherHost, vous pouvez ajouter la ligne suivante au fichier d'hôtes :

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

Résoudre les problèmes de recours NTLM dans les clients

Si vous utilisez l'authentification Windows et une adresse IP d'instance pour vous connecter à une instance, vous devez configurer un client Kerberos compatible avec les noms d'hôte IP.

Cloud SQL n'est pas compatible avec l'authentification NTLM, mais certains clients Kerberos peuvent néanmoins tenter de l'utiliser comme solution de remplacement. Comme indiqué dans cette section, si vous essayez de vous connecter à SQL Server Management Studio (SSMS) et que le message d'erreur suivant apparaît, cela est probablement dû à un recours NTLM :

Login failed. The login is from an untrusted domain and cannot be used with
Integrated authentication. (Microsoft SQL Server, Error: 18452)

NTLM est un ensemble de protocoles de sécurité Microsoft pour l'authentification. Pour en savoir plus, consultez Motifs de recours NTLM.

Vérification d'un recours NTLM pour un client Windows

À partir d'un terminal Windows, pour vérifier qu'un remplacement NTLM a entraîné une erreur, procédez comme suit :

  1. Connectez-vous avec les identifiants sur site que vous souhaitez utiliser. N'utilisez pas les commandes "Run as...".
  2. Ouvrez une invite de commande.
  3. Exécutez klist purge.
  4. À partir de SSMS, essayez de vous connecter à SQL Server avec l'authentification Windows.
  5. Exécutez klist et vérifiez si un ticket est émis pour l'erreur renvoyée.
    MSSQLSvc/
    :1433 @ domain.
  6. Si ce n'est pas le cas, le remplacement NTLM est la cause de l'erreur.
  7. Dans ce cas, vérifiez que votre pilote SQL Server n'applique pas l'authentification NTLM. Vérifiez également si l'authentification NTLM est appliquée via une stratégie de groupe.

Vérifier le recours NTLM pour un client Linux

Sur Ubuntu 16.04, pour vérifier qu'un remplacement NTLM a entraîné une erreur, suivez les étapes décrites dans cette section. Les étapes sont similaires à celles des autres distributions Linux.

Configurer l'authentification Kerberos

  1. Configurez un client Kerberos :
          sudo apt-get install krb5-user
        
  2. Lorsque vous êtes invité à renseigner le domaine par défaut, saisissez un nom de domaine sur site en lettres majuscules.
  3. Exécutez la commande suivante pour installer les outils de ligne de commande 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
        

Se connecter avec l'authentification Windows

  1. Exécutez l'outil kinit comme suit :
        kinit 
        
  2. Pour vous connecter avec l'authentification Windows, exécutez la commande suivante :
        /opt/mssql-tools/bin/sqlcmd -S 
  3. Exécutez la commande klist et vérifiez si un ticket a été émis spécifiquement pour le message renvoyé suivant :
        MSSQLSvc/
    :1433 @ domain
  4. Si le ticket n'a pas été émis, l'erreur précédente indique probablement un problème entraînant le recours NTLM.

Motifs de recours NTLM

Le recours NTLM est une erreur de configuration client pouvant être associée aux conditions suivantes :

  • Par défaut, Windows ne tente pas l'authentification Kerberos pour un hôte si le nom d'hôte est une adresse IP. Pour activer l'authentification Kerberos pour les adresses IP, essayez la méthode décrite dans la documentation Microsoft.
  • L'authentification Kerberos ne fonctionne pas sur les approbations externes. Utilisez plutôt des approbations de forêt.
  • L'authentification Kerberos nécessite un routage des suffixes de noms pour permettre la recherche de services dans une autre forêt. Essayez la méthode décrite dans Configurer une relation d'approbation entre deux domaines.
  • L'authentification Kerberos ne fonctionne pas si aucun SPN n'est enregistré pour le service. Utilisez uniquement des noms de domaine complets ou des adresses IP obtenus à partir de la console Google Cloud pour vous connecter via l'authentification Windows.

Créer une connexion Windows pour les utilisateurs AD sur site

Suivez les instructions CREATE LOGIN pour créer une connexion Windows pour un utilisateur sur site. Par exemple, spécifiez une commande semblable à celle-ci :

CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS

Conseils pour utiliser CMAD avec Cloud SQL

  • Une instance avec une adresse IP publique est compatible, à condition qu'elle possède également une adresse IP privée. L'adresse IP privée doit être activée pour l'instance. Vous pouvez ensuite choisir d'utiliser une adresse IP publique ou une adresse IP privée pour vous connecter à l'instance, tant que les deux sont disponibles.
  • Avant de créer une instance, y compris en tant qu'instance de remplacement, consultez les sections suivantes :
  • Si l'authentification Windows échoue depuis un domaine connecté via une relation d'approbation, vérifiez que l'authentification Windows fonctionne pour un utilisateur issu d'un domaine géré par le client. Si tel est le cas, procédez comme suit :
    1. Vérifiez que vous avez utilisé un nom DNS. Les adresses IP ne sont pas acceptées pour les domaines connectés via une relation d'approbation.
    2. Assurez-vous d'avoir suivi les étapes de la section Configurer une relation d'approbation entre deux domaines, y compris l'ouverture de tous les ports de pare-feu.
    3. Validez l'approbation.
    4. Vérifiez que la direction de l'approbation permet aux utilisateurs du domaine (connectés via une relation d'approbation) de s'authentifier.
    5. Suivez la procédure décrite dans Préparer un domaine non routable pour la synchronisation d'annuaire.
    6. Vérifiez que l'approbation fonctionne sans utiliser Cloud SQL pour SQL Server :
      1. Créez une VM Windows.
      2. Associez-la au domaine CMAD.
      3. Essayez, par exemple, d'exécuter "Bloc-notes" en tant qu'utilisateur du domaine connecté via une relation d'approbation.
    7. Redémarrez la VM cliente et testez à nouveau l'authentification Windows.
  • Vous pouvez tenter de créer une connexion SQL Server, mais recevoir le message d'erreur suivant :
        Windows NT user or group domain\name not found. Check the name again.
        

    Cela peut être dû au fait que les groupes locaux à un domaine ne sont pas acceptés. Le cas échéant, utilisez plutôt des groupes globaux ou universels.

  • Si les requêtes SQL Server génèrent l'erreur suivante, notez que les adresses IP ne sont pas disponibles pour les utilisateurs des domaines connectés via une relation d'approbation :
        The login is from an untrusted domain.
        

    Les actions suivantes peuvent résoudre ce problème :

    • Si une adresse IP est utilisée pour connecter des utilisateurs à partir d'un domaine géré, suivez les instructions de la documentation Microsoft.
    • Évitez d'utiliser des proxys et utilisez toujours le même nom DNS pour vous connecter à Cloud SQL pour SQL Server, comme vous le voyez dans la console Google Cloud .
  • Si une instance présente des problèmes continus avec l'authentification Windows (que l'instance ait été mise à jour récemment ou non), essayez de la dissocier du domaine, puis de la rejoindre à nouveau. Pour ce faire, suivez la procédure de mise à jour pour quitter puis rejoindre à nouveau le domaine. Cette action ne supprime pas les utilisateurs Windows authentifiés ni les connexions existant dans vos bases de données. Toutefois, la suppression de l'authentification Windows entraîne un redémarrage de l'instance.
  • Utilisez l'outil de diagnostic AD pour résoudre les problèmes de configuration d'AD avec votre domaine géré par le client et vos instances Cloud SQL pour SQL Server dans la console Google Cloud . Ignorez les étapes liées à Microsoft AD géré.

Résoudre les problèmes

Le tableau suivant liste les messages d'erreur courants et les moyens d'y remédier :

Pour cette erreur... Le problème peut être... Essayez ce qui suit...
Per-product, per-project Service Account (P4 SA) not found for project. Le nom du compte de service est incorrect. Sur la page Comptes de service, assurez-vous d'avoir créé un compte de service pour le bon projet utilisateur.
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. Les mises à jour requises n'ont pas pu être effectuées sur le domaine CMAD. Si vous rencontrez des problèmes avec l'authentification Windows, vous pouvez essayer de dissocier le domaine CMAD, puis de le rejoindre à nouveau. Pour ce faire, suivez la procédure de mise à jour pour quitter puis rejoindre à nouveau le domaine. Cette action ne supprime pas les utilisateurs Windows authentifiés ni les connexions existant dans vos bases de données. Toutefois, la suppression de l'authentification Windows entraîne un redémarrage de l'instance.
This instance would need new network architecture to support Active Directory. See https://cloud.google.com/sql/docs/sqlserver/configure-cmad." Cette instance n'utilise pas la nouvelle architecture réseau. Mettez à niveau l'instance vers la nouvelle architecture réseau.
Admin credential secret name / Organizational unit / DNS Server names is required or Invalid Admin credential secret name / OrganizationalUnit / DNS Server names provided. Les paramètres "Identifiants administrateur", "Unité organisationnelle" et "Serveurs DNS" sont obligatoires. Réessayez d'envoyer votre demande en spécifiant ces paramètres.
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. L'agent de service de ce projet ne dispose pas des autorisations nécessaires. Créez un rôle personnalisé avec les autorisations secretmanager.secrets.getIamPolicy et secretmanager.secrets.setIamPolicy, puis attribuez-le à l'agent de service pour ce projet. Pour en savoir plus, consultez Rôles et autorisations Secret Manager.

Étapes suivantes