Intégration à Microsoft Entra ID

L'intégration de Cloud SQL pour SQL Server à Microsoft Entra ID fournit une gestion centralisée de l'authentification et des accès (IAM) pour vos bases de données à l'aide de votre locataire Microsoft Entra ID existant.

Cette intégration offre les avantages suivants :

  • Authentification centralisée Permet aux utilisateurs et aux applications de se connecter à leurs instances Cloud SQL pour SQL Server à l'aide de leurs identités Microsoft Entra ID existantes, sans avoir à saisir de nouveau un mot de passe. Cette fonctionnalité évite d'avoir à gérer des identifiants et des mots de passe distincts spécifiques à SQL Server.

  • Sécurité renforcée Vous aide à appliquer les règles de sécurité existantes de votre organisation, telles que l'authentification multifacteur (MFA) et les règles d'accès conditionnel (CA), au niveau de la base de données.

  • Gestion des utilisateurs simplifiée. Lorsque le compte Microsoft Entra ID d'un utilisateur est désactivé ou supprimé, l'accès de l'utilisateur à la base de données est automatiquement révoqué. Cette fonctionnalité permet de simplifier les examens d'accès et de départ.

Conditions préalables à l'intégration

Pour utiliser l'intégration de Cloud SQL pour SQL Server avec Microsoft Entra ID, votre instance doit répondre aux exigences suivantes :

  1. Vous devez disposer d'une instance existante ou en créer une.

    L'authentification Microsoft Entra ID n'est compatible qu'avec SQL Server 2022 ou version ultérieure. Elle n'est pas disponible sur SQL Server 2017 ni SQL Server 2019.

  2. Activez l'authentification Microsoft Entra ID.

    Avant d'activer l'authentification Microsoft Entra ID, procédez comme suit sur le portail Azure :

    1. Trouvez votre ID de locataire Microsoft Entra.
    2. Créez un enregistrement d'application dans Microsoft Entra ID.

      Cloud SQL pour SQL Server utilise cette application pour communiquer avec votre ID de locataire Microsoft Entra. Lorsque vous créez l'application, notez l'ID de l'application ou l'ID client.

    3. Accordez à l'application les autorisations nécessaires pour lire les données de l'annuaire :

      1. Sélectionnez l'enregistrement d'application que vous venez de créer, puis cliquez sur Autorisations d'API.
      2. Sélectionnez Ajouter une autorisation > Microsoft Graph > Autorisations d'application.
      3. Accordez l'un des ensembles d'autorisations suivants :
        • Option 1.
          • Directory.Read.All
        • Option 2. Fournit des autorisations plus spécifiques.
          • Application.Read.All
          • Group.Read.All
          • User.Read.All
      4. Accordez le consentement administrateur à l'échelle du locataire pour permettre à l'application d'utiliser ces autorisations.

Connectivité réseau

Microsoft Entra ID est un service public qui utilise des points de terminaison publics pour l'authentification. Pour que l'authentification Microsoft Entra ID fonctionne correctement, votre instance Cloud SQL doit pouvoir établir des connexions sortantes vers ces points de terminaison publics. Les sections suivantes décrivent les étapes suivantes, en fonction de la configuration de la connectivité réseau de votre instance :

Instances avec une adresse IP publique

Si votre instance Cloud SQL est configurée avec une adresse IP publique, elle dispose d'un accès sortant intégré à Internet.

Bien qu'aucune configuration réseau supplémentaire ne soit requise pour que l'authentification Microsoft Entra ID fonctionne, consultez les limites avant de continuer.

Instances avec une adresse IP privée

Si votre instance Cloud SQL n'est configurée qu'avec une adresse IP privée, elle n'a pas d'accès direct à Internet. Vous devez configurer un chemin de sortie pour permettre à l'instance d'atteindre les points de terminaison d'identité publics de Microsoft. La configuration de l'intégration de Microsoft Entra ID dépend de la configuration de votre instance privée :

Private Service Connect

Si votre instance Cloud SQL est configurée pour utiliser une adresse IP privée, nous vous recommandons d'utiliser Private Service Connect pour activer Microsoft Entra ID, car cela élimine certaines tâches de maintenance, telles que les suivantes :

  • Gérer les VM d'hôte bastion
  • Maintenir les routes.
  • Créer des routes trop larges, comme celles requises pour la connectivité PSA.

