Partilhar via


Autenticação SQL no Azure Synapse Analytics

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

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

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

A autenticação SQL permite que aplicativos herdados se conectem ao Azure Synapse SQL de forma familiar, com um 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 SQL. O Azure Synapse Analytics dá suporte à desativação da autenticação local, como a autenticação SQL, durante e após a criação do espaço de trabalho. Uma vez desativada, a autenticação local pode ser ativada a qualquer momento por usuários autorizados. Para obter mais informações sobre a autenticação somente Microsoft Entra, consulte Desabilitando a autenticação local no Azure Synapse Analytics.

Contas administrativas

Há duas contas administrativas (SQL admin username e Microsoft Entra admin) que atuam como administradores. Para identificar essas contas de administrador para seus pools SQL, abra o portal do Azure e navegue até a guia Propriedades do seu espaço de trabalho Synapse.

Administradores do SQL Server

  • Nome de usuário do administrador do SQL

    Ao criar um Azure Synapse Analytics, você deve nomear um logon de administrador do servidor. O SQL Server cria essa conta como um logon no master banco de dados. Liga-se através da autenticação do SQL Server (nome de utilizador e palavra-passe). Só pode existir uma destas contas.

  • Microsoft Entra admin

    Uma conta do Microsoft Entra, uma conta individual ou de grupo de segurança, também pode ser configurada como administrador. É opcional configurar um administrador do Microsoft Entra, mas um administrador do Microsoft Entra deve ser configurado se você quiser usar contas do Microsoft Entra para se conectar ao Synapse SQL.

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

O nome de usuário de administrador do SQL e as contas de 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 ligar a uma base de dados de utilizador, as outras contas têm de ser o proprietário da base de dados ou ter uma conta de utilizador na base de dados de utilizador.)
  • Estas contas introduzem bases de dados de utilizador como o utilizador dbo e têm todas as permissões nas bases de dados de utilizador. (O proprietário de uma base de dados de utilizador também introduz a base de dados como o utilizador dbo.)
  • Não insira o master banco de dados como usuário dbo e tenha permissões limitadas no master banco de dados.
  • Não são membros da função de servidor fixa padrão do SQL Serversysadmin, que não está disponível no Banco de dados SQL.
  • Pode criar, alterar e descartar bancos de dados, logons, usuários no banco de dados e regras de firewall IP no nível do master servidor.
  • Pode adicionar e remover membros para as dbmanager funções e loginmanager .
  • Pode visualizar a tabela do sys.sql_logins sistema.

Nota

Se um usuário estiver configurado como administrador do Microsoft Entra e administrador do Synapse e, em seguida, removido da função de administrador do Microsoft Entra, o usuário perderá o acesso aos pools SQL dedicados no Synapse. Eles devem ser removidos e, em seguida, adicionados à função Synapse Administrator para recuperar o acesso a pools SQL dedicados.

Para gerenciar os usuários que têm acesso ao pool SQL sem servidor, você pode usar as instruções abaixo.

Para criar um logon no pool 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 existe, você pode criar usuários nos bancos de dados individuais dentro do ponto de extremidade do pool SQL sem servidor e conceder as permissões necessárias a esses usuários. Para criar um usuário, você pode usar 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, você poderá usar a sintaxe regular do SQL Server para conceder direitos.

Utilizadores não administradores

Geralmente, as contas que não são de administrador não precisam de acesso ao master banco de dados. Utilize a instrução CREATE USER (Transact-SQL) para criar os utilizadores de base de dados contidos na base de dados ao nível da base de dados.

O usuário pode ser um usuário de banco de dados contido de autenticação do Microsoft Entra (se você tiver configurado seu ambiente para autenticação do Microsoft Entra), ou um usuário de banco de dados contido 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 utilizadores, ligue à base de dados e execute instruções semelhantes aos exemplos seguintes:

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

Inicialmente, apenas um dos administradores ou o proprietário da base de dados pode criar utilizadores. Para permitir que outros utilizadores criem utilizadores novos, conceda-lhes a permissão ALTER ANY USER, mediante uma instrução como:

GRANT ALTER ANY USER TO Mary;

Para dar aos usuários adicionais controle total do banco de dados, torne-os membros da função de banco de dados fixa db_owner .

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

ALTER ROLE db_owner ADD MEMBER Mary;

No pool SQL dedicado, use EXEC sp_addrolemember.

EXEC sp_addrolemember 'db_owner', 'Mary';

Nota

Uma razão comum para criar um usuário de banco de dados com base em um login de servidor é para usuários que precisam de acesso a vários bancos de dados. Como os usuários do 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, pois o usuário deve se lembrar de cada senha para cada banco de dados, e isso pode se tornar insustentável ao ter que alterar várias senhas para muitos bancos de dados.

