Como configurar o controle de acesso em objetos sincronizados no pool SQL sem servidor
No Azure Synapse Analytics, os bancos de dados e tabelas do Spark são compartilhados com o pool SQL sem servidor. Os bancos de dados Lake, o Parquet e as tabelas com suporte de CSV criadas com o Spark estão automaticamente disponíveis no pool SQL sem servidor. Esse recurso permite usar o pool 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, os Pipelines do Azure Synapse estão movendo dados do armazenamento local (ou outro) para o Armazenamento do Azure Data Lake. O Spark agora pode enriquecer os dados e criar bancos de dados e tabelas que estão sendo sincronizados com o Synapse SQL sem servidor. Mais tarde, o usuário pode executar consultas ad-hoc sobre os dados enriquecidos ou servi-los para o Power BI, por exemplo.
Acesso completo de administrador (sysadmin)
Depois que esses bancos de dados e tabelas são sincronizados do Spark para o pool SQL sem servidor, essas tabelas externas no pool SQL sem servidor podem ser usadas para acessar os mesmos dados. No entanto, os objetos no pool SQL sem servidor são somente leitura devido à manutenção da consistência com os objetos dos pools do Spark. A limitação faz com que apenas usuários com funções Synapse SQL Administrator ou Synapse Administrator possam acessar esses objetos no pool 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 de terem acesso aos dados na(s) conta(s) de armazenamento subjacente(s).
Como os bancos de dados sincronizados no pool SQL sem servidor são somente leitura, eles não podem ser modificados. Criar um usuário ou dar outras permissões falhará se tentar. 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 SQL sem servidor ao usar o Azure Synapse Link for Dataverse e tabelas de bancos de dados lake.
Acesso não administrativo 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). Este usuário geralmente é 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 os dados através de tabelas externas e aceda aos dados ADLS subjacentes.
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 visualizem dados de todos os objetos no nível do esquema, como tabelas ou exibições. A segurança do acesso aos 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;
Nota
Essas instruções devem ser executadas no banco de dados mestre, pois todas essas são permissões no nível do servidor.
Depois de criar um login e conceder permissões, os usuários podem executar consultas sobre as tabelas externas sincronizadas. Essa atenuação também pode ser aplicada aos grupos de segurança do Microsoft Entra.
Mais segurança nos objetos pode ser gerenciada por meio de esquemas específicos e bloquear o acesso a um esquema específico. A solução alternativa requer 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 das tabelas do Spark no ADLS.
O acesso aos dados na conta de armazenamento pode ser gerenciado por meio de ACL ou funções regulares de Proprietário/Leitor/Colaborador de Dados de Blob de Armazenamento para usuários/grupos do Microsoft Entra. Para Entidades de Serviço (aplicativos Microsoft Entra), certifique-se de usar a configuração da ACL.
Nota
- Se você quiser proibir o uso de OPENROWSET sobre os dados, você pode usar
DENY ADMINISTER BULK OPERATIONS to [login@contoso.com];
Para obter mais informações, visite DENY Server permissions. - Se você quiser proibir o uso de esquemas específicos, você pode usar
DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com];
Para obter mais informações, visite DENY Schema Permissions.
Próximos passos
Para obter mais informações, consulte Autenticação SQL.