Avant de continuer, consultez les limites d'utilisation de Microsoft Entra ID.

Pour activer la connectivité, vous devez configurer la traduction d'adresse réseau cloud (Cloud NAT) dans le VPC client. Cela permet à l'instance compatible avec PSC d'utiliser la passerelle Cloud NAT pour le trafic sortant vers les points de terminaison Microsoft publics. Une fois activé, le routage interne limite le trafic de sorte que seul le trafic lié à Microsoft Entra ID atteigne votre instance Cloud NAT.

Pour activer la connectivité, procédez comme suit :

  1. Créez une instance compatible PSC.
  2. Configurez la connectivité sortante pour votre instance Cloud SQL.
  3. Créez une passerelle Cloud NAT.

Accès aux services privés

Si votre instance Cloud SQL est configurée pour utiliser une adresse IP privée et que vous utilisez l'accès aux services privés, vous devez suivre les étapes ci-dessous pour activer la connectivité à Microsoft Entra ID :

  1. Déployez une VM d'hôte bastion dans votre VPC.

    Lorsque vous créez une VM d'hôte bastion dans votre projet, le transfert IP doit être activé. Si vous avez créé une VM d'hôte bastion basée sur Linux, configurez-la pour qu'elle effectue le transfert IP :

    sudo sysctl net.ipv4.conf.all.forwarding=1
    sudo iptables --table nat --append POSTROUTING --out-interface  ens4 -j MASQUERADE
    
  2. Configurez les routes réseau nécessaires pour diriger le trafic d'authentification Microsoft Entra ID depuis votre instance Cloud SQL via l'hôte bastion de VM pour atteindre Internet.

    Ajoutez les routes correspondantes pour chaque point de terminaison Microsoft Entra ID. Vous trouverez les plages d'adresses IP actuelles dans la section AzureActiveDirectory du fichier de ressources Azure IP Ranges and Service Tags (Plages d'adresses IP et tags de service Azure). Par exemple, les points de terminaison de connexion Microsoft Entra ID, tels que login.microsoftonline.com, utilisent des adresses IP dans les plages 20.190.128.0/18 et 40.126.0.0/18.

    gcloud

    Pour chaque plage d'adresses IP Microsoft Entra ID, créez deux routes en remplaçant VM_NAME et VM_ZONE par le nom et la zone réels de votre VM d'hôte bastion :

    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_VALUE
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance Cloud SQL.
    • NAME : nom de la route que vous souhaitez créer.
    • NETWORK : nom du réseau sur lequel se trouve votre instance Cloud SQL.
    • RANGE : plage d'adresses IP que vous souhaitez utiliser.
    • VM_NAME : nom de la VM d'hôte bastion que vous souhaitez inclure.
    • VM_ZONE : zone de la VM hôte bastion que vous souhaitez inclure, par exemple us-central1.
    • ILB_VALUE : facultatif. Nom ou adresse IP d'une règle de transfert pour un équilibreur de charge TCP/UDP interne. Si vous avez configuré un équilibreur de charge devant vos VM d'hôte bastion, vous devez inclure l'option --next-hop-ilb dans cette commande.

      Pour en savoir plus, consultez la section Équilibreurs de charge réseau passthrough internes comme prochains sauts.

    Voici un exemple :

    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-ilb1
    
  3. Utilisez la même commande qu'à l'étape précédente pour appliquer la même configuration afin d'autoriser le trafic pour les vérifications de révocation de certificats Microsoft Entra ID. Utilisez les plages d'adresses IP listées sur la page DigiCert Certificate Status IP address (Adresse IP de l'état du certificat DigiCert).

    Si vous n'effectuez pas cette étape, l'authentification Microsoft Entra ID peut toujours fonctionner, mais vous pouvez également rencontrer des retards lors de l'ouverture de nouvelles connexions.

Gérer l'authentification Microsoft Entra ID

Vous pouvez activer l'authentification Entra ID pour une instance nouvelle ou existante.

Créer une instance avec l'authentification Microsoft Entra ID activée

Vous pouvez activer l'authentification Microsoft Entra ID lorsque vous créez une instance Cloud SQL pour SQL Server. Vous devez fournir l'ID de locataire Microsoft Entra et l'ID application (ID client) spécifiques de l'enregistrement d'application que vous avez configuré sur votre portail Azure.

Pour en savoir plus, consultez les conditions préalables.

gcloud

gcloud 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

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance que vous souhaitez créer.
  • EDITION : édition de l'instance que vous souhaitez utiliser, par exemple SQLSERVER_2025_STANDARD.
  • TIER : niveau d'instance ou type de machine que vous souhaitez utiliser, par exemple db-custom-2-3840.
  • NETWORK : nom du réseau que vous souhaitez utiliser.
  • PASSWORD : mot de passe de l'instance.
  • TENANT_ID : ID du locataire Microsoft Entra.
  • APPLICATION_ID : ID de l'application ou ID client.

Voici un exemple :

gcloud sql instances create my-entraid-instance \
    --database-version=SQLSERVER_2025_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

Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

  • PROJECT_ID : nom du projet dans lequel se trouvera l'instance que vous souhaitez créer.
  • INSTANCE_ID : ID de l'instance que vous souhaitez créer.
  • EDITION : édition de l'instance que vous souhaitez utiliser, par exemple SQLSERVER_2022_STANDARD.
  • REGION : région dans laquelle vous souhaitez que l'instance réside, par exemple us-central1.
  • PASSWORD : mot de passe de l'instance.
  • TIER : niveau d'instance ou type de machine que vous souhaitez utiliser, par exemple db-custom-2-3840.
  • NETWORK : nom du réseau que vous souhaitez utiliser.
  • TENANT_ID : ID du locataire Microsoft Entra.
  • APPLICATION_ID : ID de l'application ou ID client.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "databaseVersion":"EDITION",
  "name":"INSTANCE_ID",
  "region":"REGION",
  "rootPassword":"PASSWORD",
  "settings":
  {
    "tier":"TIER",
    "ipConfiguration":
      {
        "privateNetwork":"NETWORK"
      },
    "entraidConfig":
    {
      "tenantId": "TENANT_ID",
      "applicationId": "APPLICATION_ID"
    }
  }
}

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_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

Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

  • PROJECT_ID : nom du projet dans lequel se trouvera l'instance que vous souhaitez créer.
  • INSTANCE_ID : ID de l'instance que vous souhaitez créer.
  • EDITION : édition de l'instance que vous souhaitez utiliser, par exemple SQLSERVER_2022_STANDARD.
  • REGION : région dans laquelle vous souhaitez que l'instance réside, par exemple us-central1.
  • PASSWORD : mot de passe de l'instance.
  • TIER : niveau d'instance ou type de machine que vous souhaitez utiliser, par exemple db-custom-2-3840.
  • NETWORK : nom du réseau que vous souhaitez utiliser.
  • TENANT_ID : ID du locataire Microsoft Entra.
  • APPLICATION_ID : ID de l'application ou ID client.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "databaseVersion":"EDITION",
  "name":"INSTANCE_ID",
  "region":"REGION",
  "rootPassword":"PASSWORD",
  "settings":
  {
    "tier":"TIER",
    "ipConfiguration":
      {
        "privateNetwork":"NETWORK"
      },
    "entraidConfig":
    {
      "tenantId": "TENANT_ID",
      "applicationId": "APPLICATION_ID"
    }
  }
}

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

