Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo guia você na criação e uso de logins respaldados pelo Microsoft Entra ID (anteriormente Azure Active Directory) dentro do banco de dados virtual master de um pool SQL dedicado Azure Synapse Analytics (anteriormente SQL DW). Pools SQL dedicados nos workspaces do Azure Synapse Analytics não usam servidores SQL lógicos.
Observação
As entidades de segurança do servidor do Microsoft Entra estão atualmente em versão prévia para o Azure Synapse Analytics.
Neste tutorial, você aprenderá como:
- Crie um login Microsoft Entra no banco de dados virtual
master - Criar um usuário mapeado para um login do Microsoft Entra no banco de dados virtual
master - Usar a sintaxe
WITH OBJECT_IDpara nomes de exibição não únicos - Conceder funções de servidor a um usuário do Microsoft Entra
- Desabilitar um logon do Microsoft Entra
Prerequisites
- Um pool SQL dedicado do Azure Synapse Analytics e um banco de dados.
- Autenticação do Microsoft Entra configurada para o Azure Synapse Analytics. Para mais informações, veja Configurar e gerenciar autenticação Microsoft Entra com Azure Synapse Analytics.
- Este artigo instrui você a criar um logon e um usuário do Microsoft Entra dentro do banco de dados
mastervirtual. Somente um administrador do Microsoft Entra pode criar um usuário dentro do banco de dadosmastervirtual, 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 usuário no banco de dados virtualmaster.
Observação
Para organizações que lidam com nomes de exibição não exclusivos na ID do Microsoft Entra (especialmente para entidades de serviço), verifique se você tem as informações de ID de Objeto disponíveis para todas as entidades de serviço para as quais você planeja criar logons. A WITH OBJECT_ID extensão de sintaxe pode ajudar a resolver esses cenários.
Criar um logon do Microsoft Entra
Crie um login para uma conta Microsoft Entra. Neste exemplo, use
bob@contoso.com, que existe no domínio Microsoft Entra chamadocontoso. Você também pode criar um login a partir de um grupo Microsoft Entra ou de um principal de serviço (aplicativos). 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 login de autenticação SQL não pode criar logins do Microsoft Entra.
Dica
Se você encontrar problemas com nomes de exibição não únicos no Microsoft Entra ID, use a
WITH OBJECT_IDextensão sintática. 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 mais informações, veja Considerações sobre o nome.
Usando o SQL Server Management Studio (SSMS), faça login no seu pool SQL dedicado com a conta de administrador do Microsoft Entra.
Expanda Bancos de Dados>Bancos de Dados do Sistema. Clique com o botão direito do mouse 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 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ê vê uma saída semelhante à seguinte:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0O login
bob@contoso.comé criado no banco de dados virtualmaster.
Criar um usuário por meio de um logon do Microsoft Entra
Depois de criar um login Microsoft Entra, crie um usuário Microsoft Entra em nível de banco de dados que mapeie para o login Microsoft Entra no banco de dados virtual
master. Para mostrar como adicionar o usuário a papéis especiais, use nosso exemplo,bob@contoso.com, para criar um usuário no banco de dados virtualmaster. Somente um administrador do Microsoft Entra ou um administrador do servidor SQL pode criar usuários no banco de dadosmastervirtual.Use o banco de dados virtual
master, 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 consulta a seguir.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 logons do Microsoft Entra.Se você precisar criar um usuário diretamente de um provedor externo com um ID de Objeto específico (por exemplo, para resolver problemas de nomes de exibição não únicos), use a seguinte sintaxe:
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ê vê 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. Se você executar a seguinte sintaxe, cria um usuário de banco de dados contido no banco de dados específico ao qual está conectado. 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 Microsoft Entra usando um principal de serviço com um nome de exibição não único. Para mais informações, veja Considerações sobre o nome.
Conceder funções de nível de servidor a logons do Microsoft Entra
Você pode adicionar logins a papéis fixos no nível do servidor, como o papel ##MS_DefinitionReader##, ##MS_ServerStateReader## ou ##MS_ServerStateManager## no banco de dados master.
Observação
As funções no nível do 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. Limpe o cache do 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
Você pode atribuir funções especiais do Azure Synapse Analytics aos usuários no banco de dados virtualmaster.
Para conceder um dos papéis especiais de banco de dados a um usuário, ele deve existir no banco de dados virtual master .
Para adicionar um usuário a uma função, execute 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, grupo ou entidade de serviço do Microsoft Entra no Microsoft Entra ID.
No exemplo a seguir, você cria o usuário bob@contoso.com. Atribua os papéis dbmanager e loginmanager ao usuário.
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ê vê uma saída semelhante à seguinte:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Opcional – Desabilitar um logon
Use a sintaxe DDL ALTER LOGIN (Transact-SQL) para habilitar ou desabilitar um logon do Microsoft Entra em um pool de SQL dedicado.
ALTER LOGIN [bob@contoso.com] DISABLE
Para que as alterações em DISABLE ou ENABLE entrem em vigor imediatamente, limpe o cache de autenticação e o cache do TokenAndPermUserStore usando os seguintes comandos T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Verifique se o login está desativado executando a seguinte consulta:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1