Compartilhar via


Autenticação do SQL no Azure Synapse Analytics

O Azure Synapse Analytics tem dois fatores forma do SQL que permitem controlar o consumo de recursos. Este artigo explicará como os dois fatores forma controlam a autenticação do usuário.

Para autenticar no SQL do Synapse, você pode usar duas opções:

  • autenticação do Microsoft Entra
  • Autenticação do SQL

A autenticação SQL permite que aplicativos legados se conectem ao SQL do Azure Synapse de uma maneira conhecida, com nome de usuário e senha. No entanto, a autenticação do Microsoft Entra permite que você gerencie centralmente o acesso aos recursos do Azure Synapse, como pools de SQL. O Azure Synapse Analytics dá suporte à desabilitação da autenticação local, como autenticação do SQL, durante e após a criação do workspace. Depois de desabilitada, a autenticação local pode ser habilitada a qualquer momento por usuários autorizados. Para obter mais informações sobre a autenticação somente do Microsoft Entra, consulte Como desabilitar a autenticação local no Azure Synapse Analytics.

Contas administrativas

Há duas contas administrativas (nome de usuário de administrador SQL e administrador do Microsoft Entra) que atuam como administradores. Para identificar essas contas de administrador dos pools de SQL, abra o portal do Azure e navegue até a guia Propriedades do workspace do Synapse.

Administradores do SQL Server

  • Nome de usuário administrador do SQL

    Ao criar um Azure Synapse Analytics, você precisará nomear um Logon de administrador do servidor. O servidor SQL cria essa conta como um logon no banco de dados master. Essa conta é conectada usando a autenticação do SQL Server (nome de usuário e senha). Só pode existir uma dessas contas.

  • Administrador do Microsoft Entra

    Uma conta do Microsoft Entra, seja ela individual ou de grupo de segurança, também pode ser configurada como um administrador. A configuração de um administrador do Microsoft Entra é opcional, mas é necessário configurar um administrador do Microsoft Entra a fim de usar as contas do Microsoft Entra para se conectar ao SQL do Synapse.

    • A conta de administrador do Microsoft Entra controla o acesso aos pools de SQL dedicados, enquanto as funções RBAC do Azure Synapse são usadas para controlar o acesso aos pools sem servidor, por exemplo, com a função Administrador do Azure Synapse e Administrador do SQL do Synapse.

As contas nome de usuário de administrador SQL e administrador do Microsoft Entra têm as seguintes características:

  • São as únicas contas que podem se conectar automaticamente a qualquer Banco de Dados SQL no servidor. (Para se conectar a um banco de dados do usuário, outras contas devem ser o proprietário do banco de dados, ou ter uma conta de usuário do banco de dados do usuário.)
  • Essas contas inserem bancos de dados de usuário, pois o usuário dbo e elas têm todas as permissões nos bancos de dados do usuário. (O proprietário de um banco de dados do usuário também insere o banco de dados como o usuário dbo.)
  • Não insira o banco de dados master como o usuário dbo e tenha permissões limitadas no banco de dados master.
  • Não são membros da função de servidor fixa sysadmin padrão do SQL Server, que não está disponível no Banco de Dados SQL.
  • É possível criar, alterar e remover bancos de dados, logons, usuários no banco de dados master e nas regras de firewall de IP de nível de servidor.
  • Podem adicionar e remover membros das funções dbmanager e loginmanager.
  • Podem exibir a tabela do sistema sys.sql_logins.

Observação

Se um usuário estiver configurado como administrador do Microsoft Entra e do Synapse e for removido da função no Microsoft Entra, ele perderá o acesso aos pools de SQL dedicados no Synapse. Para recuperar o acesso a esses pools de SQL dedicados, ele deve ser removido e adicionado novamente com a função de administrador do Synapse.

Para gerenciar o acesso dos usuários ao pool de SQL sem servidor, use as instruções abaixo.

Para criar um logon para o pool de SQL sem servidor, use a seguinte sintaxe:

CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;

Quando o logon for criado, crie usuários nos bancos de dados individuais dentro do ponto de extremidade do pool de SQL sem servidor e conceda as permissões necessárias a esses usuários. Para criar um usuário, use a seguinte sintaxe:

CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Depois que o logon e o usuário forem criados, use a sintaxe convencional do SQL Server para conceder direitos.

Usuários não administradores

Em geral, as contas que não são de administrador não precisam ter acesso ao banco de dados master. Crie usuários do banco de dados independente no nível do banco de dados usando a instrução CREATE USER (Transact-SQL) .

O usuário pode ser usuário de banco de dados independente de autenticação no Microsoft Entra (se você tiver configurado o ambiente para autenticação do Microsoft Entra), um usuário de banco de dados independente de autenticação do SQL Server ou um usuário de autenticação do SQL Server com base em um logon de autenticação do SQL Server (criado na etapa anterior).

Para criar usuários, conectar-se ao banco de dados e executar instruções semelhantes aos exemplos a seguir:

CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Inicialmente, apenas um dos administradores ou o proprietário do banco de dados pode criar usuários. Para autorizar que outros usuários criem novos usuários, conceda ao usuário selecionado a permissão ALTER ANY USER usando uma instrução como:

GRANT ALTER ANY USER TO Mary;

Para conceder a outros usuários o controle total do banco de dados, torne-os membros da função do banco de dados fixa db_owner.

No Banco de Dados SQL do Azure ou no Azure Synapse sem servidor, use a instrução ALTER ROLE.

