Configure e gere a autenticação Microsoft Entra com Azure Synapse Analytics

Este artigo mostra-lhe como usar o Microsoft Entra ID para autenticação com o Azure Synapse Analytics.

Note

Os principais de servidor do Microsoft Entra estão atualmente em pré-visualização para o Azure Synapse Analytics.

Prerequisites

Para utilizar autenticação Microsoft Entra com Azure Synapse Analytics, precisa dos seguintes pré-requisitos:

  • Um locatário Microsoft Entra povoado com utilizadores e grupos.
  • Um espaço de trabalho existente no Azure Synapse ou um pool SQL dedicado independente.

Crie e configure um tenant Microsoft Entra

Antes de poder configurar a autenticação Microsoft Entra para Azure Synapse Analytics, precisa de criar um tenant Microsoft Entra e preenchê-lo com utilizadores e grupos. Pode gerir os tenants do Microsoft Entra inteiramente no Azure ou utilizá-los para a federação de um Domínio do Active Directory Service no local.

Para obter mais informações, consulte:

Configurar o administrador do Microsoft Entra

Para usar a autenticação Microsoft Entra, o seu recurso Azure Synapse precisa de um administrador Microsoft Entra.

Também pode configurar o administrador do Microsoft Entra quando criar o recurso. Se já tem um administrador configurado, salte esta secção.

Espaço de trabalho do Azure Synapse

Para um espaço de trabalho no Azure Synapse, configure o administrador do Microsoft Entra nesse espaço de trabalho. Para mais informações, consulte Estrutura de administrador.

Pool SQL dedicado autónomo

Quando defines o administrador do Microsoft Entra, ativas a autenticação Microsoft Entra para o servidor lógico que aloja um pool SQL dedicado autónomo. Pode definir o administrador usando o portal Azure, PowerShell, CLI do Azure ou APIs REST.

No portal Azure, pode encontrar o nome do servidor lógico

  • No campo nome do servidor na página Overview do seu pool SQL dedicado independente em Azure Synapse Analytics.

Para definir o administrador do Microsoft Entra para o seu servidor lógico no portal do Azure, siga estes passos:

  1. No painel do portal Azure Diretórios + subscrições painel, escolha o diretório que contém o seu recurso Azure Synapse como Diretório atual.

  2. Procura por servidores SQL e depois seleciona o servidor lógico para o teu pool SQL dedicado para abrir o painel do servidor SQL .

  3. No painel SQL server do seu servidor lógico, selecione Microsoft Entra ID em Settings para abrir o painel Microsoft Entra ID.

  4. No painel Microsoft Entra ID, selecione Set admin para abrir o painel Microsoft Entra ID.

  5. O painel Microsoft Entra ID mostra todos os utilizadores, grupos e aplicações no seu diretório atual e permite-lhe pesquisar por nome, alias ou ID. Encontre a identidade desejada para o administrador do Microsoft Entra e selecione-a, depois selecione Select para fechar o painel.

  6. No topo da página Microsoft Entra ID do seu servidor lógico, selecione Save.

    O ID do Objeto é exibido ao lado do nome do administrador para Microsoft Entra utilizadores e grupos. Para aplicativos (entidades de serviço), a ID do aplicativo é exibida.

O processo de mudança de administrador pode levar vários minutos. Depois, o novo administrador aparece no campo Microsoft Entra admin.

Para remover o admin, no topo da página Microsoft Entra ID, selecione Remover admin, depois selecione Save. A remoção do administrador do Microsoft Entra desativa a autenticação do Microsoft Entra para o seu servidor lógico.

Note

O administrador do Microsoft Entra é armazenado na base de dados master do servidor como um utilizador (entidade principal da base de dados). Como os nomes principais do banco de dados devem ser exclusivos, o nome para exibição do administrador não pode ser o mesmo que o nome de qualquer usuário no banco de dados do master servidor. Se um utilizador com esse nome já existir, a configuração de administrador do Microsoft Entra falha e anula-se, indicando que o nome do utilizador já está em uso.

