Skip to main content
Devin può operare all’interno dei tuoi workspace Databricks come collega asincrono: esplora i cataloghi, esegue il debugging dei job falliti, ottimizza le query SQL, scrive e testa notebook e rilascia modifiche attraverso il tuo normale flusso di lavoro Git. Questa guida spiega come predisporre il tutto con un service principal Databricks dedicato con cui Devin si autentica, governato da Unity Catalog.
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

Devin si autentica su Databricks come service principal in due modi possibili. Entrambi usano lo stesso service principal, la CLI installata dal blueprint e le concessioni di Unity Catalog; l’unica differenza sta nella credenziale. 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

La configurazione si compone di quattro parti: 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

Databricks
  • 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.
Devin
  • 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.
Rete
  • 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.net o https://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.net o accounts.gcp.databricks.com).
  • Per l’Opzione B, Databricks deve poter recuperare il JWKS di Devin all’indirizzo https://<your-devin-host>/.well-known/jwks.json tramite internet pubblico per verificare le firme dei token.

Passaggio 1: creare un service principal

Crea un service principal dedicato per Devin, anziché riutilizzarne uno da cui dipendono altre automazioni. Un principal dedicato mantiene ordinati i log di audit e le revisioni delle autorizzazioni. Da una macchina in cui hai effettuato l’accesso all’account Databricks (non a un workspace):
Annota due valori dall’output: 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:
Usa USER, non ADMIN. Devin non ha bisogno dei permessi di admin del workspace.

Passaggio 2: collegare Devin al service principal

Segui una delle due opzioni seguenti. Ciascuna è completa di per sé: installa la CLI di Databricks tramite un blueprint in Settings > Environment > Blueprints e configura la CLI per autenticarsi come il service principal creato nel Passaggio 1.
  • 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.
I token di accesso personale (PAT) associati a un utente umano non sono consigliati per nessuna delle due opzioni: aggirano il service principal, scadono in modo imprevedibile e attribuiscono le azioni di Devin a una persona.

Opzione A: client secret OAuth

Preferisci non gestire alcun secret Databricks? Vai direttamente a Opzione B: federazione dei token OIDC. Puoi anche partire da qui e cambiare in seguito: sostituisci il blueprint con quello dell’Opzione B, crea la policy di federazione, quindi elimina il secret OAuth e il Devin Secret DATABRICKS_CLIENT_SECRET.

1. Genera un OAuth secret

Nella console dell’account, apri il service principal del passaggio 1 e genera un OAuth secret. Imposta la durata più breve consentita dal tuo processo di rotazione (il massimo è 730 giorni) e limita il secret agli ambiti API necessari a Devin, come sql, jobs e unity-catalog. Evita di selezionare tutti gli ambiti.

2. Aggiungi i Devin Secrets

In Devin, aggiungi i seguenti valori come Devin Secrets nella tab Secrets del blueprint che modificherai subito dopo (organizzazione o repository): 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

Installa solo la CLI. L’authentication deriva interamente dai tre segreti sopra indicati.
Non scrivere i segreti in un file durante initialize; tutto ciò che viene scritto lì finisce incorporato nello snapshot.
Non impostare anche DATABRICKS_TOKEN e non lasciare un profile ~/.databrickscfg nello snapshot. Le credenziali in conflitto sono la causa più comune di fallimento dell’authentication M2M.

4. Esegui il build dello snapshot

Salva il blueprint e attendi che il build mostri Success, quindi avvia una nuova sessione. Le sessioni esistenti mantengono lo snapshot precedente. Prosegui con il Passaggio 3.

Opzione B: federazione dei token OIDC

Le sessioni Devin generano token di identità di breve durata (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.
Vuoi prima il percorso più rapido? Inizia con l’Opzione A e torna qui quando sei pronto a rinunciare al secret memorizzato.

1. Aggiungi il blueprint

Nel profile occorre sostituire due segnaposto con i tuoi valori:
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

Salva il blueprint e attendi che la build mostri Success. Nel blueprint non c’è nulla che dipenda dalla policy di federazione che creerai al passaggio successivo, quindi non dovrai rieseguire la build in seguito.

3. Creare la policy di federazione

Una volta creato il blueprint, le sessioni Devin possono generare token di identità. Usane uno per leggere i claim esatti che Databricks deve considerare attendibili, quindi crea sul service principal una policy di federazione che vi corrisponda.
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 devin-federation-policy.json, sostituendo i valori ottenuti al passaggio precedente:
Tutti e tre i campi richiedono una corrispondenza esatta:
  • issuer deve essere uguale al claim iss del token, schema incluso e senza barra finale.
  • audiences deve includere l’audience richiesta da Devin (databricks in questa guida).
  • subject deve essere uguale al claim sub del 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, come devin_id, cambiano a ogni sessione e non possono essere abbinati da una policy statica.
Lascia 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

Verifica che esista:
Il profilo scritto dal blueprint punta già a questo service principal, quindi non è necessaria alcuna ricostruzione. Prosegui con il Passaggio 3.

Rebuild e blocco delle versioni

Sia lo script di installazione di Databricks sia 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

L’authentication dimostra soltanto chi è Devin. Ciò che Devin può vedere o modificare dipende invece dalle autorizzazioni del workspace e dalle concessioni di Unity Catalog, che puoi modificare in qualsiasi momento senza intervenire sul blueprint. Parti dal profilo più ristretto adatto al lavoro da svolgere ed ampliarlo solo quando serve.

Profili di autorizzazione

Le istruzioni di concessione fanno riferimento al service principal tramite il suo ID applicazione:
Se preferisci un’amministrazione basata su gruppi, aggiungi il service principal a un gruppo come devin-agents e concedi i permessi al gruppo anziché al singolo principal.
Le modifiche al codice dovrebbero comunque passare dalle pull request. Devin può leggere i dati di produzione per comprendere un problema e validare una soluzione nella sandbox, ma la modifica al notebook, alla definizione del job o all’Asset Bundle viene applicata tramite il tuo normale processo di review, non intervenendo direttamente sulla produzione.

Passaggio 4: installare il plugin delle skill di Databricks (opzionale)

Databricks pubblica Agent Skills che insegnano ai coding agent i flussi di lavoro Databricks: Asset Bundles, job, SQL, Unity Catalog e Spark. Installarle come plugin di Devin fornisce a Devin queste competenze, oltre alla CLI.
  1. Apri Customize → Plugins e scegli Add plugin → From repository.
  2. Inserisci il repository databricks/databricks-agent-skills e la sottodirectory plugins/databricks/claude. Il manifest del plugin si trova in quella sottocartella, quindi l’installazione dalla repository root restituisce No plugin manifest found.
  3. 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.json di quel repository (vedi ereditarietà e livelli): in questo modo solo le sessioni che dispongono della CLI otterranno anche le skill.
  4. Blocca il plugin su un commit una volta verificato che funziona, così le modifiche upstream non finiranno nelle tue sessioni senza essere state esaminate.
La skill principale del plugin consiglia di eseguire 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

Avvia una nuova sessione (una volta completato con successo il build del blueprint) e chiedi a Devin di eseguire:
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:
Per l’opzione A viene riportato 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:
Sostituisci <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.

Troubleshooting

Supporto

Per la configurazione lato Databricks (service principal, secret OAuth, policy di federazione, Unity Catalog), consulta la documentazione sull’authentication di Databricks (passa all’edizione Azure o GCP se necessario). Per la configurazione lato Devin (blueprint, OIDC, plugin, network policy), contatta support@cognition.ai o il tuo account team.