Controle de acesso refinado na computação de um único usuário
Este artigo apresenta a funcionalidade de filtragem de dados que permite o controle de acesso refinado em consultas que são executadas em computação de usuário único (computação para todos os fins ou trabalhos configurados com o modo de acesso de usuário único). Consulte Modos de acesso.
Essa filtragem de dados é realizada nos bastidores usando computação sem servidor.
Por que algumas consultas na computação de um único usuário exigem filtragem de dados?
O Unity Catalog permite controlar o acesso a dados tabulares no nível de coluna e linha (também conhecido como controle de acesso refinado) usando os seguintes recursos:
Quando os usuários consultam modos de exibição que excluem dados de tabelas referenciadas ou tabelas de consulta que aplicam filtros e máscaras, eles podem usar qualquer um dos seguintes recursos de computação sem limitações:
- Armazéns SQL
- Computação compartilhada
No entanto, se você usar computação de usuário único para executar essas consultas, a computação e seu espaço de trabalho deverão atender a requisitos específicos:
O recurso de computação de usuário único deve estar no Databricks Runtime 15.4 LTS ou superior.
O espaço de trabalho deve ser habilitado para computação sem servidor para trabalhos, blocos de anotações e Delta Live Tables.
Para confirmar se a região do espaço de trabalho suporta computação sem servidor, consulte Recursos com disponibilidade regional limitada.
Se o recurso de computação e o espaço de trabalho de usuário único atenderem a esses requisitos, a filtragem de dados será executada automaticamente sempre que você consultar uma exibição ou tabela que use controle de acesso refinado.
Suporte para visualizações materializadas, tabelas de streaming e visualizações padrão
Além de exibições dinâmicas, filtros de linha e máscaras de coluna, a filtragem de dados também permite consultas nas seguintes exibições e tabelas que não são suportadas na computação de usuário único que está executando o Databricks Runtime 15.3 e abaixo:
-
Na computação de usuário único que executa o Databricks Runtime 15.3 e inferior, o usuário que executa a consulta no modo de exibição deve ter
SELECT
nas tabelas e modos de exibição referenciados pelo modo de exibição, o que significa que você não pode usar modos de exibição para fornecer controle de acesso refinado. No Databricks Runtime 15.4 com filtragem de dados, o usuário que consulta a exibição não precisa acessar as tabelas e exibições referenciadas.
Como funciona a filtragem de dados na computação de um único usuário?
Sempre que uma consulta acessa os seguintes objetos de banco de dados, o recurso de computação de usuário único passa a consulta para a computação sem servidor para executar a filtragem de dados:
- Vistas criadas sobre tabelas em que o utilizador não tem o
SELECT
privilégio - Vistas dinâmicas
- Tabelas com filtros de linha ou máscaras de coluna definidos
- Visualizações materializadas e tabelas de streaming
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
.
A consulta em table_1
é tratada inteiramente pelo recurso de computação de usuário único, porque nenhuma filtragem é necessária. As consultas e view_2
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 na computação sem servidor.
Quais são os custos incorridos?
Os clientes são cobrados pelos recursos de computação sem servidor usados para executar operações de filtragem de dados. Para obter informações sobre preços, consulte Camadas e complementos da plataforma.
Pode consultar a tabela de utilização da faturação do sistema para ver quanto lhe foi cobrado. Por exemplo, a consulta a seguir divide os custos de computação 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;
Exibir o desempenho da consulta quando a filtragem de dados estiver ativada
A interface do usuário do Spark para computação de usuário único exibe métricas que você pode usar para entender o desempenho de suas consultas. Para cada consulta executada no recurso de computação, a guia SQL/Dataframe exibe a representação do gráfico de consulta. Se uma consulta estiver envolvida na filtragem de dados, a interface do usuário exibirá um nó do operador RemoteSparkConnectScan na parte inferior do gráfico. Esse nó exibe métricas que você pode usar para investigar o desempenho da consulta. Consulte Exibir informações de computação na interface do usuário do Apache Spark.
Expanda o nó do operador RemoteSparkConnectScan para ver métricas que abordam questões como as seguintes:
- Quanto tempo demorou a filtragem de dados? Veja "tempo total de execução remota".
- Quantas linhas permaneceram após a filtragem de dados? Ver "saída de linhas".
- Quantos dados (em bytes) foram retornados após a filtragem de dados? Veja "tamanho de saída de linhas".
- Quantos arquivos de dados foram removidos de partição e não precisaram ser lidos do armazenamento? Veja "Arquivos removidos" e "Tamanho dos arquivos removidos".
- Quantos arquivos de dados não puderam ser removidos e tiveram que ser lidos do armazenamento? Veja "Arquivos lidos" e "Tamanho dos arquivos lidos".
- Dos arquivos que tiveram que ser lidos, quantos já estavam no cache? Veja "Tamanho dos acertos do cache" e "Tamanho do cache perdido".
Limitações
Não há suporte para operações de gravação ou atualização de tabelas em tabelas com filtros de linha ou máscaras de coluna aplicados.
Especificamente, operações DML, como
INSERT,
DELETE
,UPDATE
,REFRESH TABLE
eMERGE
, não são suportadas. Só pode ler (SELECT
) a partir destas tabelas.As associações automáticas são bloqueadas por padrão quando a filtragem de dados é chamada, mas você pode permiti-las definindo
spark.databricks.remoteFiltering.blockSelfJoins
como false na computação em que está executando esses comandos.Antes de habilitar as associações automáticas em um único recurso de computação de usuário, lembre-se de que uma consulta de associação automática manipulada pelo recurso de filtragem de dados pode retornar instantâneos diferentes da mesma tabela remota.