Partager via


Autoriser l’accès utilisateur à Azure Databricks avec OAuth

Cette page explique comment autoriser l’accès utilisateur aux ressources Azure Databricks lors de l’utilisation de l’interface CLI Azure Databricks ou des API REST Azure Databricks.

Azure Databricks utilise OAuth 2.0 comme protocole préféré pour l’autorisation utilisateur et l’authentification en dehors de l’interface utilisateur. L’authentification client unifiée automatise la génération et l’actualisation des jetons. Une fois qu’un utilisateur se connecte et accorde son consentement, OAuth émet un jeton d’accès pour l’interface CLI, le SDK ou un autre outil à utiliser pour le compte de l’utilisateur. Chaque jeton d’accès est valide pendant une heure, après quoi un nouveau jeton est automatiquement demandé.

Dans cette page, l’autorisation fait référence à l’utilisation d’OAuth pour accorder l’accès aux ressources Azure Databricks, tandis que l’authentification fait référence à la validation des informations d’identification par le biais de jetons d’accès.

Pour plus d’informations générales, consultez Autoriser l’accès aux ressources Azure Databricks.

Façons d’autoriser l’accès aux ressources Azure Databricks

Azure Databricks prend en charge deux façons d’autoriser les comptes d’utilisateur avec OAuth :

  • Automatique (recommandé) : Utilisez l’authentification unifiée si vous utilisez des outils et des kits sdk pris en charge, tels que le Kit de développement logiciel (SDK) Terraform Azure Databricks. Cette approche gère automatiquement la génération de jetons et l’actualisation.

  • Manuelle: Générez un vérificateur de code et un défi, puis échangez-les pour un jeton OAuth. Utilisez cette méthode si votre outil ne prend pas en charge l’authentification unifiée. Pour plus d’informations, consultez Générer manuellement des jetons d’accès OAuth U2M.

Autorisation automatique avec authentification unifiée

Remarque

Avant de configurer l’autorisation, passez en revue les autorisations de liste de contrôle d’accès pour le type d’opérations d’espace de travail que vous envisagez d’effectuer et vérifiez que votre compte a le niveau d’accès requis. Pour plus d’informations, consultez les listes de contrôle d’accès.

Pour effectuer une autorisation OAuth avec des kits de développement logiciel (SDK) Azure Databricks et des outils qui prennent en charge l’authentification unifiée, intégrez les éléments suivants dans votre code :

Environnement

Pour utiliser des variables d’environnement pour un type d’authentification Azure Databricks spécifique avec un outil ou un SDK, consultez Autoriser l’accès aux ressources Azure Databricks ou à la documentation de l’outil ou du SDK. Consultez également les variables et champs d’environnement pour l’authentification unifiée et la priorité de la méthode d’authentification.

Pour les opérations au niveau du compte, définissez les variables d’environnement suivantes :

  • DATABRICKS_HOST, défini sur la valeur de l’URL de la console de votre compte Azure Databricks, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

Pour les opérations au niveau de l’espace de travail, définissez les variables d’environnement suivantes :

  • DATABRICKS_HOST, défini sur la valeur de votre URL par espace de travail Azure Databricks, par exemple https://adb-1234567890123456.7.azuredatabricks.net.

Profil

Créez ou identifiez un profil de configuration Azure Databricks avec les champs suivants dans votre fichier .databrickscfg. Si vous créez le profil, remplacez les espaces réservés par les valeurs appropriées. Pour utiliser le profil avec un outil ou un Kit de développement logiciel (SDK), consultez Autoriser l’accès aux ressources Azure Databricks ou à la documentation de l’outil ou du SDK. Consultez également les variables et champs d’environnement pour l’authentification unifiée et la priorité de la méthode d’authentification.

Pour les opérations au niveau du compte, définissez les valeurs suivantes dans votre fichier .databrickscfg. Dans ce cas, l’URL de la console de compte Azure Databricks est https://accounts.azuredatabricks.net :

[<some-unique-configuration-profile-name>]
host       = <account-console-url>
account_id = <account-id>

Pour les opérations au niveau de l’espace de travail, définissez les valeurs suivantes dans votre fichier .databrickscfg. Dans ce cas, l’hôte est l’URL par espace de travail Azure Databricks, par exemple https://adb-1234567890123456.7.azuredatabricks.net :

[<some-unique-configuration-profile-name>]
host = <workspace-url>

Interface de ligne de commande

