Como configurar o controle de acesso em objetos sincronizados no pool de SQL sem servidor

Tip

Microsoft Fabric Data Warehouse é um armazém relacional de escala empresarial com base de data lake, arquitetura pronta para o futuro, IA integrada e novos recursos. Se você não estiver familiarizado com o data warehouse, comece com Fabric Data Warehouse. As cargas de trabalho existentes de pools de SQL dedicados podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

Em Azure Synapse Analytics, as databases do Spark e tables são compartilhadas com o pool de SQL sem servidor. Os bancos de dados lake, parquet e tabelas com suporte CSV criados com Spark estão automaticamente disponíveis no pool de SQL sem servidor. Esse recurso permite usar o pool de SQL sem servidor para explorar e consultar dados preparados usando pools do Spark. No diagrama abaixo, você pode ver uma visão geral da arquitetura de alto nível para utilizar esse recurso. Primeiro, Azure Synapse Pipelines estão movendo dados do armazenamento local (ou outro) para Azure Data Lake Storage. O Spark agora pode enriquecer os dados e criar bancos de dados e tabelas que estão sendo sincronizadas com o SQL do Synapse sem servidor. Posteriormente, o usuário pode executar consultas ad hoc sobre os dados enriquecidos ou servi-los para Power BI por exemplo.

Enriquecer no Spark, servir com diagrama SQL.

Acesso de administrador completo (sysadmin)

Depois que esses bancos de dados e tabelas forem sincronizados do Spark com o pool de SQL sem servidor, essas tabelas externas no pool de SQL sem servidor poderão ser usadas para acessar os mesmos dados. No entanto, os objetos no pool de SQL sem servidor são somente leitura devido à manutenção da consistência com os objetos de pools do Spark. A limitação faz com que somente usuários com funções de Administrador de SQL do Synapse ou Administrador do Synapse possam acessar esses objetos no pool de SQL sem servidor. Se um usuário não administrador tentar executar uma consulta no banco de dados/tabela sincronizado, ele receberá um erro como: External table '<table>' is not accessible because content of directory cannot be listed. apesar deles terem acesso a dados nas contas de armazenamento subjacentes.

Como os bancos de dados sincronizados no pool de SQL sem servidor são somente leitura, eles não podem ser modificados. A criação de um usuário ou a concessão de outras permissões falharão se forem tentadas. Para ler bancos de dados sincronizados, é necessário ter permissões privilegiadas no nível do servidor (como sysadmin). Essa limitação também está presente em tabelas externas no pool de SQL sem servidor ao usar o Link do Azure Synapse para Dataverse e tabelas de bancos de dados lake.

Acesso não administrador a bancos de dados sincronizados

Um usuário que precisa ler dados e criar relatórios geralmente não tem acesso total de administrador (sysadmin). Esse usuário geralmente é um analista de dados que só precisa ler e analisar dados usando as tabelas existentes. Eles não precisam criar novos objetos.

Um usuário com permissão mínima deve ser capaz de:

  • Conectar-se a um banco de dados replicado do Spark
  • Selecione dados por meio de tabelas externas e acesse os dados subjacentes do ADLS.

Depois de executar o script de código abaixo, ele permitirá que usuários não administradores tenham permissões no nível do servidor para se conectar a qualquer banco de dados. Ele também permitirá que os usuários exibam dados de todos os objetos no nível do esquema, como tabelas ou exibições. A segurança de acesso a dados pode ser gerenciada na camada de armazenamento.

-- Creating Azure AD login (same can be achieved for Azure AD app)
    CREATE LOGIN [login@contoso.com] FROM EXTERNAL PROVIDER;
    go;
    
    GRANT CONNECT ANY DATABASE to [login@contoso.com];
    GRANT SELECT ALL USER SECURABLES to [login@contoso.com];
    GO;

Note

Essas instruções devem ser executadas no banco de dados mestre, pois são todas permissões no nível do servidor.

Depois de criar um logon e conceder permissões, os usuários podem executar consultas na parte superior das tabelas externas sincronizadas. Essa mitigação também pode ser aplicada a grupos de segurança Microsoft Entra.

Mais segurança sobre os objetos pode ser gerenciada por meio de esquemas específicos e bloquear o acesso a um esquema específico. A solução alternativa requer Linguagem de Definição de Dados (DDL) extra. Para esse cenário, você pode criar novos bancos de dados, esquemas e exibições sem servidor que apontarão para os dados de tabelas do Spark no ADLS.

O acesso aos dados na conta de armazenamento pode ser gerenciado pela A ou funções regulares de Proprietário/Leitor/Colaborador dos Dados de Blob de Armazenamento dos usuários/grupos do Microsoft Entra. Nas entidades de serviço (aplicativos do Microsoft Entra), use a configuração de ACL.

Note

  • Se você quiser proibir o uso de OPENROWSET nos dados, poderá usar DENY ADMINISTER BULK OPERATIONS to [login@contoso.com]; Para obter mais informações, visite Permissões do servidor DENY.
  • Se você quiser proibir o uso de esquemas específicos, poderá usar DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com]; Para obter mais informações, visite As Permissões de Esquema DENY.

Próximas Etapas 

Para obter mais informações, consulte Autenticação do SQL.