Grupos e funções

A gestão de acessos eficaz utiliza permissões atribuídas a grupos e funções em vez de utilizadores individuais.

  • Ao usar a autenticação do Microsoft Entra, coloque os usuários do Microsoft Entra em um grupo do Microsoft Entra. Crie um utilizador de base de dados contido para o grupo. Coloque um ou mais utilizadores de base de dados numa função de base de dados e, em seguida, atribua permissões à função de base de dados.

  • Ao utilizar a autenticação do SQL Server, crie utilizadores de base de dados contida na base de dados. Coloque um ou mais utilizadores de base de dados numa função de base de dados e, em seguida, atribua permissões à função de base de dados.

As funções de base de dados podem ser as funções incorporadas, tais como db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter e db_denydatareader. db_owner é, geralmente, utilizada para conceder permissão total apenas a alguns utilizadores. As outras funções de base de dados fixas são úteis para colocar bases de dados simples em desenvolvimento rapidamente, mas não são recomendadas para a maioria das bases de dados de produção.

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

É muito melhor usar a instrução CREATE ROLE para criar suas próprias funções de banco de dados definidas pelo usuário e conceder cuidadosamente a cada função o mínimo de permissões necessárias para a necessidade comercial. Quando um utilizador é membro de várias funções, agrega as permissões de todas essas funções.

Permissões

Existem mais de 100 permissões que podem ser individualmente concedidas ou negadas na Base de Dados SQL. Muitas destas permissões são aninhadas. Por exemplo, a permissão UPDATE num esquema inclui a permissão UPDATE em cada tabela dentro desse esquema. Tal como na maioria dos sistemas de permissões, a recusa de uma permissão sobrepõe-se a uma atribuição.

Devido à natureza aninhada e ao número de permissões, desenhar um sistema de permissões que proteja as bases de dados adequadamente pode envolver um cuidadoso estudo.

Comece com a lista de permissões em Permissões (Mecanismo de Banco de Dados) e revise o gráfico de tamanho de cartaz 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:

  • Você deve estar conectado ao master banco de dados ao executar as CREATE/ALTER/DROP DATABASE instruções.
  • O usuário do banco de dados correspondente ao login de administrador do servidor não pode ser alterado ou descartado.
  • O administrador do servidor será desativado se a autenticação somente Microsoft Entra estiver habilitada.
  • O inglês dos E.U.A. é o idioma predefinido do início de sessão do Administrador de servidor.
  • Somente os administradores (login de administrador do servidor ou administrador do Microsoft Entra) e os membros da função de banco de dados dbmanager no master banco de dados têm permissão para executar as CREATE DATABASE instruções and DROP DATABASE .
  • Você deve estar conectado ao master banco de dados ao executar as CREATE/ALTER/DROP LOGIN instruções. No entanto, o uso de logins é desencorajado. Utilize os utilizadores de base de dados contida. Para obter mais informações, veja Contained Database Users - Making Your Database Portable (Utilizadores de Base de Dados Contidos – Tornar a Sua Base de Dados Portátil).
  • Para ligar a uma base de dados do utilizador, tem de fornecer o nome da base de dados na cadeia de ligação.
  • Somente o logon principal no nível do servidor e os membros da função de banco de dados loginmanager no master banco de dados têm permissão para executar as CREATE LOGINinstruções , ALTER LOGINe DROP LOGIN .
  • Ao executar as CREATE/ALTER/DROP LOGIN instruções e CREATE/ALTER/DROP DATABASE em um aplicativo ADO.NET, o uso de comandos parametrizados não é permitido. Para obter mais informações, consulte Comandos e Parâmetros.
  • Ao executar a CREATE USER com a opção FOR/FROM LOGIN, tem de ser a única instrução num batch do Transact-SQL.
  • Ao executar a ALTER USER com a opção WITH LOGIN, tem de ser a única instrução num batch do Transact-SQL.
  • CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP USER instruções não são suportadas quando a autenticação somente Microsoft Entra-Entra, está habilitada para o espaço de trabalho Azure Synapse.
  • Para CREATE/ALTER/DROP, um utilizador necessita da permissão ALTER ANY USER na base 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 para ou dessa função de banco de dados, o seguinte erro pode ocorrer: Usuário ou função 'Nome' não existe neste banco de dados. Este erro ocorre porque o usuário não está visível para o proprietário. Para resolver este problema, conceda uma permissão de VIEW DEFINITION ao proprietário da função.

Para obter mais informações, veja Contained Database Users - Making Your Database Portable (Utilizadores de Base de Dados Contidos – Tornar a Sua Base de Dados Portátil).