Autoriser l'accès des utilisateurs à Databricks avec OAuth
Cette page explique comment autoriser l'accès des utilisateurs aux Ressources Databricks lors de l'utilisation de la CLI Databricks ou des APIs REST Databricks.
Databricks utilise OAuth 2.0 comme protocole préféré pour l'autorisation et l'authentification des utilisateurs en dehors de l'interface utilisateur. L'authentification client unifiée automatise la génération et le refresh des jetons. Une fois qu'un utilisateur se connecte et accorde son consentement, OAuth délivre un jeton d'accès pour que la CLI, le SDK ou un autre outil puisse l'utiliser au nom de l'utilisateur. Chaque jeton d'accès est valable une heure, après quoi un nouveau jeton est automatiquement demandé.
Sur cette page, **l'autorisation** fait référence à l'utilisation d'OAuth pour accorder l'accès aux ressources Databricks, tandis que **l'authentification** fait référence à la validation des informations d'identification via des jetons d'accès.
Pour plus de détails de haut niveau, consultez Autoriser l'accès aux ressources Databricks.
Moyens d'autoriser l'accès aux ressources Databricks
Databricks prend en charge deux façons d'autoriser les comptes d'utilisateur avec OAuth :
-
**Automatique (recommandé) :** Utilisez l'authentification unifiée si vous travaillez avec des outils et des SDK pris en charge, tels que le SDK Databricks Terraform. Cette approche gère automatiquement la génération et le refresh des jetons.
-
Manuel : Générez un vérificateur de code et un défi, puis échangez-les contre un jeton OAuth. Utilisez cette méthode si votre outil ne prend pas en charge l'authentification unifiée. Pour plus de détails, consultez Générer manuellement des jetons d'accès OAuth U2M.
Autorisation automatique avec authentification unifiée
Avant de configurer l'autorisation, examinez les autorisations d'ACL pour le type d'Opérations de workspace que vous prévoyez d'effectuer et confirmez que votre compte dispose du niveau d'accès requis. Pour plus de détails, consultez les listes de contrôle d'accès.
Pour effectuer l'autorisation OAuth avec les SDK et les outils Databricks qui prennent en charge l'authentification unifiée, intégrez les éléments suivants dans votre code :
- Environment
- Profile
- CLI
- VS Code
- Connect
- Terraform
- Python
- Java
- Go
Pour utiliser des variables d'environnement pour un type d'authentification Databricks spécifique avec un outil ou un SDK, consultez Autoriser l'accès aux ressources Databricks ou la documentation de l'outil ou du SDK. Voir aussi 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 Databricks,https://accounts.cloud.databricks.com.DATABRICKS_ACCOUNT_ID
Pour les opérations au niveau du workspace, définissez les variables d'environnement suivantes :
DATABRICKS_HOST, défini sur la valeur de l'URL de votre Workspace Databricks, par exemplehttps://dbc-a1b2345c-d6e7.cloud.databricks.com.
Créez ou identifiez un profil de configuration 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 SDK, consultez Autoriser l'accès aux ressources Databricks ou la documentation de l'outil ou du SDK. Voir aussi Variables d’environnement et champs 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 Databricks est https://accounts.cloud.databricks.com:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
Pour les opérations au niveau du Workspace, définissez les valeurs suivantes dans votre fichier .databrickscfg. Dans ce cas, l'hôte est l'URL du workspace Databricks, par exemple https://dbc-a1b2345c-d6e7.cloud.databricks.com:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
Pour le CLI Databricks, exécutez la commande databricks auth login avec les options suivantes :
- Pour les Opérations au niveau du compte,
--host https://accounts.cloud.databricks.com --account-id <account-id>. - Pour les opérations au niveau du Workspace,
--host <workspace-url>.
Suivez ensuite les instructions dans votre navigateur web pour vous connecter à votre compte Databricks ou à votre Workspace.
Pour plus de détails, consultez l'autorisation OAuth avec la CLI Databricks.
Pour l'extension Databricks pour Visual Studio Code, suivez les étapes de Configurer l'autorisation pour l'extension Databricks pour Visual Studio Code.
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 :
- Utiliser un profil de configuration : Définissez les valeurs au niveau du Workspace dans votre fichier
.databrickscfgcomme décrit dans l'onglet tab . Définissez également lacluster_idsur l'URL de votre instance de workspace. - Utiliser les variables d'environnement : Définissez les mêmes valeurs que celles affichées dans l'onglet tab . Définissez également le
DATABRICKS_CLUSTER_IDsur l'URL de l'instance de votre Workspace.
Les valeurs dans .databrickscfg ont priorité sur les variables d'environnement.
Pour initialiser Databricks Connect avec ces paramètres, consultez Configuration du compute pour Databricks Connect.
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 les opérations de Workspace ou du compte. Ces commandes génèrent et mettent en cache le jeton OAuth requis à .databricks/token-cache.json dans le dossier personnel de votre utilisateur.
Opérations au niveau du compte
Pour l'authentification default :
provider "databricks" {
alias = "account"
}
Pour la 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 pour récupérer les valeurs de la console ou d'un autre magasin de configuration, tel que HashiCorp Vault. Voir aussi Fournisseur de Vault. Dans cet exemple, vous pouvez définir account_id sur l'URL de la console de compte Databricks.
Opérations au niveau du workspace
Pour l'authentification default :
provider "databricks" {
alias = "workspace"
}
Pour la configuration directe :
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
}
Avant d’exécuter votre code, vous devez exécuter la databricks auth login commande sur la tab **CLI** avec les options d’opérations de workspace ou de compte. Ces commandes génèrent et mettent en cache le jeton OAuth requis à .databricks/token-cache.json dans le dossier personnel de votre utilisateur.
Opérations au niveau du compte
Pour l'authentification default :
from databricks.sdk import AccountClient
a = AccountClient()
# ...
Pour la configuration directe :
from databricks.sdk import AccountClient
a = AccountClient(
host = retrieveAccountConsoleUrl(),
account_id = retrieveAccountId()
)
# ...
Remplacez les placeholders retrieve par votre propre implémentation pour récupérer les valeurs de la console ou d'un autre magasin de configuration, tel que AWS Systems Manager Parameter Store.
Opérations au niveau du workspace
Pour l'authentification default :
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
Pour la configuration directe :
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(host = retrieve_workspace_url())
# ...
Pour plus d'informations sur l'authentification avec les outils et SDK Databricks qui utilisent Python et qui implémentent l'authentification unifiée Databricks, consultez :
Avant d’exécuter votre code, vous devez exécuter la databricks auth login commande sur la tab **CLI** avec les options d’opérations de workspace ou de compte. Ces commandes génèrent et mettent en cache le jeton OAuth requis à .databricks/token-cache.json dans le dossier personnel de votre utilisateur.
Opérations au niveau du compte
Pour l'authentification default :
import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...
Pour la 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 placeholders retrieve par votre propre implémentation pour récupérer les valeurs de la console ou d'un autre magasin de configuration, tel que AWS Systems Manager Parameter Store.
Opérations au niveau du workspace
Pour l'authentification default :
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
Pour la 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 Databricks qui utilisent Java et qui implémentent l'authentification unifiée Databricks, voir :
- Configurez le client Databricks Connect pour Scala (utilise le SDK Databricks pour Java pour l’authentification)
- Authentifiez le SDK Databricks pour Java avec votre compte Databricks ou Workspace
Avant d’exécuter votre code, vous devez exécuter la databricks auth login commande sur la tab **CLI** avec les options d’opérations de workspace ou de compte. Ces commandes génèrent et mettent en cache le jeton OAuth requis à .databricks/token-cache.json dans le dossier personnel de votre utilisateur.
Opérations au niveau du compte
Pour l'authentification default :
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
Pour la configuration directe :
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
}))
// ...
Remplacez les placeholders retrieve par votre propre implémentation pour récupérer les valeurs de la console ou d'un autre magasin de configuration, tel que AWS Systems Manager Parameter Store.
Opérations au niveau du workspace
Pour l'authentification default :
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
Pour la configuration directe :
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
}))
// ...
Pour plus d'information sur l'authentification avec les outils Databricks et les SDK qui utilisent Go et qui implémentent l' authentification unifiée client Databricks, consultez Authentifier le SDK Databricks pour Go avec votre compte ou Workspace Databricks.
Générer manuellement des jetons d'accès OAuth U2M
Cette section est destinée aux utilisateurs qui travaillent avec des outils ou services tiers qui ne prennent pas en charge le standard d'authentification unifiée Databricks. Si vous devez générer, refresh ou utiliser manuellement les jetons OAuth Databricks pour l'authentification OAuth U2M, suivez les étapes de cette section.
Étape 1 : Générez un vérificateur de code et un défi.
Pour générer manuellement des jetons d'accès OAuth U2M, start par créer un code verifier et un code challenge correspondant. Vous utiliserez le challenge à l’étape 2 pour obtenir un code d’autorisation, et le vérificateur à l’étape 3 pour échanger ce code contre un jeton d'accès.
Suivez la norme OAuth PKCE:
- Le vérificateur de code est une chaîne aléatoire cryptographique (de 43 à 128 caractères) utilisant les caractères
A–Z,a–z,0–9,-._~. - Le défi de code est un hachage SHA256 encodé en URL Base64 du vérificateur.
Pour plus d’informations, voir Authorization Request.
Le script Python suivant génère un vérificateur et un défi. Bien que vous puissiez les utiliser plusieurs fois, 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 Databricks, vous devez d'abord générer un code d'autorisation OAuth. Ce code expire immédiatement après utilisation. Vous pouvez générer le code soit au niveau du compte, soit au niveau du Workspace.
- Niveau du compte : Utilisez pour appeler les API REST au niveau du compte et au niveau du Workspace sur tous les Workspaces auxquels votre utilisateur peut accéder.
- Niveau Workspace : utilisez-le pour appeler des APIs REST au sein d'un seul Workspace.
Ces exemples utilisent databricks-cli comme ID client. Si vous n'utilisez pas d'outil Databricks intégré tel que la CLI ou les SDK, vous devez activer une application OAuth personnalisée et utiliser son client_id dans vos requêtes. Voir Activer ou désactiver les applications OAuth partenaires.
Générer un code d'autorisation au niveau du compte
-
Dans votre navigateur, accédez à l'URL avec les remplacements suivants :
<account-id>: Votre ID de compte Databricks<redirect-url>: Un URI de redirection local (par exemple,http://localhost:8020)<state>: toute chaîne de texte brut pour valider la réponse<code-challenge>: Le défi de code de l'Étape 1
https://accounts.cloud.databricks.com/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 -
Connectez-vous lorsque vous y êtes invité pour accéder à votre compte Databricks.
-
Après vous être connecté, le navigateur accède à votre URL de redirection . Si rien n’écoute sur cet hôte et ce port (par exemple,
http://localhost:8020), la page affiche une erreur de connexion, ce qui est normal. Copiez le code d'autorisation de la barre d'adresse . Il s'agit de la sous-chaîne aprèscode=et avant le prochain&dans la chaîne de query.http://localhost:8020/?code=dcod...7fe6&state=<state>Vérifiez que la valeur
statecorrespond à ce que vous avez fourni à l’origine. Si ce n’est pas le cas, annulez le code. -
Continuez vers Générer un jeton d’accès au niveau du compte.
Générer un code d'autorisation au niveau du Workspace
-
Dans votre navigateur, accédez à l'URL avec les remplacements suivants :
<databricks-instance>: votre<databricks-instance>avec le nom de l'instance de Workspace Databricks, par exempledbc-a1b2345c-d6e7.cloud.databricks.com<redirect-url>: une redirection locale (par exemple,http://localhost:8020)<state>: toute valeur en texte brut pour la validation de la réponse<code-challenge>: la 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 -
Connectez-vous lorsque vous y êtes invité pour accéder à votre compte Databricks.
-
Après vous être connecté, le navigateur accède à votre URL de redirection . Si rien n’écoute sur cet hôte et ce port (par exemple,
http://localhost:8020), la page affiche une erreur de connexion, ce qui est normal. Copiez le code d'autorisation de la barre d'adresse . C'est la sous-chaîne aprèscode=et avant le&suivant dans la chaîne de query.http://localhost:8020/?code=dcod...7fe6&state=<state>Vérifiez que la valeur
statecorrespond à ce que vous avez fourni à l’origine. Si ce n’est pas le cas, annulez le code. -
Poursuivez vers Générer un jeton d'accès au Workspace.
Pour générer un jeton restreint à un rôle, ajoutez &assume_group=<group-id> à l'URL d'autorisation, où <group-id> est l'ID du groupe de support du rôle. Le jeton résultant autorise toutes les opérations au titre du rôle. Voir API (échange de jetons OAuth).
Étape 3 : Échangez le code d'autorisation contre un jeton d'accès
Pour échanger le code d'autorisation contre un jeton d'accès Databricks OAuth, choisissez le niveau approprié :
- Niveau du compte : Utilisez pour appeler les API REST au niveau du compte et de l’espace de travail, pour tous les Workspace auxquels votre utilisateur peut accéder.
- Niveau Workspace : utilisez-le pour appeler des APIs REST au sein d'un seul Workspace.
Générer un jeton d'accès au niveau du compte
-
Utilisez
curlpour échanger le code d'autorisation au niveau du compte contre un jeton d'accès OAuth.Remplacez les éléments suivants dans la requête :
<account-id>: Votre ID de compte Databricks<redirect-url>: L’URL de redirection de l’étape précédente<code-verifier>: le vérificateur que vous avez généré précédemment<authorization-code>: Le code d'autorisation de l'étape précédente
Bashcurl --request POST \
https://accounts.cloud.databricks.com/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>" -
Copiez la valeur
access_tokende la réponse. Par exemple :JSON{
"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.
-
Passez à Étape 4: Appel d'une API REST Databricks.
Générez un jeton d'accès au niveau du Workspace
-
Utilisez
curlpour échanger le code d'autorisation au niveau du workspace contre un jeton d'accès OAuth.Remplacez les éléments suivants dans la requête :
<databricks-instance>: votre<databricks-instance>avec le nom de l'instance de Workspace Databricks, par exempledbc-a1b2345c-d6e7.cloud.databricks.com<redirect-url>: L’URL de redirection de l’étape précédente<code-verifier>: le vérificateur que vous avez généré précédemment<authorization-code>: le code d'autorisation au niveau du workspace
Bashcurl --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>" -
Copiez la valeur
access_tokende la réponse. Par exemple :JSON{
"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 : Appelez une API REST Databricks
Utilisez le jeton d’accès pour appeler les API REST au niveau du compte ou du Workspace, selon sa portée. Pour appeler les APIs au niveau du compte, votre utilisateur Databricks doit être un administrateur de compte.
Exemple de requête API REST au niveau du compte
Cet exemple utilise curl ainsi que l'authentification Bearer pour obtenir une liste de tous les Workspaces 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.cloud.databricks.com/api/2.0/accounts/<account-id>/workspaces"
Exemple de requête d'API REST au niveau Workspace
Cet exemple utilise curl avec l'authentification Bearer pour lister tous les clusters disponibles dans le Workspace spécifié.
- Remplacez
<oauth-access-token>par le jeton d'accès OAuth au niveau du compte ou du workspace. - Remplacez
<databricks-instance>par le nom de l'instance de workspace Databricks, par exempledbc-a1b2345c-d6e7.cloud.databricks.com.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"
S'authentifier en tant que Service Principal à l'aide d'OAuth U2M
Bêta
Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.
Utilisez le flux OAuth U2M standard pour obtenir un jeton au nom d'un Service Principal Databricks et accédez aux APIs Databricks en utilisant l'identité du Service Principal au lieu de votre propre compte d'utilisateur.
Vous devez disposer du rôle de Gestionnaire de Service Principal sur le Service Principal pour lequel vous souhaitez vous authentifier. Si vous avez créé le Service Principal, vous disposez automatiquement de ce rôle. Consultez Rôles pour la gestion des Service Principals.
-
Lancez le flux U2M standard. L’exemple suivant utilise la CLI Databricks :
databricks auth login --host <workspace-url> -
Une fenêtre de navigateur s'ouvre pour l'autorisation. Dans le menu déroulant, sélectionnez le Service Principal pour vous authentifier, puis autorisez l'application.
-
Le jeton OAuth est émis avec l’identité du Service Principal. La revendication
subdans le jeton correspond au service principal sélectionné. Pour afficher le jeton, exécutez :databricks auth token --host <workspace-url>
Ce flux fonctionne avec toute application prenant en charge l'authentification U2M standard. Pour connaître les étapes complètes, consultez Autorisation automatique avec authentification unifiée ou Générer manuellement des jetons d'accès OAuth U2M.
Gérez votre consentement OAuth
Pendant le flux d'autorisation OAuth U2M, votre navigateur peut afficher un écran de consentement vous demandant d'approuver les champs d'application demandés par une application. Vous pouvez consulter ou révoquer le consentement déjà accordé.
Pour afficher ou révoquer le consentement, vous avez besoin de l'ID d'intégration de l'application. Si l'application est une application Databricks, obtenez l'ID du champ oauth2_app_client_id en appelant l'API REST Get an app. Pour configurer les étendues pour les Databricks Apps, consultez Ajouter des étendues à une application. Pour les autres applications, contactez votre administrateur de compte.
Pour consulter les champs d'application approuvés pour une application :
curl --request GET \
--header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/oauth-app-integrations/<app-integration-id>/user-consent/me"
Pour révoquer le consentement que vous avez accordé à une application :
curl --request DELETE \
--header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/oauth-app-integrations/<app-integration-id>/user-consent/me"
La révocation du consentement n'invalide pas les jetons existants. L'application peut toujours utiliser les jetons refresh existants pour obtenir de nouveaux jetons d'accès jusqu'à ce que ces jetons expirent. Après expiration, l'application ne peut pas initier un nouveau flux d'autorisation pour obtenir de nouveaux jetons.
Remplacer ce qui suit :
<databricks-instance>: votre<databricks-instance>avec le nom de l'instance de Workspace Databricks, par exempledbc-a1b2345c-d6e7.cloud.databricks.com<app-integration-id>: l'identifiant d'intégration d'application