Condividi tramite


Controllo di accesso con granularità fine sul calcolo di un singolo utente

Questo articolo presenta la funzionalità di filtro dei dati che consente il controllo di accesso con granularità fine sulle query eseguite su un singolo calcolo utente (calcolo di tutti gli scopi o processi configurati con la modalità di accesso utente singolo). Vedere Modalità di accesso usata.

Questo filtro dei dati viene eseguito in background usando l'ambiente di calcolo serverless.

Perché alcune query sull'ambiente di calcolo a singolo utente richiedono il filtro dei dati?

Unity Catalog consente di controllare l'accesso ai dati tabulari a livello di colonna e di riga (noto anche come controllo di accesso con granularità fine) usando le funzionalità seguenti:

Quando gli utenti eseguono query sulle viste che escludono dati da tabelle di riferimento o tabelle di query che applicano filtri e maschere, possono usare una delle risorse di calcolo seguenti senza limitazioni:

  • Warehouse SQL
  • Calcolo condiviso

Tuttavia, se si usa il calcolo utente singolo per eseguire tali query, il calcolo e l'area di lavoro devono soddisfare requisiti specifici:

Se la singola risorsa di calcolo utente e l'area di lavoro soddisfano questi requisiti, il filtro dei dati viene eseguito automaticamente ogni volta che si esegue una query su una vista o una tabella che usa un controllo di accesso con granularità fine.

Supporto per viste materializzate, tabelle di streaming e viste standard

Oltre alle viste dinamiche, ai filtri di riga e alle maschere di colonna, il filtro dei dati abilita anche le query sulle viste e le tabelle seguenti che non sono supportate nel calcolo utente singolo che esegue Databricks Runtime 15.3 e versioni successive:

  • Visualizzazioni standard

    Nell'ambiente di calcolo con un singolo utente che esegue Databricks Runtime 15.3 e versioni successive, l'utente che esegue la query nella vista deve avere SELECT nelle tabelle e nelle viste a cui fa riferimento la vista, il che significa che non è possibile usare le visualizzazioni per fornire un controllo di accesso con granularità fine. In Databricks Runtime 15.4 con filtro dati, l'utente che esegue query sulla vista non deve accedere alle tabelle e alle viste a cui si fa riferimento.

  • Tabelle di streaming

  • Viste materializzate

Come funziona il filtro dei dati sulle risorse di calcolo a singolo utente?

Ogni volta che una query accede agli oggetti di database seguenti, la singola risorsa di calcolo utente passa la query al calcolo serverless per eseguire il filtro dei dati:

  • Viste compilate su tabelle su cui l'utente non ha il SELECT privilegio
  • Visualizzazioni dinamiche
  • Tabelle con filtri di riga o maschere di colonna definite
  • Viste materializzate e tabelle di streaming

Nel diagramma seguente, un utente dispone SELECT di in table_1, view_2e table_w_rls, che dispone di filtri di riga applicati. L'utente non dispone di SELECT in table_2, a cui fa view_2riferimento .

Diagramma che mostra il funzionamento del filtro dei dati

La query su table_1 viene gestita interamente dalla singola risorsa di calcolo utente, perché non è necessario alcun filtro. Le query su view_2 e table_w_rls richiedono il filtro dei dati per restituire i dati a cui l'utente ha accesso. Queste query vengono gestite dalla funzionalità di filtro dei dati nell'ambiente di calcolo serverless.

Quali costi sono sostenuti?

I clienti vengono addebitati i costi per le risorse di calcolo serverless usate per eseguire operazioni di filtro dei dati. Per informazioni sui prezzi, vedere Livelli di piattaforma e componenti aggiuntivi.

È possibile eseguire una query sulla tabella di utilizzo della fatturazione del sistema per vedere quanto è stato addebitato. Ad esempio, la query seguente suddivide i costi di calcolo per utente:

SELECT usage_date,
sku_name,
 identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
 AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;

Visualizzare le prestazioni delle query quando viene attivato il filtro dei dati

L'interfaccia utente di Spark per il calcolo utente singolo visualizza le metriche che è possibile usare per comprendere le prestazioni delle query. Per ogni query eseguita nella risorsa di calcolo, nella scheda SQL/Dataframe viene visualizzata la rappresentazione del grafo della query. Se una query è stata coinvolta nel filtro dei dati, l'interfaccia utente visualizza un nodo dell'operatore RemoteSparkConnectScan nella parte inferiore del grafico. Tale nodo visualizza le metriche che è possibile usare per analizzare le prestazioni delle query. Vedere Visualizzare le informazioni di calcolo nell'interfaccia utente di Apache Spark.

SparkUI che mostra il nodo RemoteSparkConnectScan

Espandere il nodo dell'operatore RemoteSparkConnectScan per visualizzare le metriche che rispondono a queste domande:

  • Quanto tempo è stato necessario per il filtro dei dati? Visualizzare il "tempo totale di esecuzione remota".
  • Quante righe sono rimaste dopo il filtro dei dati? Visualizzare "rows output".
  • Quanti dati (in byte) sono stati restituiti dopo il filtro dei dati? Visualizzare le "dimensioni di output delle righe".
  • Quanti file di dati sono stati eliminati dalla partizione e non è necessario leggere dalla risorsa di archiviazione? Visualizzare "File eliminati" e "Dimensioni dei file eliminati".
  • Quanti file di dati non potevano essere eliminati e dovevano essere letti dalla risorsa di archiviazione? Visualizzare "File letti" e "Dimensioni dei file letti".
  • Dei file da leggere, quanti erano già presenti nella cache? Visualizzare "Dimensioni riscontri cache" e "Dimensioni mancate cache".

Limiti

  • Nessun supporto per operazioni di scrittura o aggiornamento delle tabelle nelle tabelle con filtri di riga o maschere di colonna applicati.

    In particolare, le operazioni DML, ad esempio INSERT, DELETE, REFRESH TABLEUPDATE, e MERGE, non sono supportate. È possibile leggere (SELECT) solo da queste tabelle.

  • I self-join vengono bloccati per impostazione predefinita quando viene chiamato il filtro dei dati, ma è possibile consentirli impostando spark.databricks.remoteFiltering.blockSelfJoins su false nel calcolo in cui si eseguono questi comandi.

    Prima di abilitare i self-join in una singola risorsa di calcolo utente, tenere presente che una query self-join gestita dalla funzionalità di filtro dati potrebbe restituire snapshot diversi della stessa tabella remota.