Obtenir des jetons Microsoft Entra ID pour les principaux de service

Important

Cette section explique comment obtenir manuellement des jetons Microsoft Entra ID pour les principaux de service.

Les principaux de service géré Azure Databricks sont gérés directement dans Azure Databricks. Les principaux de service géré Microsoft Entra ID sont gérés dans Microsoft Entra ID, ce qui nécessite des autorisations supplémentaires. Databricks recommande d’utiliser des principaux de service géré Azure Databricks pour la plupart des cas d’usage. Toutefois, Databricks vous recommande d’utiliser des principaux de service géré Microsoft Entra ID dans les cas où vous devez vous authentifier auprès d’Azure Databricks et d’autres ressources Azure en même temps.

Pour créer un principal de service géré Azure Databricks au lieu d’un principal de service géré Microsoft Entra ID, consultez Gérer les principaux de service.

Databricks ne vous recommande pas de créer manuellement des jetons Microsoft Entra ID pour les principaux de service Microsoft Entra ID. C’est parce que chaque jeton Microsoft Entra ID est de courte durée et expire généralement dans l’heure. Au-delà de ce délai, vous devez générer manuellement un jeton Microsoft Entra ID de remplacement. Utilisez plutôt l’un des outils ou SDK participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et SDK génèrent et remplacent automatiquement pour vous les jetons Microsoft Entra ID expirés, en tirant parti des types d’authentification Databricks suivants :

Si vous n’avez pas de principal de service, vous pouvez en approvisionner un en suivant l’un de ces ensembles d’instructions :

Cet article explique comment un principal de service défini dans Microsoft Entra ID peut également agir comme un principal auquel appliquer les stratégies d’authentification et d’autorisation dans Azure Databricks. Les principaux de service dans un espace de travail Azure Databricks peuvent avoir un contrôle d’accès précis différent des utilisateurs standard (principaux d’utilisateur).

Un principal de service agit comme un rôle client et utilise le flux d’informations d’identification du client OAuth 2.0 pour autoriser l’accès aux ressources Azure Databricks.

Vous pouvez gérer les principaux de service dans Databricks ou à l’aide de la procédure suivante à partir du Portail Azure.

Vous pouvez également utiliser la bibliothèque d’authentification Microsoft (MSAL) afin d’obtenir programmatiquement un jeton d’accès Microsoft Entra ID pour un utilisateur au lieu d’un principal de service. Consultez Obtenir des jetons Microsoft Entra ID pour les utilisateurs à l’aide de MSAL.

Provisionner un principal de service dans le portail Azure

  1. Connectez-vous au portail Azure.

    Remarque

    Le portail à utiliser est différent selon que votre application Microsoft Entra ID s’exécute dans le cloud public Azure ou dans un cloud national ou souverain. Pour plus d’informations, voir Clouds nationaux

  2. Si vous avez accès à plusieurs locataires, abonnements ou répertoires, cliquez sur l’icône Répertoires + abonnements (répertoire avec filtre) dans le menu supérieur pour basculer vers le répertoire dans lequel vous souhaitez approvisionner le principal de service.

  3. Dans Ressources de recherche, services et documents, recherchez et sélectionnez Microsoft Entra ID.

  4. Cliquez sur + Ajouter, puis sélectionnez Inscription d’application.

  5. Dans Nom, entrez le nom de l’application.

  6. Dans la section Types de comptes pris en charge, sélectionnez Comptes de cet annuaire organisationnel uniquement (Locataire unique).

  7. Cliquez sur S'inscrire.

  8. Dans la page Présentation de la page d’application, dans la section Essentials, copiez les valeurs suivantes :

    • ID d’application (client)
    • ID de l’annuaire (locataire)

    Vue d’ensemble de l’application inscrite dans Azure

  9. Pour générer une clé secrète client, dans Gérer, cliquez sur Certificats et secrets.

    Remarque

    Vous utilisez cette clé secrète client pour générer des jetons Microsoft Entra ID pour authentifier les principaux de service Microsoft Entra ID avec Azure Databricks. Pour déterminer si un outil Azure Databricks ou un kit de développement logiciel (SDK) peut utiliser des jetons Microsoft Entra ID, consultez la documentation de l’outil ou du kit de développement logiciel (SDK).

  10. Sous l’onglet Clés secrètes client, cliquez sur Nouvelle clé secrète client.

    Nouvelle clé secrète client

  11. Dans le volet Ajouter une clé secrète client, pour Description, entrez une description pour la clé secrète client.

  12. Pour Expirer, sélectionnez une période d’expiration pour la clé secrète client, puis cliquez sur Ajouter.

  13. Copiez et stockez la valeur de la clé secrète client dans un endroit sûr, car cette clé secrète client est le mot de passe de votre application.