Atribuir permissões ao Microsoft Graph

Para algumas operações, o Azure Synapse Analytics requer permissões para consultar o Microsoft Graph, conforme explicado nas permissões do Microsoft Graph. O Azure Synapse Analytics suporta permissões detalhadas da Microsoft Graph API, como User.Read.All, GroupMember.Read.All, e Application.Read.All sobre a identidade do recurso. Esta abordagem segue o princípio do menor privilégio e é recomendada. Também pode usar a função Leitores do Diretório como uma alternativa mais ampla. Para mais informações, consulte Identidades Geridas no Microsoft Entra para Azure Synapse Analytics.

Função de Leitores de Diretório

Para um procedimento guiado, consulte Atribuir o papel de Leitores de Diretório a um grupo Microsoft Entra.

O script PowerShell seguinte adiciona uma identidade de recurso Azure Synapse à função Directory Readers.

# This script grants "Directory Readers" permission to an Azure Synapse service principal.
# It can be executed only by a user who is a member of the **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$instanceName = "<InstanceName>"        # Enter the name of your managed instance or server
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"

# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your logical server
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$instanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($instanceName)' found, make sure that instanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($instanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($instanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($instanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($instanceName)' is already member of 'Directory Readers' role."
}

O administrador do Microsoft Entra pode agora criar principais de servidor Microsoft Entra (logins) e principais de base de dados (utilizadores).

Criar entidades do Microsoft Entra em SQL

Para se ligar a uma base de dados no Azure Synapse Analytics com autenticação Microsoft Entra, precisa de configurar um principal na base de dados para essa identidade, com pelo menos a permissão CONNECT.

Permissões de usuário do banco de dados

Quando crias um utilizador de base de dados, ele recebe, por defeito, a permissão CONNECT para a base de dados. Um usuário de banco de dados também herda permissões em duas circunstâncias:

  • O utilizador é membro de um grupo Microsoft Entra que também tem permissões atribuídas ao servidor.
  • Cria-se o utilizador a partir de um login, e o utilizador herda as permissões atribuídas pelo servidor ao login que se aplicam à base de dados.

O gerenciamento de permissões para entidades de servidor e banco de dados funciona da mesma forma, independentemente do tipo de entidade (ID do Microsoft Entra, autenticação SQL, etc.). Conceder permissões a papéis da base de dados em vez de conceder permissões diretamente aos utilizadores. Depois adiciona utilizadores às funções com as permissões apropriadas. Esta abordagem simplifica a gestão de permissões a longo prazo e reduz a probabilidade de uma identidade manter o acesso quando já não é apropriado.

Para obter mais informações, consulte:

Utilizadores contidos na base de dados

Um usuário de banco de dados contido é um tipo de usuário SQL que não está conectado a um logon no master banco de dados. Para criar um utilizador de base de dados contido do Microsoft Entra, ligue-se à base de dados com uma identidade Microsoft Entra que tenha pelo menos a permissão ALTER ANY USER. O seguinte exemplo de T-SQL cria um principal de base de dados denominado Microsoft_Entra_principal_name do Microsoft Entra ID.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Para criar um utilizador de base de dados contido para um grupo Microsoft Entra, introduza o nome de exibição do grupo:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Para criar um usuário de banco de dados contido para uma identidade gerenciada ou entidade de serviço, insira o nome para exibição da identidade:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Para criar um utilizador de base de dados contido para um utilizador da Microsoft Entra, introduza o nome principal do utilizador da identidade:

CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;

Utilizadores baseados em login

Note

Os principais de servidor do Microsoft Entra (logins) estão atualmente em pré-visualização para o Azure Synapse Analytics.

Os principais de servidor (ou logins) do Microsoft Entra são suportados, o que significa que não são necessários usuários contidos no banco de dados. Os principais da base de dados (utilizadores) podem ser criados com base num principal de servidor, o que significa que os utilizadores da Microsoft Entra podem herdar permissões atribuídas ao nível do servidor durante um login.