Gérer l'authentification Microsoft Entra ID sur une instance existante

Vous pouvez activer, modifier ou désactiver la configuration Microsoft Entra ID sur une instance existante à tout moment.

Pour modifier la configuration de votre instance, vous devez appliquer un correctif à l'instance avec les nouvelles valeurs d'ID de locataire et d'ID client ou les valeurs supprimées.

Ce processus n'implique pas de joindre ou de dissocier un domaine.

Vous pouvez mettre à jour les valeurs d'ID de locataire et d'ID application sans activer ni désactiver l'intégration à Microsoft Entra ID.

gcloud

gcloud sql instances patch INSTANCE_NAME \
    --entra-id-tenant-id="NEW_TENANT_ID" \
    --entra-id-application-id="NEW_APPLICATION_ID"

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance que vous souhaitez modifier.
  • NEW_TENANT_ID : nouvel ID de locataire Microsoft Entra. Pour désactiver Microsoft Entra ID, laissez cette chaîne vide.
  • NEW_APPLICATION_ID : nouvel ID d'application ou ID client. Pour désactiver Microsoft Entra ID, laissez cette chaîne vide.

Voici un exemple :

gcloud 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

Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

  • PROJECT_ID : ID du projet dans lequel se trouve l'instance que vous souhaitez modifier.
  • INSTANCE_ID : ID de l'instance que vous souhaitez modifier.
  • TENANT_ID : ID du locataire Microsoft Entra. Pour désactiver Microsoft Entra ID, laissez cette chaîne vide.
  • APPLICATION_ID : ID de l'application ou ID client. Pour désactiver Microsoft Entra ID, laissez cette chaîne vide.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":
  {
    "entraidConfig":
    {
      "tenantId": "NEW_TENANT_ID",
      "applicationId": "NEW_APPLICATION_ID"
    }
  }
}

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_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

Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

  • PROJECT_ID : ID du projet dans lequel se trouve l'instance que vous souhaitez modifier.
  • INSTANCE_ID : ID de l'instance que vous souhaitez modifier.
  • TENANT_ID : ID du locataire Microsoft Entra. Pour désactiver Microsoft Entra ID, laissez cette chaîne vide.
  • APPLICATION_ID : ID de l'application ou ID client. Pour désactiver Microsoft Entra ID, laissez cette chaîne vide.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":
  {
    "entraidConfig":
    {
      "tenantId": "NEW_TENANT_ID",
      "applicationId": "NEW_APPLICATION_ID"
    }
  }
}

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

