L’integrazione si basa su tre elementi che già controlli: un service principal Databricks, la CLI di Databricks installata tramite un blueprint di ambiente e (facoltativamente) il plugin delle skill Databricks. Databricks, i suoi workspace e ogni autorizzazione restano nel tuo account.
Scegli la modalità di autenticazione di Devin
Parti dall’Opzione A se vuoi far funzionare Devin con Databricks fin da subito. Potrai passare all’Opzione B in seguito senza toccare il service principal né le sue concessioni.
Perché collegare Devin a Databricks?
- Devin lavora dove risiede la tua piattaforma dati. La maggior parte del lavoro su Databricks non si limita a modificare notebook in un repo. Significa verificare perché un job è fallito, leggere lo schema di una tabella, eseguire una query su un warehouse o ispezionare una pipeline. Dare a Devin la CLI trasforma tutto questo da domande da rivolgere a una persona ad attività che Devin può svolgere da solo.
- Un’unica identità tracciabile. Devin agisce come un service principal creato da te, quindi ogni API call, query e run di job compare nei log di audit di Databricks e nella lineage di Unity Catalog sotto quell’identità, e non sotto il token personale di un ingegnere.
- È Unity Catalog a decidere cosa Devin può toccare. OAuth decide se Devin può autenticarsi. Sono le concessioni di Unity Catalog e le autorizzazioni del workspace a stabilire cosa può leggere o modificare. Puoi partire in sola lettura in produzione, assegnare a Devin un catalog sandbox in cui lavorare e ampliare l’ambito solo dopo averne osservato il comportamento.
- Una strada senza secret memorizzati. Con la federazione dei token OIDC (Opzione B), Devin non memorizza mai un token Databricks né un client secret. Ogni sessione scambia un token di identità Devin valido 60 secondi con un OAuth token Databricks di breve durata.
Panoramica
Il plugin di skill Databricks è un quinto layer, opzionale: insegna a Devin i flussi di lavoro specifici di Databricks (Asset Bundle, job, SQL, Unity Catalog) basandosi sulla CLI.
Prerequisiti
- Un account Databricks su AWS, Azure o GCP con accesso account admin per la persona che esegue il setup. La creazione di service principal, segreti OAuth e policy di federazione avviene a livello di account.
- Uno o più workspace con Unity Catalog abilitato. Questa guida presuppone che Unity Catalog governi i dati a cui Devin deve accedere.
- La Databricks CLI sulla macchina dell’admin per i comandi a livello di account riportati di seguito. Per questi va bene qualsiasi versione recente. La copia di Devin viene installata separatamente nel passaggio 2.
- Autorizzazione a modificare il blueprint dell’ambiente della tua organizzazione (Settings > Environment > Blueprints).
- Per l’Opzione A, autorizzazione ad aggiungere Devin Secrets.
- Per l’Opzione B, l’URL dell’issuer OIDC di Devin e l’ID dell’organizzazione. Il passaggio 2 mostra come ricavarli entrambi da un token all’interno di una sessione Devin. Per approfondire, vedi Cloud Authentication with OIDC.
- Le sessioni Devin devono poter raggiungere l’host del tuo workspace via HTTPS (per esempio
https://dbc-xxxx.cloud.databricks.com,https://adb-xxxx.azuredatabricks.netohttps://xxxx.gcp.databricks.com). Se la tua organizzazione utilizza una network policy di Devin, aggiungi l’host del workspace e, per i comandi a livello di account, l’host dell’account (accounts.cloud.databricks.com,accounts.azuredatabricks.netoaccounts.gcp.databricks.com). - Per l’Opzione B, Databricks deve poter recuperare il JWKS di Devin all’indirizzo
https://<your-devin-host>/.well-known/jwks.jsontramite internet pubblico per verificare le firme dei token.
Passaggio 1: creare un service principal
Assegna poi il service principal a ogni workspace che Devin deve utilizzare. Puoi farlo dalla console dell’account, in User management → Service principals, oppure tramite la CLI:
USER, non ADMIN. Devin non ha bisogno dei permessi di admin del workspace.
Passaggio 2: collegare Devin al service principal
- Opzione A: client secret OAuth. OAuth M2M standard: al service principal viene assegnato un client secret, che memorizzi in Devin Secrets. È il modo più rapido per iniziare.
- Opzione B: federazione dei token OIDC. Ogni sessione Devin può generare un token OpenID Connect di breve durata firmato da Devin. La federazione dei token di Databricks consente al service principal di considerare attendibile quell’issuer, così Devin scambia il proprio token di identità con un token OAuth di Databricks. Nessun segreto di Databricks viene mai creato o memorizzato: è per questo che Databricks la consiglia vivamente per i workload automatizzati.
Opzione A: client secret OAuth
1. Genera un OAuth secret
sql, jobs e unity-catalog. Evita di selezionare tutti gli ambiti.
2. Aggiungi i Devin Secrets
La CLI seleziona automaticamente OAuth M2M quando sono presenti un client ID e un client secret, quindi
DATABRICKS_AUTH_TYPE non è necessario. Impostalo su oauth-m2m solo se vuoi escludere esplicitamente ogni altro metodo.
I segreti vengono iniettati come variabili d’ambiente all’avvio di ogni nuova sessione, quindi la CLI non necessita di alcun file di profile. Un segreto ruotato ha effetto dalla sessione successiva, senza bisogno di un rebuild.
3. Aggiungi il blueprint
initialize; tutto ciò che viene scritto lì finisce incorporato nello snapshot.
4. Esegui il build dello snapshot
Opzione B: federazione dei token OIDC
iss, sub, aud) e una policy di federazione sul service principal indica a Databricks di considerarli attendibili. Il blueprint installa la CLI devin-oidc, incapsula databricks in modo che ogni chiamata includa un token aggiornato e scrive un profilo che punta al tuo service principal. A quel punto puoi leggere i claim del token da una sessione e creare una policy che li rispecchi.
1. Aggiungi il blueprint
Il profile non contiene alcun secret, quindi può essere scritto senza rischi durante l’
initialize. Se stai passando dall’Opzione A, rimuovi il Devin Secret DATABRICKS_CLIENT_SECRET una volta attiva la policy descritta qui sotto, così la CLI non rileva due credenziali.
2. Crea lo snapshot
3. Creare la policy di federazione
1
Leggere issuer e subject
Avvia una nuova sessione Devin e chiedile di eseguire il comando seguente. Stampa solo i claim di identità del token, mai il token stesso.Struttura prevista:Nelle distribuzioni enterprise,
iss corrisponde al tuo URL Devin personalizzato (ad esempio https://yourcompany.devinenterprise.com). Copia iss e sub esattamente come vengono stampati. Non incollare il token grezzo in ticket o documenti: è una credenziale bearer valida per i successivi 60 secondi.2
Scrivere la policy di federazione
Salva quanto segue come Tutti e tre i campi richiedono una corrispondenza esatta:
devin-federation-policy.json, sostituendo i valori ottenuti al passaggio precedente:issuerdeve essere uguale al claimissdel token, schema incluso e senza barra finale.audiencesdeve includere l’audience richiesta da Devin (databricksin questa guida).subjectdeve essere uguale al claimsubdel token. Il subject predefinito è l’ID della tua organizzazione, quindi ogni sessione dell’organizzazione può autenticarsi come questo principal. È la granularità corretta per Databricks, perché le policy di federazione confrontano il subject come stringa letterale. I claim specifici della singola sessione, comedevin_id, cambiano a ogni sessione e non possono essere abbinati da una policy statica.
subject_claim, jwks_uri e jwks_json non impostati. Databricks usa per impostazione predefinita il claim sub e individua il JWKS tramite l’endpoint /.well-known/openid-configuration dell’issuer.3
Collegare la policy al service principal
Rebuild e blocco delle versioni
setup-devin-oidc@main seguono i rispettivi branch main upstream, quindi una build completa include le nuove release; una build differenziale salta initialize e mantiene le versioni già presenti nello snapshot finché il blueprint non cambia. Se ti servono build riproducibili, scarica l’installer da un tag di release anziché da main (per esempio .../databricks/setup-cli/v1.17.0/install.sh), così da installare esattamente quella versione della CLI, e blocca l’action su uno SHA di commit (setup-devin-oidc@<sha>).
Passaggio 3: concedere le autorizzazioni
Profili di autorizzazione
Le istruzioni di concessione fanno riferimento al service principal tramite il suo ID applicazione:
devin-agents e concedi i permessi al gruppo anziché al singolo principal.
Passaggio 4: installare il plugin delle skill di Databricks (opzionale)
- Apri Customize → Plugins e scegli Add plugin → From repository.
- Inserisci il repository
databricks/databricks-agent-skillse la sottodirectoryplugins/databricks/claude. Il manifest del plugin si trova in quella sottocartella, quindi l’installazione dalla repository root restituisce No plugin manifest found. - Installa nell’ambito Organization se al Passaggio 2 hai usato un blueprint di organizzazione. Se invece hai usato un blueprint del repository, dichiara il plugin nel file
.devin/config.jsondi quel repository (vedi ereditarietà e livelli): in questo modo solo le sessioni che dispongono della CLI otterranno anche le skill. - Blocca il plugin su un commit una volta verificato che funziona, così le modifiche upstream non finiranno nelle tue sessioni senza essere state esaminate.
databricks auth login per configurare un profile. Quel flusso interattivo via browser non può essere completato in una sessione Devin non presidiata e qui non è necessario: la voce knowledge del Passaggio 2 indica a Devin che la CLI è già autenticata.
Passaggio 5: verifica
current-user me dovrebbe restituire il service principal, con userName uguale al suo ID applicazione. Per verificare quale metodo di authentication ha scelto la CLI:
oauth-m2m; per l’opzione B, env-oidc.
Un’authentication riuscita non significa che Devin possa accedere ai tuoi dati. Verifica che le concessioni del passaggio 3 siano attive:
<catalog-name> con un catalog concesso al Passaggio 3 (negli esempi viene usato analytics). Poi chiedi a Devin di eseguire una piccola query in sola lettura su un warehouse su cui dispone di CAN USE e, se hai configurato un profilo Build, di creare ed eliminare una tabella in devin_dev. Una query su una tabella di produzione su cui Devin non ha SELECT dovrebbe fallire: proprio quel fallimento dimostra che il confine delle autorizzazioni funziona.