CREATE USER [appName] FROM LOGIN [appName];

Para obter a sintaxe sobre a criação de entidades de servidor do Microsoft Entra (logons), consulte CREATE LOGIN.

Utilizadores externos

Não pode criar diretamente um utilizador de base de dados para uma identidade gerida num tenant Microsoft Entra diferente daquele associado à sua subscrição do Azure. No entanto, pode importar utilizadores de outros diretórios para o diretório associado como utilizadores externos. Pode então usá-los para criar utilizadores de base de dados contidos que possam aceder à base de dados. Utilizadores externos também podem aceder através da adesão a grupos Microsoft Entra.

Exemplos: Para criar um utilizador de base de dados isolado que represente um utilizador de domínio federado ou gerido pelo Microsoft Entra:

CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
  • Uma conta de utilizador de domínio federado que importar para um domínio gerido como utilizador externo deve usar a identidade do domínio gerido.

Considerações sobre o nome

Não podes usar caracteres especiais como dois-pontos : ou ampersand & nos nomes de utilizador nas instruções T-SQL CREATE LOGIN e CREATE USER.

O Microsoft Entra ID e o Azure Synapse Analytics diferem no seu design de gestão de utilizadores num aspeto fundamental: o Microsoft Entra ID permite nomes de visualização duplicados dentro de um tenant, enquanto o Azure Synapse Analytics requer nomes principais de servidor únicos num pool SQL dedicado e nomes principais de base de dados únicos numa base de dados.

Permissões do Microsoft Graph

O CREATE USER ... FROM EXTERNAL PROVIDER comando exige que o Azure Synapse Analytics aceda ao Microsoft Entra ID (o fornecedor externo) em nome do utilizador com sessão iniciada. Por vezes, o Microsoft Entra ID devolve uma exceção.

  • Você pode encontrar o erro SQL 33134, que contém a mensagem de erro específica do Microsoft Entra ID. O erro geralmente diz que o acesso é negado, que o usuário deve se inscrever no MFA para acessar o recurso ou que o acesso entre aplicativos primários deve ser tratado por meio de pré-autorização. Nos dois primeiros casos, o problema geralmente é causado por políticas de Acesso Condicional definidas no locatário do Microsoft Entra do usuário: elas impedem que o usuário acesse o provedor externo. Atualizar as políticas de Acesso Condicional para permitir o acesso à aplicação 00000003-0000-0000-c000-000000000000 (o ID da aplicação da Microsoft Graph API) deverá resolver o problema. Se o erro indicar que o acesso entre aplicações de primeira parte deve ser tratado por meio de pré-autorização, o problema é que o utilizador está registado como um principal de serviço. O comando deve ter êxito se for executado por um usuário.
  • Caso receba um Connection Timeout Expired, pode ser necessário definir o parâmetro da cadeia de conexão TransparentNetworkIPResolution para falso. Para obter mais informações, consulte Problema de tempo limite de conexão com o .NET Framework 4.6.1 - TransparentNetworkIPResolution.

Para obter mais informações sobre como criar usuários de banco de dados contidos com base em identidades do Microsoft Entra, consulte CREATE USER.

Configurar autenticação multifator

Para melhorar a segurança, considere configurar a autenticação multifator (MFA), que pede ao utilizador que utilize um segundo método para autenticar na base de dados, como uma chamada telefónica ou uma aplicação autenticadora.

Para usar autenticação multifator com Azure Synapse Analytics, primeiro ative a autenticação multifatorial e depois use uma política de Acesso Condicional para impor MFA.

Ligue-se à Microsoft Entra

Depois de configurada a autenticação Microsoft Entra, pode usá-la para se ligar ao Azure Synapse Analytics com SQL Server Management Studio ou SQL Server Data Tools, e configurar aplicações clientes para se ligarem usando identidades Microsoft Entra.

Solucionar problemas de autenticação do Microsoft Entra

Para obter orientações, consulte Resolução de problemas relacionados com a autenticação do Microsoft Entra.