Ajouter le certificat à l'application

Pour que votre Microsoft Entra ID puisse authentifier votre instance Cloud SQL pour SQL Server, vous devez importer le certificat public de l'instance Cloud SQL pour SQL Server dans l'enregistrement de votre application Microsoft Entra ID.

  1. Après avoir activé l'authentification Microsoft Entra ID sur votre instance, créez un certificat spécifique à l'instance pour Microsoft Entra ID.

    gcloud

    gcloud sql ssl entraid-certs create --instance=INSTANCE_NAME
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance pour laquelle vous souhaitez créer un certificat.

    REST v1

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

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_ID : ID de l'instance

    Méthode HTTP et URL :

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

    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_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

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

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_ID : ID de l'instance

    Méthode HTTP et URL :

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

    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_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"
    }
    
  2. Obtenez les détails du certificat que vous venez de créer en récupérant les détails de l'instance :

    gcloud

    gcloud sql ssl entraid-certs list --instance=INSTANCE_NAME --format="value(ssl_cert.cert)"
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance associée au certificat que vous venez de créer.

    REST v1

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

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_ID : ID de l'instance

    Méthode HTTP et URL :

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

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

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

    Cette commande affiche un certificat que vous pouvez enregistrer dans un fichier, puis importer ultérieurement sur le portail Azure.

    Vous devez supprimer tous les caractères de nouvelle ligne intégrés du fichier et séparer manuellement chaque nouvelle ligne. Dans le cas contraire, l'importation du fichier échoue.

    Par exemple, vous pouvez recevoir une chaîne de texte semblable à celle-ci :

    Line1\Line2\Line3
    

    Vous devez séparer manuellement chaque ligne, comme suit :

    Line1
    Line2
    Line3
    

    Si vous ne souhaitez pas effectuer cette tâche manuellement, utilisez la commande suivante :

    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'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_NAME : nom de l'instance associée au certificat que vous venez de créer.

    REST v1beta4

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

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_ID : ID de l'instance

    Méthode HTTP et URL :

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

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

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

    Cette commande affiche un certificat que vous pouvez enregistrer dans un fichier, puis importer ultérieurement sur le portail Azure.

    Vous devez supprimer tous les caractères de nouvelle ligne intégrés du fichier et séparer manuellement chaque nouvelle ligne. Dans le cas contraire, l'importation du fichier échoue.

    Par exemple, vous pouvez recevoir une chaîne de texte semblable à celle-ci :

    Line1\Line2\Line3
    

    Vous devez séparer manuellement chaque ligne, comme suit :

    Line1
    Line2
    Line3
    

    Si vous ne souhaitez pas effectuer cette tâche manuellement, utilisez la commande suivante :

    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'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_NAME : nom de l'instance associée au certificat que vous venez de créer.
  3. Ajoutez votre certificat au portail Azure.

    1. Accédez à votre inscription d'application sur le portail Azure.
    2. Ouvrez Certificats et secrets.
    3. Sélectionnez Importer un certificat. Accédez au fichier de certificat que vous avez récupéré à partir de votre instance, puis ajoutez-le.
    4. Cliquez sur OK.

