Tutorial: criar e usar logons de servidor do Microsoft Entra
Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics (somente pools de SQL dedicados)
Este artigo orienta você na criação e uso de logons apoiados pelo Microsoft Entra ID (anteriormente Azure Active Directory) no banco de dados virtual master
do Azure SQL.
Neste tutorial, você aprenderá a:
- Criar um logon do Microsoft Entra no banco de dados
master
virtual com a nova extensão de sintaxe para Banco de Dados SQL do Azure - Criar um usuário mapeado para um logon do Microsoft Entra no banco de dados
master
virtual - Conceder funções de servidor a um usuário do Microsoft Entra
- Desabilitar um logon do Microsoft Entra
Observação
As entidades de segurança (logons) do servidor Microsoft Entra estão atualmente em visualização pública para Banco de Dados SQL do Azure. A Instância Gerenciada de SQL do Azure já pode utilizar logons do Microsoft Entra.
Pré-requisitos
- Um Banco de Dados SQL ou uma Instância Gerenciada de SQL com um banco de dados. Confira Início Rápido: criar um banco de dados individual do Banco de Dados SQL do Azure se você ainda não tiver criado um Banco de Dados SQL do Azure ou Início Rápido: criar uma Instância Gerenciada de SQL do Azure.
- Configuração de autenticação do Microsoft Entra para o Banco de Dados SQL ou a Instância Gerenciada de SQL. Para obter mais informações, consulte Configurar e gerenciar a autenticação do Microsoft Entra com o SQL do Azure.
- Este artigo instrui você a criar um logon e um usuário do Microsoft Entra dentro do banco de dados
master
virtual. Somente um administrador do Microsoft Entra pode criar um usuário dentro do banco de dadosmaster
virtual, portanto, recomendamos que você use a conta de administrador do Microsoft Entra ao passar por este tutorial. Uma entidade de segurança do Microsoft Entra com a funçãologinmanager
pode criar um logon, mas não um usuário no banco de dadosmaster
virtual.
Criar um logon do Microsoft Entra
Crie um logon do Banco de Dados SQL do Azure para uma conta do Microsoft Entra. Em nosso exemplo, vamos usar o
bob@contoso.com
que existe em nosso domínio do Microsoft Entra chamadocontoso
. Um logon também pode ser criado de um grupo do Microsoft Entra ou de uma entidade de serviço (aplicativos). Por exemplo,mygroup
é um grupo do Microsoft Entra que consiste em contas do Microsoft Entra que são membros desse grupo. Para obter mais informações, confira CRIAR LOGON (Transact-SQL).Observação
O primeiro logon do Microsoft Entra deve ser criado pelo administrador do Microsoft Entra. O administrador do Microsoft Entra pode ser um usuário ou um grupo do Microsoft Entra. Um logon do SQL não pode criar logons do Microsoft Entra.
Usando o SSMS (SQL Server Management Studio), faça logon em seu Banco de Dados SQL com a conta de administrador do Microsoft Entra, configurada para o servidor.
Execute a seguinte consulta:
Use master CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Verifique o logon criado em
sys.server_principals
. Execute a seguinte consulta:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'
Você veria uma saída semelhante à seguinte:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0
O logon
bob@contoso.com
foi criado no banco de dadosmaster
virtual.
Criar um usuário por meio de um logon do Microsoft Entra
Agora que criamos um logon do Microsoft Entra, podemos criar um usuário do Microsoft Entra no nível do banco de dados que é mapeado para o logon do Microsoft Entra no banco de dados virtual
master
. Continuaremos a usar nosso exemplo,bob@contoso.com
para criar um usuário no banco de dadosmaster
virtual, pois queremos demonstrar a adição do usuário a funções especiais. Somente um administrador do Microsoft Entra ou um administrador do servidor SQL pode criar usuários no banco de dadosmaster
virtual.Estamos usando o banco de dados
master
virtual, mas você poderá alternar para um banco de dados de sua escolha se quiser criar usuários em outros bancos de dados. Execute a consulta a seguir.Use master CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Dica
Embora não seja necessário usar aliases de usuário do Microsoft Entra (por exemplo,
bob@contoso.com
), é uma melhor prática usar o mesmo alias para usuários e logons do Microsoft Entra.Verifique o usuário criado em
sys.database_principals
. Execute a seguinte consulta:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'
Você veria uma saída semelhante à seguinte:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Observação
A sintaxe existente para criar um usuário do Microsoft Entra sem um logon do Microsoft Entra ainda tem suporte. A execução da sintaxe a seguir cria um usuário contido no banco de dados no banco de dados específico ao qual você está conectado. É importante ressaltar que esse usuário não está associado a nenhum login, mesmo que exista um login de mesmo nome no banco de dados virtual master
.
Por exemplo, CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
.
Você pode criar um logon do Microsoft Entra usando uma entidade de serviço com um nome de exibição não exclusivo. Para obter mais informações, consulte Logins e usuários do Microsoft Entra com nomes de exibição não exclusivos
Conceder funções de nível de servidor a logons do Microsoft Entra
Você pode adicionar logon às funções fixas no servidor, como as funções ##MS_DefinitionReader##, ##MS_ServerStateReader## ou ##MS_ServerStateManager##.
Observação
As funções do nível de servidor mencionadas aqui não têm suporte para grupos do Microsoft Entra.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
As permissões não são efetivas até que o usuário se reconecte. Liberar o cache DBCC também:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Para verificar quais logons do Microsoft Entra fazem parte das funções no nível do servidor, execute a seguinte consulta:
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
Conceder funções especiais a usuários do Microsoft Entra
Funções especiais para Banco de Dados SQL podem ser atribuídas aos usuários no banco de dados master
virtual.
Para conceder uma das funções especiais de banco de dados a um usuário, este usuário deve existir no banco de dados master
virtual.
Para adicionar um usuário a uma função, você pode executar a seguinte consulta:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Para remover um usuário de uma função, execute a seguinte consulta:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object
pode ser um usuário, um grupo ou uma entidade de serviço do Microsoft Entra no Microsoft Entra ID.
Em nosso exemplo, nós criamos o usuário bob@contoso.com
. Vamos dar ao usuário as funções dbmanager e loginmanager.
Execute a seguinte consulta:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
Verifique a atribuição de função de banco de dados executando a seguinte consulta:
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R'and DP2.name like 'bob%'
Você veria uma saída semelhante à seguinte:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Opcional – Desabilitar um logon
A sintaxe DDL ALTER LOGIN (Transact-SQL) pode ser usada para habilitar ou desabilitar um logon do Microsoft Entra no Banco de Dados SQL do Azure.
ALTER LOGIN [bob@contoso.com] DISABLE
Para que as alterações DISABLE
ou ENABLE
entre em vigor imediatamente, o cache de autenticação e o cache TokenAndPermUserStore devem ser limpos usando os seguintes comandos T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Verifique se o logon foi desabilitado executando a seguinte consulta:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Um caso de uso para isso seria permitir somente leitura em réplicas geográficas, mas negar a conexão em um servidor primário.