Approvisionner un principal de service avec Azure CLI

Consultez Créer un principal de service Microsoft Entra ID (anciennement Azure Active Directory) avec Azure CLI.

Obtenir un jeton d’accès Microsoft Entra ID avec l’API REST de la plateforme d’identité Microsoft

Important

Cette section explique comment obtenir manuellement un jeton Microsoft Entra ID pour un principal de service avec l’API REST de la plateforme d’identité Microsoft.

Databricks ne vous recommande pas de créer manuellement des jetons Microsoft Entra ID pour les principaux de service Microsoft Entra ID. C’est parce que chaque jeton Microsoft Entra ID est de courte durée et expire généralement dans l’heure. Au-delà de ce délai, vous devez générer manuellement un jeton Microsoft Entra ID de remplacement. Utilisez plutôt l’un des outils ou SDK participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et SDK génèrent et remplacent automatiquement pour vous les jetons Microsoft Entra ID expirés, en tirant parti des types d’authentification Databricks suivants :

Pour accéder à l’API REST Databricks avec le principal de service, vous obtenez et utilisez un jeton d’accès Microsoft Entra ID pour le principal de service. Pour plus d’informations, consultez, Premier cas : demande de jeton d’accès avec un secret partagé.

Conseil

Vous pouvez également utiliser Azure CLI pour obtenir le jeton d’accès Microsoft Entra ID. Consultez Obtenir un jeton d’accès Microsoft Entra ID avec Azure CLI.

  1. Rassemblez les informations suivantes :

    Paramètre Description
    Tenant ID Directory (tenant) ID pour l’application associée inscrite dans Microsoft Entra ID.
    Client ID Application (client) ID pour l’application associée inscrite dans Microsoft Entra ID.
    Client secret Value de la clé secrète client pour l’application associée inscrite dans Microsoft Entra ID.
  2. Utilisez les informations précédentes avec curl pour obtenir le jeton d’accès Microsoft Entra ID.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=<client-secret>'
    

    Remplacez :

    • <tenant-id> par l’ID de locataire de l’application inscrite.
    • <client-id> par l’ID client de l’application inscrite.
    • <client-secret> par la valeur du secret client de l’application inscrite.

    Ne modifiez pas la valeur du paramètre scope. Elle représente l’ID programmatique d’Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d), ainsi que l’étendue par défaut (/.default, encodée URL sous la forme %2f.default).

    Par exemple :

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    Le jeton d’accès Microsoft Entra ID est dans la valeur access_token de la sortie de l’appel.

Obtenir un jeton d’accès Microsoft Entra ID avec Azure CLI

Important

Cette section explique comment obtenir manuellement un jeton Microsoft Entra ID pour un principal de service avec Azure CLI.

Databricks ne vous recommande pas de créer manuellement des jetons Microsoft Entra ID pour les principaux de service Microsoft Entra ID. C’est parce que chaque jeton Microsoft Entra ID est de courte durée et expire généralement dans l’heure. Au-delà de ce délai, vous devez générer manuellement un jeton Microsoft Entra ID de remplacement. Utilisez plutôt l’un des outils ou SDK participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et SDK génèrent et remplacent automatiquement pour vous les jetons Microsoft Entra ID expirés, en tirant parti des types d’authentification Databricks suivants :

