Como proteger um lakehouse para equipes de Data Warehousing
Introdução
Neste artigo, fornecemos uma visão geral de como configurar a segurança de um lakehouse no Fabric para utilização com usuários do SQL e consultas T-SQL. Esses usuários podem ser analistas de negócios que consomem dados pelo SQL, construtores de relatórios ou engenheiros de dados que criam novas tabelas e exibições.
Recursos de segurança
O Microsoft Fabric usa um modelo de segurança de várias camadas com diferentes controles disponíveis em diferentes níveis para fornecer somente as permissões mínimas necessárias. Para obter mais informações sobre os diferentes recursos de segurança disponíveis no Fabric, confira Data Access Control Model in OneLake.
Na carga de trabalho do Data Warehouse do Fabric, os itens de ponto de extremidade do warehouse e da análise de SQL também permitem a definição da segurança do SQL nativo. A segurança do SQL usa a biblioteca completa de construções de segurança do T-SQL para permitir o controle de acesso granular de tabelas, exibições, linhas e colunas dentro de um item. Para obter mais informações sobre segurança no SQL, confira Permissões granulares do SQL.
As permissões do SQL configuradas no depósito ou no ponto de extremidade de análise do SQL só se aplicam a consultas executadas no depósito ou no ponto de extremidade de análise do SQL. Os dados subjacentes residem no OneLake, mas o acesso aos dados do OneLake é controlado separadamente por meio das funções de acesso a dados do OneLake. Para garantir que os usuários com permissões específicas do SQL não vejam dados aos quais não têm acesso do SQL, não os inclua em uma função de acesso a dados do OneLake.
Proteger por caso de uso
A segurança no Microsoft Fabric é otimizada para proteger dados para casos de uso específicos. Um caso de uso é um conjunto de usuários que precisa de acesso específico e acesso a dados por meio de um determinado mecanismo. Alguns casos de uso comuns para cenários do SQL incluem:
- Gravadores do SQL: usuários que precisam criar novas tabelas, exibir ou gravar dados em tabelas existentes.
- Leitores do SQL: usuários que precisam ler dados usando consultas SQL. Eles podem estar acessando a conexão SQL diretamente ou por meio de outro serviço, como o Power BI.
Podemos então alinhar cada caso de uso com as permissões necessárias no Fabric.
Acesso para gravação no SQL
Existem duas maneiras de um usuário obter acesso para gravação em um depósito ou ponto de extremidade de análise do SQL:
- Por meio das funções do espaço de trabalho do Fabric, você pode conceder subscrição a três funções do espaço de trabalho que concedem permissões de gravação. Cada função é convertida automaticamente em uma função correspondente no SQL que concede acesso para gravação equivalente.
- Conceda acesso de leitura ao mecanismo SQL e conceda permissões SQL personalizadas para gravar em alguns ou em todos os dados.
Se um usuário precisar de acesso para gravação em todos os depósitos ou pontos de extremidade de análise do SQL em um espaço de trabalho, atribua uma função de espaço de trabalho a ele. A menos que um usuário precise atribuir outros usuários a funções de espaço de trabalho, a função Colaborador deve ser usada.
Se um usuário só precisar gravar em depósitos ou análises do SQL específicos, conceda o acesso direto por meio de permissões SQL.
Acesso de leitura SQL
Existem duas maneiras de um usuário obter acesso de leitura em um depósito ou ponto de extremidade de análise do SQL:
- Conceda acesso de leitura por meio da permissão ReadData, atribuída como parte das funções do espaço de trabalho do Fabric. Todas as quatro funções de espaço de trabalho concedem a permissão ReadData.
- Conceda acesso de leitura ao mecanismo SQL e permissões SQL personalizadas para ler alguns ou todos os dados.
Se um usuário for membro de uma função de espaço de trabalho do Fabric, ele receberá a permissão ReadData. A permissão ReadData mapeia o usuário para receber uma função SQL que concede permissões SELECT em todas as tabelas no warehouse ou lakehouse. Essa permissão é útil se um usuário precisar visualizar todos ou a maioria dos dados na casa do lakehouse ou warehouse. Qualquer permissão DENY do SQL definida em um determinado lakehouse ou depósito ainda se aplica e limita o acesso a tabelas. Além disso, a segurança em nível de linha e coluna pode ser definida em tabelas para restringir o acesso em nível granular.
Se um usuário precisar somente de acesso a um lakehouse ou warehouse específico, o recurso de compartilhamento fornece acesso apenas ao item compartilhado. Durante o compartilhamento, os usuários podem optar por fornecer apenas a permissão de leitura ou Leitura + ReadData. Fornecer a permissão de leitura possibilita que os usuários se conectem ao depósito ou ponto de extremidade de análise do SQL, mas não fornece acesso às tabelas. Conceder as permissões ReadData aos usuários fornece acesso de leitura completo a todas as tabelas no depósito ou no ponto de extremidade da análise do SQL. Em ambos os casos, a segurança SQL adicional pode ser configurada para conceder ou negar acesso a tabelas específicas. Essa segurança SQL pode incluir controle de acesso granular, como segurança em nível de linha ou coluna.
Uso com atalhos
Os atalhos são um recurso do OneLake que permitem que os dados sejam referenciados de uma localização sem precisar copiá-los fisicamente. Os atalhos são uma ferramenta poderosa que permite que os dados de um lakehouse sejam facilmente reutilizados em outras localizações sem fazer cópias duplicadas deles.
Os depósitos no Fabric não oferecem suporte a atalhos. No entanto, há um comportamento especial para como o ponto de extremidade da análise do SQL de um lakehouse interage com atalhos.
Todos os atalhos em um lakehouse são acessados de modo delegado ao fazer consultas pelo ponto de extremidade da análise do SQL. A identidade delegada é o usuário do Fabric que possui o lakehouse. Por padrão, o proprietário é o usuário que criou o lakehouse e o ponto de extremidade da análise do SQL. O proprietário pode ser alterado em determinados casos e o proprietário atual é exibido na coluna Proprietário no Fabric ao exibir o item na lista de itens do espaço de trabalho. O comportamento delegado significa que um usuário que está fazendo uma consulta é capaz de ler tabelas de atalho se o proprietário tiver acesso aos dados subjacentes, e não o usuário que está executando a consulta. O usuário de consulta só precisa de acesso para selecionar na tabela de atalho.
Observação
Por exemplo, o UsuárioA é o proprietário de um lakehouse e UsuárioB está realizando uma consulta em uma tabela que é um atalho. O UsuárioB deve primeiro ter acesso de leitura para a tabela por meio de ReadData ou de permissões SQL. Para ver os dados, a consulta verifica se o UsuárioA tem acesso ao atalho. Se UsuárioA tiver acesso, o UsuárioB verá os resultados da consulta. Se o UsuárioA não tiver acesso, a consulta falhará.
Em lakehouses que usam o recurso de funções de acesso a dados do OneLake, o acesso a um atalho é determinado se o proprietário do ponto de extremidade da análise do SQL tiver acesso para visualizar o lakehouse de destino e ler a tabela por meio de uma função de acesso a dados do OneLake.
Em lakehouses que ainda não estão usando o recurso de funções de acesso a dados do OneLake, o acesso ao atalho é determinado se o proprietário do ponto de extremidade da análise do SQL tiver a permissão ReadAll e a permissão de leitura no caminho de destino.