ALTER ROLE db_owner ADD MEMBER Mary;

No pool de SQL dedicado, use EXEC sp_addrolemember.

EXEC sp_addrolemember 'db_owner', 'Mary';

Observação

Um motivo comum para criar um usuário de banco de dados com base em um logon de servidor é destiná-lo aos usuários que precisam ter acesso a vários bancos de dados. Como os usuários de banco de dados contidos são entidades individuais, cada banco de dados mantém seu próprio usuário e sua própria senha. Isso pode causar sobrecarga, já que o usuário deve lembrar-se de cada senha para cada banco de dados e isso poderá tornar-se insustentável quando for necessário alterar várias senhas para muitos bancos de dados.

Grupos e funções

O gerenciamento de acesso eficiente usa as permissões atribuídas a grupos e funções, em vez de usuários individuais.

  • Ao usar a autenticação do Microsoft Entra, coloque os usuários do Microsoft Entra em um grupo do Microsoft Entra. Crie um usuário de banco de dados independente para o grupo. Coloque um ou mais usuários de banco de dados em uma função de banco de dados e então atribua permissões à função de banco de dados.

  • Ao usar a autenticação do SQL Server, crie usuários de banco de dados independentes no banco de dados. Coloque um ou mais usuários de banco de dados em uma função de banco de dados e então atribua permissões à função de banco de dados.

As funções do banco de dados podem ser funções internas, como db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter e db_denydatareader. db_owner é usada normalmente para conceder permissão total a apenas alguns usuários. As outras funções fixas de banco de dados são úteis para mover rapidamente um banco de dados simples para desenvolvimento, mas não são recomendadas para a maioria dos bancos de dados de produção.

Por exemplo, a função do banco de dados fixa db_datareader concede acesso de leitura a todas as tabelas no banco de dados, sendo, em geral, mais do que é estritamente necessário.

É muito melhor usar a instrução CREATE ROLE para criar suas funções do banco de dados definidas pelo usuário e conceder cuidadosamente a cada função as permissões mínimas necessárias para o negócio. Quando um usuário for membro de várias funções, ele agregará as permissões de todas elas.

Permissões

Há mais de 100 permissões que podem ser concedidas ou negadas individualmente no Banco de Dados SQL. Muitas dessas permissões são aninhadas. Por exemplo, a permissão UPDATE em um esquema inclui a permissão UPDATE em cada tabela dentro desse esquema. Assim como ocorre na maioria dos sistemas de permissão, a negação de uma permissão substitui uma concessão.

Devido à natureza aninhada e ao número de permissões, talvez seja necessário realizar um estudo cuidadoso para criar um sistema de permissões apropriado a fim de proteger corretamente o banco de dados.

Comece com a lista de permissões em Permissões (Mecanismo do Banco de Dados) e revise o gráfico com tamanho de pôster das permissões do mecanismo de banco de dados.

Considerações e restrições

Ao gerenciar logons e usuários no Banco de Dados SQL, considere os seguintes pontos:

  • É necessário estar conectado ao banco de dados master ao executar as instruções CREATE/ALTER/DROP DATABASE.
  • O usuário de banco de dados correspondente para o logon do Administrador do servidor não pode ser alterado nem descartado.
  • O administrador do servidor será desabilitado, se a autenticação somente do Microsoft Entra estiver habilitada.
  • O inglês (EUA) é o idioma padrão do logon do Administrador do servidor.
  • Somente os administradores (logon do administrador do servidor ou do administrador do Microsoft Entra) e os membros da função dbmanager de banco de dados no banco de dados master têm permissão para executar as instruções CREATE DATABASE e DROP DATABASE.
  • Você precisa estar conectado ao banco de dados master ao executar as instruções CREATE/ALTER/DROP LOGIN. No entanto, não é recomendado usar logons. Utilize os usuários de bancos de dados independentes. Para obter mais informações, consulte Usuários do banco de dados independente – Tornando o banco de dados portátil.
  • Para se conectar a um banco de dados do usuário, é necessário fornecer o nome do banco de dados na cadeia de conexão.
  • Somente o logon da entidade de segurança no nível do servidor e os membros da função loginmanager do banco de dados no banco de dados master têm permissão para executar as instruções CREATE LOGIN, ALTER LOGIN e DROP LOGIN.
  • Ao executar as instruções CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP DATABASE em um aplicativo do ADO.NET, o uso de comandos parametrizados não é permitido. Para obter mais informações, veja Comandos e parâmetros.
  • Ao executar a instrução CREATE USER com a opção FOR/FROM LOGIN, ela deve ser a única instrução em um lote do Transact-SQL.
  • Ao executar a instrução ALTER USER com a opção WITH LOGIN, ela deve ser a única instrução em um lote do Transact-SQL.
  • Não há suporte para as instruções CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP USER quando a autenticação somente do Microsoft Entra está habilitada para o workspace do Azure Synapse.
  • Para o CREATE/ALTER/DROP, um usuário requer a permissão ALTER ANY USER no banco de dados.
  • Quando o proprietário de uma função de banco de dados tenta adicionar ou remover outro usuário de banco de dados de ou para essa função de banco de dados, pode ocorrer o seguinte erro: O usuário ou a função “Nome” não existe neste banco de dados. O erro ocorre porque o usuário não está visível para o proprietário. Para resolver esse problema, conceda ao proprietário da função a permissão VIEW DEFINITION no usuário.

Para obter mais informações, consulte Usuários de bancos de dados independentes – Tornando seu banco de dados portátil.