Pour accéder à l’API REST Databricks avec le principal de service, vous obtenez et utilisez un jeton d’accès Microsoft Entra ID pour le principal de service.

  1. Rassemblez les informations suivantes :

    Paramètre Description
    Tenant ID Directory (tenant) ID pour l’application associée inscrite dans Microsoft Entra ID.
    Client ID Application (client) ID pour l’application associée inscrite dans Microsoft Entra ID.
    Client secret Value de la clé secrète client pour l’application associée inscrite dans Microsoft Entra ID.
  2. Obtenez l’ID d’abonnement Azure approprié pour le principal de service Microsoft Entra ID. Si vous ne le connaissez pas encore, effectuez l’une des opérations suivantes :

    • Dans la barre de navigation supérieure de votre espace de travail Azure Databricks, cliquez sur votre nom d’utilisateur, puis sur Portail Azure. Dans la page de ressources de l’espace de travail Azure Databricks qui s’affiche, cliquez sur Vue d’ensemble dans la barre latérale. Recherchez ensuite le champ ID d’abonnement, qui contient l’ID d’abonnement.

    • Utilisez l’interface Azure CLI pour exécuter la commande az databricks workspace list en utilisant les options --query et -o ou --output pour affiner les résultats. Remplacez adb-0000000000000000.0.azuredatabricks.net par le nom de votre instance d’espace de travail, sans inclure https://. Dans cet exemple, le 00000000-0000-0000-0000-000000000000 après /subscriptions/ dans la sortie est l’ID d’abonnement.

      az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv
      
      # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
      

      Si le message suivant s’affiche, vous êtes connecté au mauvais tenant : The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. Pour vous connecter au bon tenant, vous devez réexécuter la commande az login en utilisant l’option -t ou --tenant pour spécifier l’ID du tenant approprié.

      Vous pouvez obtenir l’ID de locataire d’un espace de travail Azure Databricks en exécutant la commande curl -v <per-workspace-URL>/aad/auth, puis en recherchant la sortie < location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000, où 00000000-0000-0000-0000-000000000000 représente l’ID de locataire. Consultez également Obtenir des ID d’abonnement et de locataire dans le Portail Azure.

      az login -t <tenant-id>
      
  3. Une fois que vous avez l’ID de tenant Azure, l’ID client, la clé secrète client et l’ID d’abonnement pour votre principal de service Microsoft Entra ID, connectez-vous à Azure en utilisant l’interface Azure CLI pour exécuter la commande az login. Utilisez l’option --service-principal avec la spécification des valeurs pour les paramètres de Tenant ID (Directory (tenant) ID), Client ID (Application (client) ID) et Client secret (Value) pour l’application associée inscrite dans Microsoft Entra ID.

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  4. Vérifiez que vous êtes connecté à l’abonnement correct pour votre principal de service Microsoft Entra ID connecté. Pour ce faire, exécutez la commande az account set en utilisant l’option -s ou --subscription pour spécifier l’ID d’abonnement approprié.

    az account set -s <subscription-id>
    
  5. Générez le jeton d’accès Microsoft Entra ID pour le principal de service Microsoft Entra ID connecté en exécutant la commande az account get-access-token. Utilisez l’option --resource pour spécifier l’ID de ressource unique pour le service Azure Databricks, qui est 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d. Vous pouvez afficher uniquement la valeur du jeton Microsoft Entra ID dans la sortie de la commande en utilisant les options --query et -o ou --output.

    az account get-access-token \
    --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \
    --query "accessToken" \
    -o tsv
    

Utiliser le jeton d’accès Microsoft Entra ID du principal de service pour accéder à l’API REST Databricks

Important

Cette section explique comment utiliser curl et le jeton d’accès Microsoft Entra ID d’un principal de service pour accéder à l’API REST Databricks.

Au lieu de curl, vous pouvez utiliser l’un des outils ou kit de développement logiciel (SDK) participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et SDK génèrent et remplacent aussi automatiquement pour vous les jetons Microsoft Entra ID expirés, en tirant parti des types d’authentification Databricks suivants :

Un principal de service qui est un utilisateur Databricks peut s’authentifier sur l’API REST Databricks avec des jetons Microsoft Entra ID.

Un principal de service peut également s’ajouter en tant qu’administrateur d’espace de travail à un espace de travail s’il a le rôle Contributeur ou Propriétaire sur la ressource d’espace de travail cible dans Azure. Si le principal de service est Contributeur ou Propriétaire sur l’espace de travail cible et que vous voulez l’ajouter à un espace de travail avec son jeton Microsoft Entra ID, accédez à Accès à l’API au niveau de l’espace de travail pour les principaux de service qui ne sont pas des utilisateurs Azure Databricks.

