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 autorizar o Synapse SQL, você pode usar dois tipos de autorização:
- Autorização do Microsoft Entra
- Autorização de SQL
A autorização SQL permite que aplicativos herdados se conectem ao Azure Synapse SQL de uma maneira familiar. 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 (administrador do SQL, nome de usuário e administrador do SQL Ative Directory) 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.
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.Administrador do SQL Ative Directory
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 Ative Directory do SQL 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 utilizadordbo
.) - Não insira o
master
banco de dados como usuáriodbo
e tenha permissões limitadas nomaster
banco de dados. - Não são membros da função de servidor fixa padrão do SQL Server
sysadmin
, 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 eloginmanager
. - Pode visualizar a tabela do
sys.sql_logins
sistema.
Nota
Se um usuário estiver configurado como administrador do Ative Directory e administrador do Synapse e, em seguida, removido da função de administrador do Ative Directory, 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 asCREATE/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 asCREATE DATABASE
instruções andDROP DATABASE
. - Você deve estar conectado ao
master
banco de dados ao executar asCREATE/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 asCREATE LOGIN
instruções ,ALTER LOGIN
eDROP LOGIN
. - Ao executar as
CREATE/ALTER/DROP LOGIN
instruções eCREATE/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çãoFOR/FROM LOGIN
, tem de ser a única instrução num batch do Transact-SQL. - Ao executar a
ALTER USER
com a opçãoWITH LOGIN
, tem de ser a única instrução num batch do Transact-SQL. CREATE/ALTER/DROP LOGIN
eCREATE/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ãoALTER 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.
Próximos passos
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).