Pour Azure Databricks CLI, exécutez la databricks auth login commande avec les options suivantes :

Suivez ensuite les instructions de votre navigateur web pour vous connecter à votre compte ou espace de travail Azure Databricks.

Pour plus d’informations, consultez Autorisation OAuth avec l’interface CLI Databricks.

VS Code

Pour l’extension Databricks pour Visual Studio Code, suivez les étapes décrites dans Configurer l’autorisation pour l’extension Databricks pour Visual Studio Code.

Se connecter

L’authentification OAuth U2M est prise en charge dans Databricks Connect pour Python à partir de Databricks Runtime 13.1 et pour Scala à partir de Databricks Runtime 13.3 LTS.

Pour Databricks Connect, vous pouvez :

  • Utilisez un profil de configuration : Définissez les valeurs au niveau de l’espace de travail dans votre .databrickscfg fichier, comme décrit sous l’onglet Profil . Définissez également l’URL cluster_id de votre instance d’espace de travail.
  • Utilisez des variables d’environnement : Définissez les mêmes valeurs que celles affichées sous l’onglet Environnement . Définissez également l’URL DATABRICKS_CLUSTER_ID de votre instance d’espace de travail.

Les valeurs sont .databrickscfg prioritaires sur les variables d’environnement.

Pour initialiser Databricks Connect avec ces paramètres, consultez Configuration de calcul pour Databricks Connect.

Terraformation

Avant d’appliquer votre configuration Terraform, vous devez exécuter l’une des databricks auth login commandes de l’onglet CLI selon que votre configuration utilise des opérations d’espace de travail ou de compte. Ces commandes génèrent et cachent le jeton .databricks/token-cache.json OAuth requis dans le dossier d’accueil de votre utilisateur.

Opérations au niveau du compte

Pour l’authentification par défaut :

provider "databricks" {
  alias = "account"
}

Pour une configuration directe :

provider "databricks" {
  alias      = "account"
  host       = <retrieve-account-console-url>
  account_id = <retrieve-account-id>
}

Remplacez les espaces réservés retrieve- par votre propre implémentation afin de récupérer les valeurs auprès de la console ou d’un autre magasin de configuration, comme HashiCorp Vault. Consultez également le fournisseur de coffres. Dans cet exemple, vous pouvez définir account_id l’URL de la console de compte Azure Databricks.

Opérations au niveau de l’espace de travail

Pour l’authentification par défaut :

  provider "databricks" {
  alias = "workspace"
}

Pour une configuration directe :

provider "databricks" {
  alias = "workspace"
  host  = <retrieve-workspace-url>
}

Python

Avant d’exécuter votre code, vous devez exécuter la databricks auth login commande sous l’onglet CLI avec les options d’opérations d’espace de travail ou de compte. Ces commandes génèrent et cachent le jeton .databricks/token-cache.json OAuth requis dans le dossier d’accueil de votre utilisateur.

Opérations au niveau du compte

Pour l’authentification par défaut :

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Pour une configuration directe :

from databricks.sdk import AccountClient

a = AccountClient(
  host       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

Remplacez les retrieve espaces réservés par votre propre implémentation pour récupérer les valeurs de la console ou d’un autre magasin de configuration, tel qu’Azure KeyVault.

Opérations au niveau de l’espace de travail

Pour l’authentification par défaut :

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Pour une configuration directe :

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host = retrieve_workspace_url())
# ...

Pour plus d’informations sur l’authentification auprès des outils et kits sdk Azure Databricks qui utilisent Python et qui implémentent l’authentification unifiée Databricks, consultez :

Java

Avant d’exécuter votre code, vous devez exécuter la databricks auth login commande sous l’onglet CLI avec les options d’opérations d’espace de travail ou de compte. Ces commandes génèrent et cachent le jeton .databricks/token-cache.json OAuth requis dans le dossier d’accueil de votre utilisateur.

Opérations au niveau du compte

Pour l’authentification par défaut :

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

Pour une configuration directe :

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...

Remplacez les retrieve espaces réservés par votre propre implémentation pour récupérer les valeurs de la console ou d’un autre magasin de configuration, tel qu’Azure KeyVault.

Opérations au niveau de l’espace de travail

Pour l’authentification par défaut :

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

Pour une configuration directe :

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Pour plus d’informations sur l’autorisation et l’authentification avec les outils et kits sdk Azure Databricks qui utilisent Java et qui implémentent l’authentification unifiée Databricks, consultez :

