Controle de acesso refinado em computação de usuário único
Visualização
Esse recurso está em Prévia Pública.
Este artigo apresenta a funcionalidade de filtragem de dados que permite o controle de acesso refinado em consultas 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 compute de usuário único para executar essas consultas, o compute e o workspace deverão atender a requisitos específicos:
O recurso de usuário único compute deve estar em Databricks Runtime 15.4 LTS ou acima.
O workspace deve estar habilitado para serverless compute para Job, Notebook e Delta Live Tables.
Para confirmar que sua região workspace suporta serverless compute, consulte recurso com disponibilidade regional limitada.
Se o compute recurso e o workspace usuário único atenderem a esses requisitos, a filtragem de dados será executada automaticamente sempre que o usuário 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 compute de usuário único que está executando o Databricks Runtime 15.3 e abaixo:
-
No site compute de usuário único que executa o Databricks Runtime 15.3 e abaixo, o usuário que executa a consulta no view deve ter
SELECT
nas tabelas e na visualização 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 a visualização referenciadas.
Como a filtragem de dados funciona na computação de usuário único?
Sempre que uma consulta acessa os seguintes objetos do banco de dados, o recurso compute de usuário único 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](../_images/data-filtering-single-user.png)
A consulta em table_1
é tratada inteiramente pelo recurso compute de usuário único, 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 view compute informações na interface do usuário Apache Spark .
![SparkUI mostrando o nó RemoteSparkConnectScan](../_images/spark-ui-fgac-insights.png)
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
Durante o Public Preview, aplicam-se as seguintes 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
eMERGE
. 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 o self-join em um recurso compute de usuário único, esteja ciente de que uma consulta self-join tratada pelo recurso de filtragem de dados pode retornar diferentes Snapshot da mesma tabela remota.