L’intégration s’appuie sur trois éléments que vous maîtrisez déjà : un service principal Databricks, la CLI Databricks installée via un blueprint d’environnement et, en option, le plugin skills Databricks. Databricks, ses workspaces et l’ensemble des autorisations restent dans votre account.
Choisir la méthode d’authentification de Devin
Commencez par l’option A si vous souhaitez que Devin fonctionne avec Databricks dès aujourd’hui. Vous pourrez passer à l’option B plus tard sans toucher au service principal ni à ses autorisations.
Pourquoi connecter Devin à Databricks ?
- Devin intervient là où se trouve votre plateforme de données. La plupart des tâches Databricks ne se limitent pas à modifier des notebooks dans un repo. Il s’agit souvent de comprendre pourquoi un job a échoué, de lire le schema d’une table, d’exécuter une query sur un entrepôt ou d’inspecter un pipeline. En donnant le CLI à Devin, ces questions qu’il fallait poser à un humain deviennent des actions que Devin peut réaliser lui-même.
- Une seule identité auditable. Devin agit en tant que service principal que vous avez créé : chaque appel d’API, query et exécution de job apparaît donc dans les audit logs de Databricks et dans la traçabilité Unity Catalog sous cette identité, et non sous le token personnel d’un ingénieur.
- Unity Catalog détermine ce à quoi Devin peut accéder. OAuth détermine si Devin peut s’authentifier. Les autorisations Unity Catalog et les autorisations du workspace déterminent ce qu’il peut lire ou modifier. Vous pouvez commencer en lecture seule en production, donner à Devin un catalog sandbox où construire, puis n’élargir le périmètre qu’une fois son comportement observé.
- Une voie vers l’absence de secret stocké. Avec la fédération de tokens OIDC (Option B), Devin ne stocke jamais de token Databricks ni de client secret. Chaque session échange un token d’identité Devin valable 60 secondes contre un token OAuth Databricks de courte durée.
Vue d’ensemble
Le plugin de skills Databricks constitue une cinquième couche, facultative : il enseigne à Devin les workflows spécifiques à Databricks (Asset Bundles, jobs, SQL, Unity Catalog), en complément de la CLI.
Prérequis
- Un compte Databricks sur AWS, Azure ou GCP avec un accès admin de compte pour la personne chargée de la configuration. La création des service principals, des secrets OAuth et des politiques de fédération s’effectue au niveau du compte.
- Un ou plusieurs workspaces avec Unity Catalog activé. Ce guide part du principe qu’Unity Catalog régit les données auxquelles Devin doit accéder.
- La CLI Databricks sur la machine de l’admin, pour les commandes au niveau du compte décrites ci-dessous. N’importe quelle version récente convient. La copie utilisée par Devin est installée séparément à l’étape 2.
- L’autorisation de modifier le blueprint d’environnement de votre organisation (Settings > Environment > Blueprints).
- Pour l’option A, l’autorisation d’ajouter des Devin Secrets.
- Pour l’option B, votre URL d’issuer OIDC Devin et votre organization ID. L’étape 2 montre comment lire ces deux valeurs depuis un token au sein d’une session Devin. Voir Cloud Authentication with OIDC pour le contexte.
- Les sessions Devin doivent pouvoir joindre l’hôte de votre workspace en HTTPS (par exemple
https://dbc-xxxx.cloud.databricks.com,https://adb-xxxx.azuredatabricks.netouhttps://xxxx.gcp.databricks.com). Si votre organisation utilise une politique réseau Devin, ajoutez-y l’hôte du workspace et, pour les commandes au niveau du compte, l’hôte du compte (accounts.cloud.databricks.com,accounts.azuredatabricks.netouaccounts.gcp.databricks.com). - Pour l’option B, Databricks doit pouvoir récupérer le JWKS de Devin à l’adresse
https://<your-devin-host>/.well-known/jwks.jsonvia l’internet public afin de vérifier les signatures des tokens.
Étape 1 : Créer un service principal
Attribuez ensuite le service principal à chaque workspace que Devin doit utiliser. Vous pouvez le faire depuis la console de compte, sous User management → Service principals, ou via la CLI :
USER, et non ADMIN. Devin n’a pas besoin des droits d’admin sur le workspace.
Étape 2 : connecter Devin au service principal
- Option A : client secret OAuth. OAuth M2M standard : le service principal reçoit un client secret, que vous stockez dans les Secrets de Devin. C’est la manière la plus rapide de démarrer.
- Option B : fédération de tokens OIDC. Chaque session Devin peut générer un token OpenID Connect de courte durée signé par Devin. La fédération de tokens Databricks permet au service principal de faire confiance à cet issuer : Devin échange ainsi son propre token d’identité contre un token OAuth Databricks. Aucun secret Databricks n’est créé ni stocké, ce qui explique pourquoi Databricks recommande vivement cette approche pour les workloads automatisés.
Option A : client secret OAuth
1. Générer un secret OAuth
sql, jobs et unity-catalog. Évitez de sélectionner tous les périmètres.
2. Ajouter les Devin Secrets
La CLI sélectionne automatiquement OAuth M2M dès qu’un client ID et un client secret sont présents :
DATABRICKS_AUTH_TYPE n’est donc pas requis. Ne le définissez sur oauth-m2m que si vous souhaitez exclure explicitement toute autre méthode.
Les secrets sont injectés sous forme de variables d’environnement au démarrage de chaque nouvelle session : la CLI n’a donc besoin d’aucun fichier de profil. Un secret renouvelé prend effet dès la prochaine session, sans rebuild.
3. Ajoutez le blueprint
initialize ; tout ce qui y est écrit se retrouve intégré au snapshot.
4. Construire le snapshot
Option B : fédération de tokens OIDC
iss, sub, aud), et une politique de fédération définie sur le service principal indique à Databricks de leur faire confiance. Le blueprint installe la CLI devin-oidc, encapsule databricks pour que chaque appel utilise un token récent, et écrit un profil qui pointe vers votre service principal. Vous lisez ensuite les claims du token depuis une session, puis vous créez une politique qui leur correspond.
1. Ajouter le blueprint
Le profil ne contient aucun secret : il peut donc être écrit sans risque pendant l’
initialize. Si vous passez de l’option A à celle-ci, supprimez le Devin Secret DATABRICKS_CLIENT_SECRET une fois la politique ci-dessous en place, afin que la CLI ne voie pas deux credentials.
2. Construire le snapshot
3. Créer la politique de fédération
1
Lire votre issuer et votre subject
Démarrez une nouvelle session Devin et demandez-lui d’exécuter la commande suivante. Elle n’affiche que les claims d’identité du token, jamais le token lui-même.Forme attendue :Sur les déploiements Enterprise,
iss correspond à votre URL Devin personnalisée (par exemple https://yourcompany.devinenterprise.com). Copiez iss et sub exactement tels qu’ils s’affichent. Ne collez pas le token brut dans des tickets ou des documents : il constitue un credential porteur valable pendant les 60 secondes qui suivent.2
Rédiger la politique de fédération
Enregistrez ce contenu sous le nom Les trois champs exigent une correspondance exacte :
devin-federation-policy.json, en y substituant les valeurs de l’étape précédente :issuerdoit être identique auissdu token, schéma inclus et sans barre oblique finale.audiencesdoit inclure l’audience demandée par Devin (databricksdans ce guide).subjectdoit être identique ausubdu token. Le subject par défaut est l’ID de votre organisation : toutes les sessions de l’organisation peuvent donc s’authentifier en tant que ce principal. C’est la granularité adaptée à Databricks, car les politiques de fédération comparent le subject comme une chaîne littérale. Les claims propres à une session, commedevin_id, changent à chaque session et ne peuvent pas être mis en correspondance par une politique statique.
subject_claim, jwks_uri et jwks_json non définis. Databricks utilise par défaut le claim sub et découvre le JWKS via le /.well-known/openid-configuration de l’issuer.3
Attacher la politique au service principal
Rebuilds et épinglage des versions
setup-devin-oidc@main suivent tous deux leurs branches main en amont : un full build récupère donc les nouvelles releases, tandis qu’un build différentiel ignore initialize et conserve les versions déjà présentes dans le snapshot tant que le blueprint n’est pas modifié. Si vous avez besoin de builds reproductibles, récupérez l’installateur depuis une balise de release plutôt que depuis main (par exemple .../databricks/setup-cli/v1.17.0/install.sh), ce qui installe précisément cette version du CLI, et épinglez l’action à un SHA de commit (setup-devin-oidc@<sha>).
Étape 3 : Accorder les autorisations
Profils d’autorisations
Les statements d’autorisation ciblent le service principal via son ID d’application :
devin-agents et accordez plutôt les autorisations à ce groupe.
Étape 4 : installer le plugin skills Databricks (facultatif)
- Ouvrez Customize → Plugins, puis choisissez Add plugin → From repository.
- Saisissez le repository
databricks/databricks-agent-skillset le sous-répertoireplugins/databricks/claude. Le manifeste du plugin se trouve dans ce sous-dossier : une installation depuis le repository root renvoie donc No plugin manifest found. - Installez au périmètre Organization si vous avez utilisé un blueprint d’organisation à l’étape 2. Si vous avez utilisé un repository blueprint, déclarez plutôt le plugin dans le fichier
.devin/config.jsonde ce repository (voir héritage et niveaux) : ainsi, seules les sessions disposant de la CLI obtiendront aussi les skills. - Épinglez le plugin à un commit une fois qu’il fonctionne, afin que les modifications en amont n’arrivent pas dans vos sessions sans avoir été relues.
databricks auth login pour configurer un profil. Ce flux interactif dans le navigateur ne peut pas aboutir dans une session Devin sans supervision, et il est inutile ici : l’entrée knowledge de l’étape 2 indique à Devin que la CLI est déjà authentifiée.
Étape 5 : Vérifier
current-user me doit renvoyer le service principal, avec userName égal à son ID d’application. Pour vérifier quelle méthode d’authentification la CLI a retenue :
oauth-m2m ; pour l’option B, env-oidc.
Une authentification réussie ne signifie pas pour autant que Devin peut accéder à vos données. Vérifiez que les autorisations accordées à l’étape 3 s’appliquent bien :
<catalog-name> par un catalogue auquel vous avez donné accès à l’étape 3 (les exemples utilisent analytics). Demandez ensuite à Devin d’exécuter une petite requête en lecture seule sur un entrepôt sur lequel il dispose du droit CAN USE et, si vous avez configuré un profil Build, de créer puis de supprimer une table dans devin_dev. Une requête sur une table de production pour laquelle Devin ne dispose pas du droit SELECT doit échouer : cet échec montre que la limite d’autorisations fonctionne.