Allez

Avant d’exécuter votre code, vous devez exécuter la databricks auth login commande sous l’onglet CLI avec les options d’opérations d’espace de travail ou de compte. Ces commandes génèrent et cachent le jeton .databricks/token-cache.json OAuth requis dans le dossier d’accueil de votre utilisateur.

Opérations au niveau du compte

Pour l’authentification par défaut :

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

Pour une configuration directe :

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:      retrieveAccountConsoleUrl(),
  AccountId: retrieveAccountId(),
}))
// ...

Remplacez les retrieve espaces réservés par votre propre implémentation pour récupérer les valeurs de la console ou d’un autre magasin de configuration, tel qu’Azure KeyVault.

Opérations au niveau de l’espace de travail

Pour l’authentification par défaut :

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

Pour une configuration directe :

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host: retrieveWorkspaceUrl(),
}))
// ...

Pour plus d’informations sur l’authentification avec les outils et les SDK Databricks qui utilisent Go et qui implémentent l’Authentification unifiée du client Databricks, consultez Authentifier le SDK Databricks pour Go avec votre compte ou votre espace de travail Azure Databricks.

Générer manuellement des jetons d’accès OAuth U2M

Cette section concerne les utilisateurs travaillant avec des outils ou services tiers qui ne prennent pas en charge la norme d’authentification unifiée Databricks . Si vous devez générer, actualiser ou utiliser manuellement des jetons OAuth Azure Databricks pour l’authentification OAuth U2M, suivez les étapes décrites dans cette section.

Étape 1 : Générer un vérificateur de code et un défi

Pour générer manuellement des jetons d’accès OAuth U2M, commencez par créer un vérificateur de code et un défi de code correspondant. Vous allez utiliser le défi de l’étape 2 pour obtenir un code d’autorisation et le vérificateur à l’étape 3 pour échanger ce code pour un jeton d’accès.

Remarque

Suivez la norme OAuth PKCE :

  • Le vérificateur de code est une chaîne aléatoire par chiffrement (43 à 128 caractères) à l’aide de caractères A–Z, a–z, 0–9. -._~
  • Le défi de code est un hachage SHA256 codé en URL en Base64 du vérificateur.

Pour plus d’informations, consultez Demande d’autorisation.

Le script Python suivant génère un vérificateur et un défi. Bien que vous puissiez les utiliser plusieurs fois, Azure Databricks recommande de générer une nouvelle paire chaque fois que vous générez manuellement des jetons d’accès.

import hashlib, base64, secrets, string

# Allowed characters for the code verifier, per PKCE spec
allowed_chars = string.ascii_letters + string.digits + "-._~"

# Generate a secure code verifier (43–128 characters)
code_verifier = ''.join(secrets.choice(allowed_chars) for _ in range(64))

# Create the SHA256 hash of the code verifier
sha256_hash = hashlib.sha256(code_verifier.encode()).digest()

# Base64-url-encode the hash and strip any trailing '=' padding
code_challenge = base64.urlsafe_b64encode(sha256_hash).decode().rstrip("=")

# Output values
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

Étape 2 : Générer un code d’autorisation

Pour obtenir un jeton d’accès OAuth Azure Databricks, vous devez d’abord générer un code d’autorisation OAuth. Ce code expire immédiatement après l’utilisation. Vous pouvez générer le code au niveau du compte ou de l’espace de travail :

  • Niveau du compte : Permet d’appeler les API REST au niveau du compte et au niveau de l’espace de travail sur tous les espaces de travail auxquels votre utilisateur peut accéder.
  • Niveau de l’espace de travail : Permet d’appeler des API REST au sein d’un seul espace de travail.

Remarque

Ces exemples sont utilisés databricks-cli comme ID client. Si vous n’utilisez pas d’outil Azure Databricks intégré tel que l’interface CLI ou les kits SDK, vous devez activer une application OAuth personnalisée et l’utiliser client_id dans vos demandes. Consultez Activer ou désactiver des applications OAuth de partenaires.

