Skip to main content
Devin peut travailler au sein de vos workspaces Databricks comme un collègue asynchrone : explorer des catalogues, déboguer des jobs en échec, optimiser du SQL, écrire et tester des notebooks et livrer des modifications via votre workflow Git habituel. Ce guide vous accompagne dans cette mise en place, avec un service principal Databricks dédié auprès duquel Devin s’authentifie, régi par Unity Catalog.
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

Devin s’authentifie auprès de Databricks en tant que service principal de deux manières possibles. Les deux reposent sur le même service principal, la même CLI installée par le blueprint et les mêmes autorisations Unity Catalog ; seul le credential change. 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

La configuration comporte quatre volets : 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

Databricks
  • 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.
Devin
  • 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.
Réseau
  • 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.net ou https://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.net ou accounts.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.json via l’internet public afin de vérifier les signatures des tokens.

Étape 1 : Créer un service principal

Créez un service principal dédié à Devin plutôt que d’en réutiliser un dont dépendent d’autres automatisations. Un principal dédié permet de garder des audit logs et des revues d’autorisations clairs. Depuis une machine sur laquelle vous êtes connecté au account Databricks (et non à un workspace) :
Notez deux valeurs de la sortie : 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 :
Utilisez USER, et non ADMIN. Devin n’a pas besoin des droits d’admin sur le workspace.

Étape 2 : connecter Devin au service principal

Suivez l’une des deux options ci-dessous. Chacune se suffit à elle-même : elle installe la CLI Databricks via un blueprint dans Settings > Environment > Blueprints et configure la CLI pour qu’elle s’authentifie en tant que service principal créé à l’étape 1.
  • 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.
Les jetons d’accès personnels (PAT) liés à un utilisateur humain ne sont recommandés pour aucune des deux options. Ils contournent le service principal, expirent de manière imprévisible et attribuent les actions de Devin à une personne.

Option A : client secret OAuth

Vous préférez ne gérer aucun secret Databricks ? Passez directement à l’Option B : fédération de tokens OIDC. Vous pouvez aussi commencer ici et basculer plus tard : remplacez le blueprint par celui de l’option B, créez la politique de fédération, puis supprimez le secret OAuth ainsi que le Devin Secret DATABRICKS_CLIENT_SECRET.

1. Générer un secret OAuth

Dans la console du compte, ouvrez le service principal de l’étape 1 et générez un secret OAuth. Définissez la durée de vie la plus courte que votre processus de rotation permet (le maximum est de 730 jours) et limitez le secret aux périmètres d’API dont Devin a besoin, tels que sql, jobs et unity-catalog. Évitez de sélectionner tous les périmètres.

2. Ajouter les Devin Secrets

Dans Devin, ajoutez les éléments suivants en tant que Devin Secrets dans l’onglet Secrets du blueprint que vous modifierez ensuite (organisation ou repository) : 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

Installe uniquement la CLI. L’authentification repose entièrement sur les trois secrets ci-dessus.
N’écrivez pas les secrets dans un fichier lors de l’étape initialize ; tout ce qui y est écrit se retrouve intégré au snapshot.
Ne définissez pas non plus DATABRICKS_TOKEN et ne laissez pas de profil ~/.databrickscfg dans le snapshot. Des credentials en conflit sont la cause la plus fréquente d’échec de l’authentification M2M.

4. Construire le snapshot

Enregistrez le blueprint et attendez que le build affiche Success, puis démarrez une nouvelle session. Les sessions existantes conservent l’ancien snapshot. Passez à l’étape 3.

Option B : fédération de tokens OIDC

Les sessions Devin génèrent des tokens d’identité de courte durée (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.
Vous préférez emprunter le chemin le plus court ? Commencez par l’option A et revenez ici lorsque vous serez prêt à vous passer du secret stocké.

1. Ajouter le blueprint

Deux espaces réservés dans le profil doivent être remplacés par vos propres valeurs :
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

Enregistrez le blueprint et attendez que le build affiche Success. Aucun élément du blueprint ne dépend de la politique de fédération que vous allez créer ensuite : vous n’aurez donc pas besoin de relancer le build par la suite.

3. Créer la politique de fédération

Une fois le blueprint construit, les sessions Devin peuvent émettre des tokens d’identité. Utilisez-en un pour lire les claims exacts auxquels Databricks doit faire confiance, puis créez sur le service principal une politique de fédération qui leur correspond.
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 devin-federation-policy.json, en y substituant les valeurs de l’étape précédente :
Les trois champs exigent une correspondance exacte :
  • issuer doit être identique au iss du token, schéma inclus et sans barre oblique finale.
  • audiences doit inclure l’audience demandée par Devin (databricks dans ce guide).
  • subject doit être identique au sub du 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, comme devin_id, changent à chaque session et ne peuvent pas être mis en correspondance par une politique statique.
Laissez 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

Vérifiez son existence :
Le profil écrit par le blueprint pointe déjà vers ce service principal : aucun rebuild n’est donc nécessaire. Passez à l’étape 3.

Rebuilds et épinglage des versions

Le script d’installation Databricks et 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

L’authentification ne fait qu’établir l’identité de Devin. Ce que Devin peut consulter ou modifier dépend des autorisations du workspace et des autorisations Unity Catalog, que vous pouvez ajuster à tout moment sans toucher au blueprint. Commencez par le profil le plus restreint adapté au travail à réaliser, puis élargissez-le de manière réfléchie.

Profils d’autorisations

Les statements d’autorisation ciblent le service principal via son ID d’application :
Si vous préférez une administration par groupes, ajoutez le service principal à un groupe tel que devin-agents et accordez plutôt les autorisations à ce groupe.
Les modifications de code doivent toujours passer par des pull requests. Devin peut lire les données de production pour comprendre un problème et valider un correctif dans le sandbox, mais la modification du notebook, de la définition de job ou de l’Asset Bundle doit être intégrée via votre processus de review habituel, et non en modifiant directement la production.

Étape 4 : installer le plugin skills Databricks (facultatif)

Databricks publie des Agent Skills qui enseignent aux coding agents les workflows Databricks : Asset Bundles, jobs, SQL, Unity Catalog et Spark. Les installer en tant que plugin Devin apporte à Devin ce savoir-faire, en complément de la CLI.
  1. Ouvrez Customize → Plugins, puis choisissez Add plugin → From repository.
  2. Saisissez le repository databricks/databricks-agent-skills et le sous-répertoire plugins/databricks/claude. Le manifeste du plugin se trouve dans ce sous-dossier : une installation depuis le repository root renvoie donc No plugin manifest found.
  3. 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.json de ce repository (voir héritage et niveaux) : ainsi, seules les sessions disposant de la CLI obtiendront aussi les skills.
  4. É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.
La skill principale du plugin recommande d’exécuter 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

Démarrez une nouvelle session (une fois le build du blueprint réussi) et demandez à Devin d’exécuter :
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 :
Pour l’option A, cela renvoie 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 :
Remplacez <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.

Dépannage

Support

Pour la configuration côté Databricks (service principals, secrets OAuth, politiques de fédération, Unity Catalog), consultez la documentation d’authentification Databricks (passez à l’édition Azure ou GCP selon vos besoins). Pour la configuration côté Devin (blueprints, OIDC, plugins, politique réseau), contactez support@cognition.ai ou votre équipe de compte.