Controle de acesso refinado em computação de usuário único

Este artigo apresenta a funcionalidade de filtragem de dados que permite o controle de acesso refinado em consultas que são executadas em um único usuário compute (all-purpose ou Job compute configurado com o modo de acesso Single user ). Consulte Modos de acesso.

Essa filtragem de dados é realizada nos bastidores usando o site serverless compute.

Por que algumas consultas em computação de usuário único exigem filtragem de dados?

Unity Catalog permite controlar o acesso a dados tabulares no nível da coluna e da linha (também conhecido como controle de acesso refinado) usando o seguinte recurso:

Quando os usuários consultam visualizações que excluem dados de tabelas referenciadas ou consultam tabelas que aplicam filtros e máscaras, eles podem usar qualquer um dos seguintes compute recurso sem limitações:

  • SQL warehouses

  • Compute compartilhado

No entanto, se o senhor usar o usuário único compute para executar essas consultas, o compute e o seu workspace deverão atender a requisitos específicos:

Se o seu usuário único compute recurso e workspace atenderem a esses requisitos, a filtragem de dados será executada automaticamente sempre que o senhor consultar um view ou uma tabela que use controle de acesso refinado.

Suporte para visualização materializada, tabelas de transmissão e visualização padrão

Além da visualização dinâmica, os filtros de linha e a filtragem de dados de mascaramento de coluna também permitem consultas na visualização e nas tabelas a seguir que não são compatíveis com o usuário único compute que está executando o Databricks Runtime 15.3 e abaixo:

  • Visualização padrão

    Em um único usuário compute executando Databricks Runtime 15.3 e abaixo, o usuário que executa a consulta no view deve ter SELECT nas tabelas e visualizações referenciadas pelo view, o que significa que o senhor não pode usar a visualização para fornecer controle de acesso refinado. No site Databricks Runtime 15.4 com filtragem de dados, o usuário que consulta o site view não precisa acessar as tabelas e exibições referenciadas.

  • Tabelas de streaming

  • Visualizações materializadas

Como funciona a filtragem de dados na computação de usuário único?

Sempre que uma consulta acessa os seguintes objetos do banco de dados, o usuário único compute recurso passa a consulta para serverless compute para realizar a filtragem de dados:

  • visualização criada sobre tabelas nas quais o usuário não tem o privilégio SELECT

  • Visualização dinâmica

  • Tabelas com filtros de linha ou máscaras de coluna definidas

  • Visualização materializada e tabelas de transmissão

No diagrama a seguir, um usuário tem SELECT em table_1, view_2 e table_w_rls, que tem filtros de linha aplicados. O usuário não tem SELECT em table_2, que é referenciado por view_2.

Diagrama que mostra como funciona a filtragem de dados

A consulta em table_1 é tratada inteiramente pelo usuário único compute recurso, pois não é necessária nenhuma filtragem. As consultas em view_2 e table_w_rls exigem filtragem de dados para retornar os dados aos quais o usuário tem acesso. Essas consultas são tratadas pelo recurso de filtragem de dados em serverless compute.

Quais são os custos incorridos?

Os clientes são cobrados pelo recurso serverless compute que é usado para realizar operações de filtragem de dados. Para obter informações sobre preços, consulte Platform Tiers and Add-Ons.

O senhor pode consultar a tabela de uso de faturamento do sistema para ver o quanto foi cobrado. Por exemplo, a consulta a seguir detalha os custos do compute por usuário:

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;

Visualizar o desempenho da consulta quando a filtragem de dados está ativada

O site Spark UI para usuário único compute exibe métricas que o senhor pode usar para entender o desempenho de suas consultas. Para cada consulta que o senhor executar no recurso compute, o SQL/Dataframe tab exibe a representação gráfica da consulta. Se uma consulta estiver envolvida na filtragem de dados, a interface do usuário exibirá um nó de operador RemoteSparkConnectScan na parte inferior do gráfico. Esse nó exibe métricas que o senhor pode usar para investigar o desempenho da consulta. Consulte a visualização de compute informações na UI de Apache Spark .

SparkUI mostrando o nó RemoteSparkConnectScan

Expanda o nó do operador RemoteSparkConnectScan para ver as métricas que abordam questões como as seguintes:

  • Quanto tempo foi gasto na filtragem de dados? view "tempo total de execução remota".

  • Quantas linhas restaram após a filtragem de dados? view "saída de linhas".

  • Quantos dados (em bytes) foram retornados após a filtragem de dados? view "tamanho da saída das linhas".

  • Quantos arquivos de dados foram podados por partição e não precisaram ser lidos do armazenamento? view "Files pruned" (Arquivos removidos) e "Size of files pruned" (Tamanho dos arquivos removidos).

  • Quantos arquivos de dados não puderam ser podados e tiveram de ser lidos do armazenamento? view "Arquivos lidos" e "Tamanho dos arquivos lidos".

  • Dos arquivos que precisavam ser lidos, quantos já estavam no cache? view "O cache atinge o tamanho" e "O cache perde o tamanho".

Limitações

  • Não há suporte para operações de gravação ou refresh em tabelas que tenham filtros de linha ou máscaras de coluna aplicadas.

    Especificamente, não há suporte para operações DML, como INSERT, DELETE, UPDATE, REFRESH TABLE e MERGE. O senhor só pode ler (SELECT) nessas tabelas.

  • As autouniões são bloqueadas pelo site default quando a filtragem de dados é chamada, mas é possível permiti-las definindo spark.databricks.remoteFiltering.blockSelfJoins como false no site compute em que o comando está sendo executado.

    Antes de ativar a autojunção em um único usuário compute recurso, saiba que uma consulta autojoin tratada pelo recurso de filtragem de dados pode retornar diferentes Snapshot da mesma tabela remota.