Effectuer une rotation du certificat Microsoft Entra ID

Vous devez effectuer une rotation du certificat Microsoft Entra ID avant son expiration. Nous vous recommandons de commencer ce processus au moins une semaine avant la date d'expiration prévue :

  1. Suivez la procédure décrite dans Ajouter le certificat à l'application pour créer un certificat inactif sur votre instance Cloud SQL pour SQL Server, puis importez-le dans Microsoft Entra ID à l'aide du portail Azure. Cela n'affecte pas le certificat actif actuel.

  2. Activez le nouveau certificat sur l'instance Cloud SQL pour SQL Server, ce qui déclenche l'utilisation du nouveau certificat par Cloud SQL pour SQL Server pour toutes les nouvelles authentifications.

    gcloud

    gcloud sql ssl entraid-certs rotate --instance=INSTANCE_NAME
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance associée au certificat dont vous souhaitez effectuer la rotation.

    REST v1

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

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_ID : ID de l'instance

    Méthode HTTP et URL :

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

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

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

    REST v1beta4

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

    • PROJECT_ID : ID du projet dans lequel se trouve votre instance.
    • INSTANCE_ID : ID de l'instance

    Méthode HTTP et URL :

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

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

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

  3. Votre instance utilise désormais le nouveau certificat.

    Vous pouvez supprimer l'ancien certificat de l'enregistrement de votre application Microsoft Entra ID et de l'instance Cloud SQL pour SQL Server en toute sécurité. Pour en savoir plus, consultez Ajouter et gérer des identifiants d'application dans Microsoft Entra ID.

Annuler le certificat Microsoft Entra ID

Si vous rencontrez des problèmes après avoir effectué la rotation vers un nouveau certificat, vous pouvez revenir au certificat précédent.

Pour effectuer un rollback, le certificat précédent doit toujours être valide et approuvé par l'enregistrement de votre application Microsoft Entra ID.

Les commandes suivantes réactivent immédiatement le certificat précédent spécifié sur votre instance Cloud SQL pour SQL Server.

gcloud

gcloud sql ssl entraid-certs rollback --instance=INSTANCE_NAME

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance associée au certificat que vous souhaitez restaurer.

REST v1

Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

  • PROJECT_ID : ID du projet dans lequel se trouve l'instance.
  • INSTANCE_ID : ID de l'instance pour laquelle vous souhaitez effectuer un rollback du certificat.
  • CERTIFICATE_NAME : nom du nouveau certificat que vous souhaitez utiliser pour remplacer l'ancien certificat, par exemple sha1Fingerprint.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  {
  "RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
  }
}

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_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

Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

  • PROJECT_ID : ID du projet dans lequel se trouve l'instance.
  • INSTANCE_ID : ID de l'instance pour laquelle vous souhaitez effectuer un rollback du certificat.
  • CERTIFICATE_NAME : nom du nouveau certificat que vous souhaitez utiliser pour remplacer l'ancien certificat, par exemple sha1Fingerprint.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  {
  "RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
  }
}

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

Créer la connexion Microsoft Entra ID initiale