Sinon, continuez à Accès d’API pour les principaux de service Azure Databricks que sont les utilisateurs et les administrateurs.

Accès d’API pour les principaux de service Azure Databricks les utilisateurs et les administrateurs

Pour effectuer cette procédure, vous devez d’abord ajouter le principal du service au compte ou à l'espace de travail Azure Databricks. Vous pouvez ajouter votre principal de service directement à votre compte, sans lui accorder l’accès à l’espace de travail, à l’aide de l’API SCIM (compte).

Vous pouvez ajouter votre principal de service à un espace de travail à l’aide du point de terminaison Principal de service . Cela ajoute également le principal de service à votre compte Azure Databricks. Par exemple :

En utilisant l’interface CLI Databricks version 0.205 ou ultérieure (recommandé) :

Ajouter un principal de service :

databricks service-principals create --application-id 12a34b56-789c-0d12-e3fa-b456789c0123 --display-name "My Service Principal" -p <profile-name-that-references-calling-users-access-token>

Mettez à jour les droits d’espace de travail du principal de service :

databricks service-principals patch 1234567890123456 --json @update-service-principal.json -p <profile-name-that-references-access-token>

update-service-principal.json:

{
  "Operations": [
    {
      "op": "add",
      "path": "entitlements",
      "value": {
        "value": "workspace-acccess",
        "value": "allow-cluster-create",
        "value": "databricks-sql-access"
      }
    }
  ],
  "schema": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ]
}

Consultez Authentification pour l’interface CLI Databricks.

À l'aide de curl :

curl -X POST \
-H 'Authorization: Bearer <access-token>' \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/preview/scim/v2/ServicePrincipals \
-H 'Content-type: application/scim+json' \
-d @create-service-principal.json

create-service-principal.json:

{
  "displayName": "My Service Principal",
  "applicationId": "12a34b56-789c-0d12-e3fa-b456789c0123",
  "entitlements": [
    {
      "value": "allow-cluster-create"
    }
  ],
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
  ],
  "active": true
}

Passez à l'accès à l’API au niveau de l'espace de travail pour les principaux de service qui ne sont pas des utilisateurs d'Azure Databricks si l'une des conditions suivantes est remplie :

  • L’API REST d'Azure Databricks que vous souhaitez appeler nécessite un accès administrateur à l’espace de travail et le principal du service est membre de l'espace de travail, mais ne dispose pas actuellement d'un accès administrateur à l’espace de travail.
  • Le principal de service n’a pas encore été ajouté à l’espace de travail Azure Databricks cible.
  1. Rassemblez les informations suivantes.

    Paramètre Description
    Jeton d’accès Microsoft Entra ID Jeton d’accès Microsoft Entra ID renvoyé par la demande dans Obtenir un jeton d’accès Microsoft Entra ID avec l’API REST de la plateforme d’identité Microsoft ou Obtenir un jeton d’accès Microsoft Entra ID avec Azure CLI.
  2. Utilisez le jeton d’accès Microsoft Entra ID avec curl pour appeler l’API REST Databricks. Par exemple :

    En utilisant l’interface CLI Databricks version 0.205 ou ultérieure (recommandé) :

    databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
    

    Consultez Authentification pour l’interface CLI Databricks.

    À l'aide de curl :

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://<databricks-instance>/api/2.0/clusters/list
    

    Remplacez :

    • <access-token> avec le jeton d’accès Microsoft Entra ID.
    • <databricks-instance> par l’URL de l’espace de travail de votre déploiement Azure Databricks.
    • GETet /api/2.0/clusters/list avec l’opération HTTP et le point de terminaison appropriés pour l’API REST Databricks cible.

    Par exemple :

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
    

Accès à l'API au niveau de l'espace de travail pour les principaux de service qui ne sont pas des utilisateurs d'Azure Databricks

Suivez cette procédure si l’une des conditions suivantes est vraie :

  • L’API REST d'Azure Databricks que vous souhaitez appeler nécessite un accès administrateur à l’espace de travail et le principal du service est membre de l'espace de travail, mais ne dispose pas actuellement d'un accès administrateur à l’espace de travail.
  • Le principal de service n’a pas encore été ajouté à l’espace de travail Azure Databricks cible.

