Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Azure Synapse Analytics (somente pools SQL dedicados)
Este artigo orienta você pela criação e utilização de logons apoiados pela ID do Microsoft Entra (anteriormente Azure Ative Directory) no banco de dados de master virtual do Azure SQL.
Neste tutorial, você aprenderá a:
- Criar um logon do Microsoft Entra no banco de dados de
mastervirtual com a nova extensão de sintaxe para o Banco de Dados SQL do Azure - Criar um utilizador mapeado para um login do Microsoft Entra no banco de dados virtual
master - Utilize a sintaxe
WITH OBJECT_IDpara nomes de exibição não exclusivos. - Conceder funções de servidor a um usuário do Microsoft Entra
- Desativar um login do Microsoft Entra
Observação
Os principais do servidor Microsoft Entra (logons) estão atualmente em visualização pública para a Base de Dados SQL do Azure. A Instância Gerenciada do SQL do Azure e o SQL Server 2022 e posterior já podem utilizar logons do Microsoft Entra em disponibilidade geral.
Pré-requisitos
- Um Banco de Dados SQL ou uma Instância Gerenciada SQL com um banco de dados. Consulte Guia de início rápido: criar um banco de dados único do Banco de Dados SQL do Azure se você ainda não criou um Banco de Dados SQL do Azure ou Guia de início rápido: criar uma instância gerenciada do SQL do Azure.
- Autenticação do Microsoft Entra configurada para Banco de Dados SQL ou Instância Gerenciada SQL. Para obter mais informações, consulte Configurar e gerir a autenticação do Microsoft Entra com o Azure SQL.
- Este artigo instrui você sobre como criar um login e usuário do Microsoft Entra dentro do banco de dados de
mastervirtual. Somente um administrador do Microsoft Entra pode criar um usuário dentro do banco de dados demastervirtual, portanto, recomendamos que você use a conta de administrador do Microsoft Entra ao passar por este tutorial. Uma entidade do Microsoft Entra com a funçãologinmanagerpode criar um login, mas não um utilizador dentro da base de dados virtualmaster.
Observação
Para organizações que lidam com nomes de exibição não exclusivos no Microsoft Entra ID (particularmente para entidades de serviço), certifique-se de ter as informações de ID do objeto disponíveis para todas as entidades de serviço para as quais planeja criar logons. A WITH OBJECT_ID extensão de sintaxe pode ajudar a resolver esses cenários.
Criar login do Microsoft Entra
Crie um logon do Banco de Dados SQL do Azure para uma conta do Microsoft Entra. Em nosso exemplo, usaremos
bob@contoso.comque existe em nosso domínio Microsoft Entra chamadocontoso. Um login também pode ser criado a partir de um grupo do Microsoft Entra ou principal de serviço (aplicativos). Por exemplo,mygroupé um grupo do Microsoft Entra composto por contas que são membros desse grupo. Para obter mais informações, consulte CREATE LOGIN (Transact-SQL).Observação
O primeiro login do Microsoft Entra deve ser criado pelo administrador do Microsoft Entra. O administrador do Microsoft Entra pode ser um usuário ou grupo do Microsoft Entra. Um logon SQL não pode criar logons do Microsoft Entra.
Dica
Se se deparar com problemas relacionados a nomes de apresentação não exclusivos no Microsoft Entra ID, pode usar a sintaxe da extensão
WITH OBJECT_ID. Esse recurso é particularmente útil para entidades de serviço com nomes de exibição duplicados. Por exemplo:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Para obter mais informações, consulte Logins do Microsoft Entra e utilizadores com nomes de exibição não únicos.
Usando SQL Server Management Studio (SSMS), inicie sessão na sua Base de Dados SQL com a conta de administrador do Microsoft Entra configurada para o servidor.
Expanda Bases de Dados>Bases de Dados do Sistema. Clique com o botão direito do rato no banco de dados
mastere selecione Nova Consulta para abrir uma nova janela de consulta no contexto do banco de dadosmaster.Execute a seguinte consulta:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOVerifique o login 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 0O login
bob@contoso.comfoi criado na base de dados virtualmaster.
Criar usuário a partir de um login do Microsoft Entra
Agora que criámos um login do Microsoft Entra, podemos criar um utilizador do Microsoft Entra ao nível da base de dados que está mapeado para o login do Microsoft Entra na base de dados virtual
master. Continuaremos a usar nosso exemplo,bob@contoso.compara criar um usuário no banco de dados demastervirtual, pois queremos demonstrar a adição do usuário a funções especiais. Somente um administrador do Microsoft Entra ou administrador do servidor SQL pode criar usuários no banco de dados demastervirtual.Ainda estamos usando o banco de dados de
mastervirtual, mas você pode se reconectar a um banco de dados de sua escolha se quiser criar usuários em outros bancos de dados. Execute a seguinte consulta.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 prática recomendada usar o mesmo alias para usuários do Microsoft Entra e logins do Microsoft Entra.Se você precisar criar um usuário diretamente de um provedor externo com uma ID de objeto específica (por exemplo, para resolver problemas de nome de exibição não exclusivo), você também pode usar:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'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 login do Microsoft Entra ainda é suportada. A execução da sintaxe a seguir cria um usuário contido 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 com o mesmo nome no banco de dados virtual master .
Por exemplo, CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Você pode criar um login do Entra da Microsoft usando uma entidade de serviço com um nome de apresentação que não é único. Para obter mais informações, consulte logins do Microsoft Entra e usuários com nomes de exibição não exclusivos
Conceder funções de nível de servidor a logons do Microsoft Entra
Você pode adicionar logons ao funções fixas de nível de servidor, como a ##MS_DefinitionReader##, ##MS_ServerStateReader##ou função de ##MS_ServerStateManager## no banco de dados master.
Observação
As funções de nível de servidor mencionadas aqui não são suportadas 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. Libere o cache DBCC também:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Para verificar quais logons do Microsoft Entra fazem parte de 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 para usuários do Microsoft Entra
Funções especiais para do Banco de dados SQL podem ser atribuídas a usuários no banco de dados de master virtual.
Para conceder uma das funções especiais de banco de dados a um usuário, o usuário deve existir no banco de dados de 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 utilizador, grupo ou principal de serviço no Microsoft Entra ID.
No nosso exemplo, criámos o utilizador bob@contoso.com. Vamos dar ao utilizador os papéis de dbmanager e de 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 - Desativar um login
A sintaxe ALTER LOGIN (Transact-SQL) DDL 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 de
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Verifique se o login foi desativado 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.