Tutorial: Criar e usar logins do servidor Microsoft Entra

Este artigo orienta-o na criação e utilização de inícios de sessão apoiados pelo Microsoft Entra ID (anteriormente Azure Active Directory) dentro da base de dados virtual master de um pool SQL dedicado Azure Synapse Analytics (anteriormente SQL DW). Pools SQL dedicados nos espaços de trabalho do Azure Synapse Analytics não usam servidores SQL lógicos.

Note

As entidades de segurança de servidor do Microsoft Entra estão atualmente em pré-visualização para o Azure Synapse Analytics.

Neste tutorial, aprenderás como:

  • Crie um login Microsoft Entra virtual na base de dados master
  • Criar um utilizador mapeado para um login do Microsoft Entra no banco de dados virtual master
  • Utilize a sintaxe WITH OBJECT_ID para 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

Prerequisites

  • Um pool SQL dedicado do Azure Synapse Analytics e uma base de dados.
  • Autenticação Microsoft Entra configurada para Azure Synapse Analytics. Para mais informações, consulte Configurar e gerir autenticação Microsoft Entra com Azure Synapse Analytics.
  • Este artigo instrui você sobre como criar um login e usuário do Microsoft Entra dentro do banco de dados de master virtual. Somente um administrador do Microsoft Entra pode criar um usuário dentro do banco de dados de master virtual, 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ção loginmanager pode criar um login, mas não um utilizador dentro da base de dados virtual master.

Note

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

  1. Crie um login para uma conta Microsoft Entra. Neste exemplo, use bob@contoso.com, que existe no domínio Microsoft Entra chamado contoso. Também pode criar um login a partir de um grupo Microsoft Entra ou de um service principal (aplicações). Para obter mais informações, consulte CREATE LOGIN (Transact-SQL).

    Note

    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 login de autenticação SQL não consegue criar logins do Microsoft Entra.

    Tip

    Se encontrar problemas com nomes de exibição não únicos no Microsoft Entra ID, utilize a extensão de sintaxe 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 mais informações, consulte considerações sobre o nome.

  2. Usando o SQL Server Management Studio (SSMS), inicie sessão no seu pool SQL dedicado com a conta de administrador da Microsoft Entra.

  3. Expanda Bases de Dados>Bases de Dados do Sistema. Clique com o botão direito do rato no banco de dados master e selecione Nova Consulta para abrir uma nova janela de consulta no contexto do banco de dados master.

  4. Execute a seguinte consulta:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. Verifique 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%'
    

    Vê uma saída semelhante à seguinte:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  6. O login bob@contoso.com é criado na base de dados virtual master .

Criar usuário a partir de um login do Microsoft Entra

  1. Depois de criar um login Microsoft Entra, crie um utilizador Microsoft Entra ao nível da base de dados que corresponda ao login Microsoft Entra na base de dados virtualmaster. Para mostrar como adicionar o utilizador a papéis especiais, use o nosso exemplo, bob@contoso.com, para criar um utilizador na base de dados virtual master . Somente um administrador do Microsoft Entra ou administrador do servidor SQL pode criar usuários no banco de dados de master virtual.

  2. Use a base de dados virtual master , mas pode voltar a ligar-se a uma base de dados à sua escolha se quiser criar utilizadores noutras bases de dados. Execute a seguinte consulta.

    CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
    

    Tip

    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 precisar de criar um utilizador diretamente a partir de um fornecedor 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'
    
  3. 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%'
    

    Vê uma saída semelhante à seguinte:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Note

A sintaxe existente para criar um usuário do Microsoft Entra sem um login do Microsoft Entra ainda é suportada. Se executares a seguinte sintaxe, crias um utilizador contido na base de dados específica a que estás ligado. Este utilizador não está associado a nenhum login, mesmo que exista um login com o mesmo nome na base de dados virtual master .

Por exemplo, CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Pode criar um início de sessão Microsoft Entra usando um principal de serviço com um nome a apresentar não exclusivo. Para mais informações, consulte considerações sobre o nome.

Conceder funções de nível de servidor a logons do Microsoft Entra

Pode adicionar logins a funções fixas ao nível do servidor, como ##MS_DefinitionReader##, ##MS_ServerStateReader## ou ##MS_ServerStateManager## na master base de dados.

Note

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

Pode atribuir funções especiais para o Azure Synapse Analytics na base de dados virtual aos utilizadoresmaster.

Para conceder um dos papéis especiais de base de dados a um utilizador, este deve existir na base de dados virtual master .

Para adicionar um utilizador 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 utilizador, grupo ou principal de serviço no Microsoft Entra ID.

No exemplo seguinte, cria o utilizador bob@contoso.com. Atribui os papéis dbmanager e loginmanager ao utilizador.

  1. Execute a seguinte consulta:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. 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%'
    

    Vê uma saída semelhante à seguinte:

    DatabaseRoleName       DatabaseUserName
    dbmanager              bob@contoso.com
    loginmanager           bob@contoso.com
    

Opcional - Desativar um login

Utilize a sintaxe DDL ALTER LOGIN (Transact-SQL) para ativar ou desativar um início de sessão do Microsoft Entra num conjunto de SQL dedicado.

ALTER LOGIN [bob@contoso.com] DISABLE

Para fazer com que as alterações DISABLE ou ENABLE entrem em vigor imediatamente, limpe a cache de autenticação e a cache de TokenAndPermUserStore utilizando 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