Conditions requises :

  • Le principal du service requiert le rôle de contributeur ou de propriétaire sur la ressource de l'espace de travail cible dans Azure.
  1. Rassemblez les informations suivantes :

    Paramètre Description
    ID client ID d’annuaire (locataire) pour l’application associée inscrite dans Microsoft Entra ID dans Provisionner un principal de service dans le portail Azure.
    ID client ID d’application (client) pour l’application associée inscrite dans Microsoft Entra ID.
    Clé secrète client Valeur du secret client pour l’application associée inscrite dans Microsoft Entra ID, que vous avez créée dans Provisionner un principal de service dans le portail Azure.
    Jeton d’accès Microsoft Entra ID Jeton d’accès Microsoft Entra ID renvoyé par la demande dans Obtenir un jeton d’accès Microsoft Entra ID avec l’API REST de la plateforme d’identité Microsoft ou Obtenir un jeton d’accès Microsoft Entra ID avec Azure CLI.
    Identifiant d’abonnement ID (et non le nom) de l’abonnement Azure associé à l’espace de travail Azure Databricks cible. Pour obtenir cette information et les informations suivantes, consultez Ouvrir des ressources. Pour ouvrir la ressource cible, vous pouvez rechercher le type de service Azure Databricks et toute autre information que vous connaissez dans Azure sur l’espace de travail Azure Databricks cible.
    Nom de groupe ressources Nom du groupe de ressources Azure associé à l’espace de travail Azure Databricks cible.
    Nom de l’espace de travail Nom dans Azure de l’espace de travail Azure Databricks cible.
  2. Utilisez certaines des informations précédentes avec curl pour obtenir un jeton d’accès de point de terminaison de gestion Microsoft Entra ID.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=<client-secret>'
    

    Remplacez :

    • <tenant-id> par l’ID de locataire de l’application inscrite.
    • <client-id> par l’ID client de l’application inscrite.
    • <client-secret> par la valeur du secret client de l’application inscrite.

    Ne modifiez pas la valeur du paramètre resource. Il représente le point de terminaison de gestion Microsoft Entra ID (https://management.core.windows.net/, encodé au format URL https%3A%2F%2Fmanagement.core.windows.net%2F).

    Par exemple :

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    Le jeton d’accès du point de terminaison de gestion Microsoft Entra ID est dans la valeur access_token de la sortie de l’appel.

  3. Utilisez le jeton d’accès du point de terminaison de gestion Microsoft Entra ID avec le reste des informations précédentes et curl pour appeler l’API REST Databricks, par exemple :

     curl -X GET \
     -H 'Authorization: Bearer <access-token>' \
     -H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
     -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
     https://<databricks-instance>/api/2.0/clusters/list
    

    Remplacez :

    • <access-token> avec le jeton d’accès Microsoft Entra ID.

      • <management-access-token> avec le jeton d’accès du point de terminaison de gestion Microsoft Entra ID.
      • <subscription-id> par l’ID de l’abonnement Azure associé à l’espace de travail Azure Databricks cible.
      • <resource-group-name> par le nom du groupe de ressources associé à l’espace de travail Azure Databricks cible.
      • <workspace-name> par le nom de l’espace de travail Azure Databricks cible.
      • <databricks-instance> par l’URL de l’espace de travail de votre déploiement Azure Databricks.
      • GETet /api/2.0/clusters/list avec l’opération HTTP et le point de terminaison appropriés pour l’API REST Databricks cible.

      Par exemple :

      curl -X GET \
      -H 'Authorization:Bearer <access-token>' \
      -H 'X-Databricks-Azure-SP-Management-Token: abC1dE...ghIj23kl' \
      -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/12a345...bcd6789e/resourceGroups/my-resource-group/providers/Microsoft.Databricks/workspaces/my-workspace' \
      https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
      

    Lors de l’authentification auprès de l’espace de travail, le principal de service devient un administrateur d’espace de travail Azure Databricks et n’a plus besoin du rôle Contributeur ou Propriétaire pour accéder à l’espace de travail.