Générer un code d’autorisation au niveau du compte

  1. Localisez votre ID de compte.

  2. Dans votre navigateur, accédez à l’URL avec les remplacements suivants :

    • <account-id>: ID de votre compte Azure Databricks
    • <redirect-url>: URI de redirection local (par exemple, http://localhost:8020)
    • <state>: toute chaîne de texte brut pour valider la réponse
    • <code-challenge>: Défi de code de l’étape 1
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  3. Connectez-vous quand vous êtes invité à accéder à votre compte Azure Databricks.

  4. Copiez le code d’autorisation à partir de la barre d’adresse de votre navigateur. Il s’agit de la valeur après code= et avant & dans l’URL de redirection :

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Vérifiez que la valeur correspond à ce que vous avez fourni à l’origine state . Si ce n’est pas le cas, ignorez le code.

  5. Continuez à générer un jeton d’accès au niveau du compte.

Générer un code d’autorisation au niveau de l’espace de travail

  1. Dans votre navigateur, accédez à l’URL avec les remplacements suivants :

    • <databricks-instance>: Votre <databricks-instance> nom d’instance d’espace de travail Azure Databricks, par exemple adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: redirection locale (par exemple, http://localhost:8020)
    • <state>: toute valeur de texte brut pour la validation de la réponse
    • <code-challenge>: Chaîne de défi de l’étape 1
    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. Connectez-vous quand vous êtes invité à accéder à votre compte Azure Databricks.

  3. Copiez le code d’autorisation à partir de la barre d’adresse de votre navigateur. Il s’agit de la valeur après code= et avant & dans l’URL de redirection :

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Vérifiez que la valeur correspond à ce que vous avez fourni à l’origine state . Si ce n’est pas le cas, ignorez le code.

  4. Continuez à générer un jeton d’accès au niveau de l’espace de travail.

Étape 3 : Échanger le code d’autorisation d’un jeton d’accès

Pour échanger le code d’autorisation d’un jeton d’accès OAuth Azure Databricks, choisissez le niveau approprié :

  • Niveau du compte : Permet d’appeler à la fois les API REST au niveau du compte et au niveau de l’espace de travail sur tous les espaces de travail auquel votre utilisateur peut accéder.
  • Niveau de l’espace de travail : Permet d’appeler des API REST au sein d’un seul espace de travail.

Générer un jeton d’accès au niveau du compte

  1. Permet curl d’échanger le code d’autorisation au niveau du compte pour un jeton d’accès OAuth.

    Remplacez ce qui suit dans la requête :

    • <account-id>: ID de votre compte Azure Databricks
    • <redirect-url>: URL de redirection de l’étape précédente
    • <code-verifier>: vérificateur que vous avez généré précédemment
    • <authorization-code>: code d’autorisation de l’étape précédente
    curl --request POST \
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Copiez la valeur access_token de la réponse. Par exemple:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Le jeton est valide pendant une heure.

  3. Passez à l’étape 4 : appelez une API REST Azure Databricks.

Générer un jeton d’accès au niveau de l’espace de travail

  1. Permet curl d’échanger le code d’autorisation au niveau de l’espace de travail pour un jeton d’accès OAuth.

    Remplacez ce qui suit dans la requête :

    • <databricks-instance>: Votre <databricks-instance> nom d’instance d’espace de travail Azure Databricks, par exemple adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: URL de redirection de l’étape précédente
    • <code-verifier>: vérificateur que vous avez généré précédemment
    • <authorization-code>: code d’autorisation au niveau de l’espace de travail
    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Copiez la valeur access_token de la réponse. Par exemple:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Le jeton est valide pendant une heure.

Étape 4 : Appeler une API REST Azure Databricks

Utilisez le jeton d’accès pour appeler les API REST au niveau du compte ou de l’espace de travail, en fonction de son étendue. Pour appeler des API au niveau du compte, votre utilisateur Azure Databricks doit être administrateur de compte.

Exemple de demande d’API REST au niveau du compte

Cet exemple utilise curl avec l’authentification Bearer pour obtenir la liste de tous les espaces de travail associés à un compte.

  • Remplacez <oauth-access-token> par le jeton d’accès OAuth au niveau du compte.
  • Remplacez <account-id> par votre ID de compte.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces"

Exemple de demande d’API REST au niveau de l’espace de travail

Cet exemple utilise curl avec l’authentification Bearer pour lister tous les clusters disponibles dans l’espace de travail spécifié.

  • Remplacez <oauth-access-token> par le jeton d’accès OAuth au niveau du compte ou de l’espace de travail.
  • Remplacez <databricks-instance> par le nom de l’instance d’espace de travail Azure Databricks (par exemple, adb-1234567890123456.7.azuredatabricks.net).
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"