Après avoir activé l'authentification Microsoft Entra ID sur l'instance, vous devez créer vos connexions Microsoft Entra ID.

  1. Créez la première connexion Microsoft Entra ID.

    Cette connexion initiale, qui représente un utilisateur ou un groupe Microsoft Entra ID, ne peut pas être créée à l'aide de T-SQL. Vous devez la créer à l'aide de la gcloud CLI ou de l'API Cloud SQL Admin :

    gcloud

    gcloud sql users create USER_NAME --instance=INSTANCE_NAME --type=ENTRAID_USER
    

    Remplacez les éléments suivants :

    • USER_NAME : nom de l'utilisateur Cloud SQL pour SQL Server que vous souhaitez créer.
    • INSTANCE_NAME : nom de l'instance pour laquelle vous souhaitez créer des connexions Microsoft Entra ID.
    • ENTRAID_USER : nom d'utilisateur Microsoft Entra ID.

    Voici un exemple :

    gcloud sql users create myentraiduser@mytenant.com --instance=my-entraid-instance --type=ENTRAID_USER
    

    REST v1

    Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

    • PROJECT_ID : ID du projet dans lequel se trouve l'instance.
    • INSTANCE_ID : ID de l'instance que vous souhaitez mettre à jour.
    • USER_NAME : nom de l'utilisateur Cloud SQL pour SQL Server que vous souhaitez créer.
    • ENTRAID_USER : nom d'utilisateur Microsoft Entra ID.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
      "name": "USER_NAME"
      "type": "ENTRAID_USER"
    }
    

    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_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

    Tous les champs possibles ne sont pas affichés dans l'appel d'API de base suivant. Pour obtenir un prototype de requête JSON, consultez la section Paramètres.

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

    • PROJECT_ID : ID du projet dans lequel se trouve l'instance.
    • INSTANCE_ID : ID de l'instance que vous souhaitez mettre à jour.
    • USER_NAME : nom de l'utilisateur Cloud SQL pour SQL Server que vous souhaitez créer.
    • ENTRAID_USER : nom d'utilisateur Microsoft Entra ID.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
      "name": "USER_NAME"
      "type": "ENTRAID_USER"
    }
    

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

    Une fois la connexion Microsoft Entra ID initiale créée, vous pouvez vous connecter à la base de données en tant qu'utilisateur.

  2. Créez des connexions Microsoft Entra ID ultérieures.

    Vous pouvez créer et gérer des identifiants Microsoft Entra ID supplémentaires, comme indiqué à l'étape précédente.

    Si vous préférez utiliser un autre outil, tel que SQL Server Management Studio (SSMS), vous devez d'abord accorder à l'identifiant initial l'autorisation de gérer d'autres identifiants :

    GRANT ALTER ANY LOGIN TO [ENTRA_ID_USER] AS CustomerDbRootRole
    

    Remplacez ENTRAID_USER par le nom d'utilisateur Microsoft Entra ID.

    Une fois les autorisations accordées, cette connexion peut créer et gérer d'autres connexions Microsoft Entra ID à l'aide de commandes T-SQL standards. Voici un exemple de commande :

    CREATE LOGIN [<<ENTRA_ID_USER>>] FROM EXTERNAL PROVIDER
    

    Remplacez ENTRAID_USER par le nom d'utilisateur Microsoft Entra ID.

    Pour créer des utilisateurs en fonction des connexions Microsoft Entra ID ou pour accorder des autorisations, utilisez les commandes T-SQL standards.

    Pour en savoir plus, y compris sur la création d'un compte de connexion avec la syntaxe appropriée, consultez Configurer l'authentification Microsoft Entra pour SQL Server avec l'enregistrement d'application.

Bonnes pratiques

Pour isoler les autorisations et mieux définir les limites de sécurité, nous vous encourageons vivement à créer un enregistrement d'application Microsoft Entra ID unique pour chaque instance Cloud SQL pour SQL Server. La révocation des identifiants de l'application n'aura aucune incidence sur les autres instances non liées.

Pour en savoir plus, consultez Inscrire une application dans Microsoft Entra ID.

Dépannage

Les sections suivantes vous aident à résoudre les problèmes que vous pourriez rencontrer lors de la gestion de l'intégration de Microsoft Entra ID.

Problèmes de connectivité réseau avec les instances d'adresse IP privée

Vous pouvez rencontrer certains des problèmes suivants lors de la configuration de l'intégration :

  • Opérations lentes pour créer des connexions Microsoft Entra ID
  • Impossible de créer des connexions Microsoft Entra ID
  • Impossible de se connecter à l'instance à l'aide de l'authentification Microsoft Entra ID

Pour résoudre ces problèmes, effectuez le test de connectivité suivant :

  1. Dans le même projet Google Cloud et le même VPC, et dans la même région que votre instance Cloud SQL pour SQL Server, créez une VM de test configurée avec une adresse IP privée uniquement.

  2. Connectez-vous à la VM que vous venez de créer à l'aide du protocole RDP (Remote Desktop Protocol) ou du protocole SSH (Secure Shell). Exécutez ensuite les commandes suivantes pour tester l'accessibilité. Ces étapes peuvent être appliquées aux VM Linux et Windows :

    curl -4iv login.microsoftonline.com
    curl -4iv graph.microsoft.com
    curl -4iv ocsp.digicert.com
    

