Gli agenti Genie possono analizzare tabelle, metriche e documenti contemporaneamente per fornire insight contestualizzati e conformi ai permessi di accesso
di Doyoung Jung
• Basa gli agenti Genie su dati strutturati (Managed Tables, External Tables, Foreign Tables, Views, Metric Views e Materialized Views) e file non strutturati (Unity Catalog Volumes), in modo che un singolo agente possa fornire risposte attingendo a tutte le risorse.
• La governance degli agenti risiede a livello di catalogo, non a livello di modello. La governance si adatta all'agente anziché sfuggire al controllo.
• Grazie ad Automatic Identity Management (AIM), Object Privileges, ABAC, Row Filters e Column Masks in Unity Catalog, gli agenti Genie vengono eseguiti con l'identità dell'utente e ogni risposta viene filtrata in base ai permessi di quell'utente.
Creare un agente per automatizzare semplici attività aziendali può essere facile. Ma realizzarne uno che comprenda davvero la tua attività e rispetti la governance dei dati esistente è molto più difficile.
Per molto tempo, i team hanno dovuto utilizzare sistemi separati per analizzare dati strutturati e non strutturati, spesso impiegando settimane solo per collegare i due mondi. Consentendo l'analisi direttamente da tabelle e file non strutturati, i Genie Agents semplificano questa architettura, permettendoti di ancorare un singolo agente sia a dati strutturati che non strutturati.
Man mano che consolidi questi dati, sorge una domanda cruciale: se un singolo agente ha accesso a tutto, cosa gli impedisce di dire la cosa sbagliata alla persona sbagliata?
La buona notizia è che con Databricks la risposta si trova già all'interno delle fondamenta di governance dei dati che possiedi. Gli stessi meccanismi di Unity Catalog su cui fai affidamento oggi (sincronizzazione delle identità, privilegi sugli oggetti, ABAC, filtri di riga e maschere di colonna) regolano automaticamente i Genie Agents senza alcuna configurazione aggiuntiva. Questa ereditarietà fluida si basa su una strategia di governance ben progettata, che esploreremo nel dettaglio.
Per dare vita a questi concetti, esamineremo questi scenari utilizzando come punto di riferimento gli esempi di Brickstore, un rivenditore globale di mattoncini fittizio.
Il principio architetturale di base è semplice: i Genie Agents vengono eseguiti con le credenziali dell'utente finale. Unity Catalog applica la governance per impostazione predefinita, garantendo che l'accesso a tabelle e volumi sia collegato direttamente all'identità e ai permessi esistenti dell'utente finale.
Questo è fondamentale, perché molti sistemi sviluppati internamente concedono agli agenti un accesso ampio e si affidano al prompt engineering per filtrare i risultati a livello di modello. In questo modo, l'LLM diventa di fatto il tuo perimetro di sicurezza: una scommessa pericolosa, dato che i modelli possono essere manipolati o aggirati. Dire a un auditor "ho aggiunto istruzioni che dicevano di non mostrare i dati riservati" non è un controllo di governance difendibile.
Con il framework di governance delineato in questo articolo, Unity Catalog, e non il modello, rimane il tuo perimetro di sicurezza, proprio come avviene nel resto di Databricks. Sebbene Genie determini come interrogare i dati, non è in grado di restituire un record che l'utente finale non è autorizzato a visualizzare, poiché ogni risposta viene filtrata a livello di dati prima ancora di lasciare il Lakehouse.
Le fondamenta dell'architettura partono dal garantire che le identità aziendali siano precise e aggiornate.
I controlli di accesso sono fondamentalmente affidabili solo quanto le identità che valutano. Una policy che stabilisce che "i membri di brickstore_apac possono vedere solo gli ordini APAC" non ha senso se le appartenenze ai gruppi in Databricks sono una copia obsoleta e gestita manualmente di ciò che si trova nel tuo provider di identità.
Automatic Identity Management per Microsoft Entra ID e Okta colma questo divario. Quando abilitato, utenti, gruppi, appartenenze ai gruppi e entità servizio si sincronizzano automaticamente da tali provider di identità a Databricks, senza richiedere alcuna applicazione SCIM. Il provisioning Just-in-time è sempre attivo, quindi un utente che non ha mai effettuato l'accesso a Databricks viene configurato al primo login e accede portando già con sé le proprie appartenenze ai gruppi esistenti.
Ecco il flusso passo dopo passo:
brickstore_apac.Il vantaggio è che la governance è continua, non una configurazione una tantum. Quando un dipendente si trasferisce da APAC ad AMER, l'IdP lo sposta da un gruppo all'altro, la sincronizzazione propaga la modifica e la domanda successiva che rivolgerà a Genie restituirà la vista AMER, senza che nessuno debba aprire un ticket o apportare modifiche al Genie Agent. Quando il dipendente lascia l'azienda, viene disattivato dall'IdP e il suo accesso a ogni Genie Agent viene rimosso immediatamente.
Una volta stabilite correttamente le identità, possiamo concentrarci su ciò che gli utenti sono autorizzati a vedere. Per i dati strutturati, un Genie Agent può accedere a qualsiasi risorsa dati di Unity Catalog: tabelle, viste, viste materializzate, viste metriche, tabelle di streaming e persino tabelle esterne federate da sistemi esterni.
Ad esempio, le tabelle Delta sono i fatti e le dimensioni. In Brickstore si tratta di brickstore.sales.orders (ogni ordine, con un region e un customer_email) e brickstore.sales.products (il catalogo dei mattoncini). Le Metric Views rappresentano lo strato semantico regolato sovrastante: codificano le definizioni delle metriche aziendali (ad esempio, cosa significa "ricavo netto", come viene calcolato il numero di "mattoncini venduti", cosa si intende per "mattoncino più venduto") una sola volta, in YAML, in modo che ogni consumatore le calcoli allo stesso modo.
Al di sopra di queste risorse si trovano quattro livelli di controllo degli accessi che spesso vengono confusi tra loro:
Livello | Domanda a cui risponde | Meccanismo |
Privilegi sugli oggetti | Chi ha quale livello di accesso a quale risorsa? |
|
Attribute-Based Access Control (ABAC) | Quale policy si applica e a cosa? | Policy guidate da tag regolati che si applicano una volta e si propagano (es. qualsiasi colonna con il tag "PII" è disponibile solo per determinati gruppi) |
Filtri di riga | A quali righe ha accesso un utente? | Funzione definita dall'utente (UDF) SQL che valuta ogni riga al momento della query (le righe per cui la funzione restituisce FALSE vengono escluse dai risultati della query) |
Maschere di colonna | Quali colonne devono essere mascherate e come? | UDF SQL che accetta il valore della colonna come input e restituisce il valore originale o una versione mascherata |
I privilegi sugli oggetti rappresentano il primo livello di accesso: senza SELECT, Genie non può interrogare la tabella per conto dell'utente finale. Ma concedere l'accesso a una tabella non significa dover concedere tutto l'accesso. Puoi applicare filtri di riga e maschere di colonna al di sopra di tali concessioni, in modo che un regional manager possa interrogare la tabella degli ordini visualizzando solo le righe della propria area geografica e mai l'indirizzo email non elaborato del cliente. Questi controlli di riga e colonna si basano sugli stessi identici gruppi già utilizzati dalle tue concessioni — is_account_group_member('brickstore_apac') e simili. ABAC, di cui parleremo tra poco, non sostituisce nulla di tutto questo; è solo un modo per associare gli stessi filtri e maschere tramite una policy anziché tabella per tabella.
Il vecchio modo di gestire la sicurezza di righe e colonne era basato sulla singola tabella: scrivere un filtro di riga, associarlo a orders; scrivere una maschera di colonna, associarla a un'altra tabella; e così via all'infinito. Questo approccio è ancora adatto per logiche isolate, ma su centinaia di tabelle rappresenta una configurazione soggetta a lacune.
Le policy ABAC, ora GA in Unity Catalog insieme ai tag governati e alla classificazione automatica dei dati, invertono questo approccio. I dati sensibili vengono etichettati con tag governati (coppie chiave/valore a livello di account e con controllo dell'accesso come pii:email) e si scrive una sola policy che stabilisce "ovunque appaia questo tag, applica questa protezione". Le nuove tabelle ereditano la protezione nel momento in cui vengono etichettate, quindi non è necessario alcun intervento per singola tabella.
Una maschera di colonna + policy ABAC che protegge ogni colonna email nel catalogo, in un'unica istruzione:
E un filtro di riga + policy ABAC in modo che ogni manager veda solo gli ordini della propria area geografica, in base all'appartenenza al gruppo:
Il risultato: il manager APAC pone una domanda sugli ordini e Genie Agent restituisce solo le righe APAC, con customer_email mascherato. Il manager AMER interroga la stessa tabella e ottiene le righe AMER.
In passato, la strategia di governance per i team è stata più complessa per quanto riguarda i dati non strutturati. Mentre i dati strutturati sono gestiti in modo sicuro in un data warehouse o in un database, i documenti sono spesso conservati in un sistema di archiviazione isolato, regolato da ACL separate.
La soluzione consiste nel conservare i file all'interno dello stesso piano di governance dei dati strutturati. È possibile caricarli nei volumi di Unity Catalog, dove diventano oggetti a protezione protetta come tutti gli altri. È sufficiente concedere il privilegio GRANT READ VOLUME ai gruppi e agli utenti che devono visualizzarli, e Genie li analizzerà nel rispetto dello stesso contratto di identità:
C'è un comportamento importante da comprendere prima di progettare l'agente: quando si collega un volume a un Genie Agent, questo diventa una sorgente richiesta. Ciò significa che l'agente convalida l'accesso a ogni sorgente collegata al momento del caricamento, quindi un utente che non dispone del privilegio READ VOLUME su un volume collegato non potrà utilizzare affatto quell'agente. In altre parole, le concessioni sui volumi regolano i documenti come prerequisito per l'utilizzo dell'agente, quindi assicurati di limitare l'ambito delle sorgenti di documenti di ciascun agente al pubblico che dovrebbe utilizzarlo. Se due gruppi di utenti hanno bisogno di documenti diversi, potrebbe essere necessario fornire loro Genie Agent diversi (ciascuno dei quali monta solo i volumi che l'utente può leggere).
Inoltre, tieni presente che un volume di Unity Catalog è l'unità minima a protezione protetta, quindi i permessi si applicano all'intero volume anziché ai singoli file. Non è possibile selezionare file specifici da condividere; è necessario concedere l'accesso all'intero volume o a nessuna parte di esso.
Tenendo conto di queste considerazioni, i volumi possono essere collegati direttamente ai Genie Agent come sorgente di conoscenza, nello stesso modo in cui faresti per una tabella o una vista. I Genie Agent leggono molto più dei semplici PDF: i formati supportati includono PDF, file di immagine (JPG, JPEG, PNG, TIFF, TIF) e documenti Office (DOC, DOCX, PPT, PPTX), oltre a testo normale e Markdown. In pratica, ciò significa che contratti scansionati, presentazioni e schede tecniche sono tutti utilizzabili, non solo i PDF puliti. (Consulta la documentazione sui volumi dei Genie Agent per l'elenco completo e i limiti attuali.)

Per garantire un routing accurato e prestazioni ottimali, segui queste best practice per la configurazione dei volumi:
A questo punto, il Genie Agent è pienamente abilitato ad agire come un vero esperto di dominio, con accesso completo a dati sia strutturati che non strutturati. La knowledge base sottostante è ancora accuratamente protetta da filtri di riga, maschere di colonna e concessioni sui volumi in base ai permessi dei singoli utenti.
Valutiamo la nostra implementazione testandola con due utenti diversi che pongono esattamente la stessa domanda, il che dovrebbe produrre due risposte diverse ma entrambe corrette.
Considera due sessioni simultanee di Genie Agent, entrambe basate sugli stessi identici asset: la tabella orders, il catalogo products e il volume market_report. Sebbene un richiedente appartenga a brickstore_apac e l'altro a brickstore_amer, entrambi inviano esattamente la stessa query:
"Qual è il nostro prodotto più venduto in questo trimestre e cosa sta trainando la domanda? Elenca anche i principali clienti responsabili di tali vendite e i loro indirizzi email."
Risposta 1 - per il manager APAC

Risposta 2 - per il manager AMER

Ci sono tre aspetti che vale la pena sottolineare:
Ecco alcuni pattern da tenere d'occhio mentre metti in produzione quanto appreso in questo blog:
Creare un agente può essere facile, ma gestirne la governance richiede un vero lavoro di progettazione. In Databricks, le identità Enterprise sono sincronizzate dall'IdP, i privilegi sugli oggetti regolano l'accesso, l'ABAC e i tag controllati applicano la protezione su scala, i filtri di riga e le maschere di colonna controllano i dati restituiti, e i documenti sono conservati nello stesso sistema dei dati.
Con questa configurazione, gli agenti Genie ereditano tutta la governance senza alcuna configurazione aggiuntiva.
Per iniziare a creare il tuo primo agente Genie controllato, visita la documentazione di Genie e la documentazione sulle policy ABAC.
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.