Si vous ne parvenez pas à atteindre l'un de ces points de terminaison, en raison de délais d'expiration ou d'erreurs de connexion refusée, vérifiez les points suivants dans votre configuration réseau :

  • Pour Private Service Connect, assurez-vous que Cloud NAT est correctement configuré pour autoriser l'accès à Internet sortant.
  • Pour l'accès aux services privés, vérifiez la configuration de vos routes personnalisées et de vos hôtes bastion.
  • Vérifiez vos règles de pare-feu VPC pour vous assurer que le trafic de sortie vers ces domaines n'est pas bloqué.

Messages d'erreur fréquents

Vous pouvez rencontrer l'erreur de connexion suivante lors de l'authentification Microsoft Entra ID :

Login failed for user ""

Pour résoudre ce problème, assurez-vous qu'un identifiant SQL Server existe pour cet utilisateur Microsoft Entra ID.

Migration depuis Microsoft Active Directory

Dans les scénarios suivants, vous pouvez activer l'authentification Microsoft Entra ID sans désactiver l'authentification Microsoft Active Directory existante :

Journalisation

Pour obtenir des rapports sur les erreurs et les avertissements de base, par exemple pour savoir si Microsoft Entra ID est activé, utilisez le journal sqlserver.err standard. Pour obtenir des informations plus détaillées sur la surveillance et le dépannage, utilisez le journal entraid.log, qui fournit des informations telles que les suivantes :

  • Fournit l'état de connectivité de chaque point de terminaison requis.
  • Signale les détails des autorisations d'API manquantes.
  • Indique le nombre de jours restants avant l'expiration du certificat client.
  • Fournit des erreurs internes spécifiques, telles que des échecs d'acquisition de jetons, qui peuvent vous aider à localiser la cause d'un problème.

Les entrées de journal sont mises à jour quotidiennement ou chaque fois qu'un état change.

Instances répliquées avec accès en lecture

  • Si vous ajoutez une instance répliquée avec accès en lecture à une instance principale pour laquelle Microsoft Entra ID est activé, l'instance répliquée avec accès en lecture est automatiquement configurée pour utiliser Microsoft Entra ID.
  • Si Microsoft Entra ID est activé sur l'instance principale et que vous restaurez une sauvegarde sur cette instance, l'instance répliquée avec accès en lecture associée est automatiquement configurée pour utiliser Microsoft Entra, car l'identité ne change pas.
  • Les modifications apportées à l'ID de locataire, à l'ID application ou aux certificats de l'instance principale sont automatiquement propagées aux instances dupliquées avec accès en lecture associées à l'instance.

Pools de lecture gérés

  • Les modifications apportées à l'ID de locataire, à l'ID application ou aux certificats de l'instance principale sont automatiquement propagées aux pools de lecture gérés associés à l'instance.

Instances clonées et restauration sur une autre instance

L'intégration de Microsoft Entra ID n'est pas automatiquement configurée sur la nouvelle instance dans les scénarios suivants :

  • Un clone de l'instance principale.
  • Une sauvegarde restaurée sur une instance qui n'est pas l'instance principale.

Dans ce cas, vous devez activer manuellement Microsoft Entra ID sur la nouvelle instance, puis réimporter son certificat dans l'application Microsoft Entra ID. Cette exigence est une mesure de sécurité visant à empêcher plusieurs instances non liées d'utiliser la même identité d'application.

Limites

  • L'authentification Microsoft Entra ID n'est compatible qu'avec SQL Server 2022 ou version ultérieure. Elle n'est pas disponible sur SQL Server 2017 ni SQL Server 2019.
  • Si vous clonez une instance ou restaurez une sauvegarde sur une autre instance, l'intégration de Microsoft Entra ID n'est pas automatiquement configurée sur la nouvelle instance.
  • Pour activer l'authentification Microsoft Entra ID sur une instance régionale avec une adresse IP publique et l'accès aux services privés, votre instance doit être configurée pour être utilisée avec une route d'accès aux services privés depuis une VM bastion.
  • Pour activer l'authentification Microsoft Entra ID sur une instance régionale qui utilise Private Service Connect et l'accès aux services privés, votre instance doit être configurée pour être utilisée avec une route d'accès aux services privés depuis une VM bastion.

Étapes suivantes