Partilhar via


Habilitar a autenticação do Microsoft Entra para SQL Server em VMs do Azure

Aplica-se a:SQL Server em VM do Azure

Este artigo ensina você a habilitar a autenticação com o Microsoft Entra ID (anteriormente Azure Ative Directory) para seu SQL Server em máquinas virtuais (VMs) do Azure.

Note

É possível configurar a autenticação do Microsoft Entra para instâncias não registradas do SQL Server, como quando você tem várias instâncias do SQL Server na mesma VM.

Overview

A partir do SQL Server 2022, você pode se conectar ao SQL Server em VMs do Azure usando um dos seguintes métodos de autenticação do Microsoft Entra:

  • Password oferece autenticação com credenciais do Microsoft Entra
  • Universal com MFA adiciona autenticação multifator
  • Integrado usa provedores de federação como os Serviços de Federação do Active Directory (ADFS) para proporcionar experiências de logon único (SSO)
  • Service Principal habilita a autenticação de aplicativos do Azure
  • Managed Identity permite a autenticação de aplicativos atribuídos a identidades do Microsoft Entra

Quando você cria um logon do Microsoft Entra para o SQL Server e quando um usuário se conecta usando esse logon, o SQL Server usa uma identidade gerenciada para consultar o Microsoft Graph. Ao habilitar a autenticação do Microsoft Entra para seu SQL Server na VM do Azure, você precisa fornecer uma identidade gerenciada que o SQL Server possa usar para se comunicar com a ID do Microsoft Entra. Essa identidade gerenciada precisa ter permissões para consultar o Microsoft Graph.

Ao habilitar uma identidade gerenciada para um recurso no Azure, o limite de segurança da identidade é o recurso ao qual ela está anexada. Por exemplo, o limite de segurança para uma máquina virtual com identidades gerenciadas para recursos do Azure habilitados é a máquina virtual. Qualquer código em execução nesta VM é capaz de chamar o endpoint de identidades geridas e solicitar tokens. Ao habilitar uma identidade gerenciada para o SQL Server em VMs do Azure, a identidade é anexada à máquina virtual, portanto, o limite de segurança é a máquina virtual. A experiência é semelhante ao trabalhar com outros recursos que suportam identidades gerenciadas. Para obter mais informações, leia as Perguntas frequentes sobre identidades gerenciadas.

As identidades gerenciadas atribuídas pelo sistema e pelo usuário usadas para autenticação do Microsoft Entra com o SQL Server em VMs do Azure oferecem os seguintes benefícios:

  • A identidade gerenciada atribuída pelo sistema oferece um processo de configuração simplificado. Como a identidade gerenciada tem o mesmo tempo de vida que a máquina virtual, não há necessidade de excluí-la separadamente quando você exclui a máquina virtual.
  • A identidade gerenciada atribuída pelo usuário oferece escalabilidade, pois pode ser anexada e usada para autenticação do Microsoft Entra para vários SQL Server em VMs do Azure.

Para começar a usar identidades gerenciadas, revise Configurar identidades gerenciadas usando o portal do Azure.

Prerequisites

Para habilitar a autenticação do Microsoft Entra no SQL Server, você precisa dos seguintes pré-requisitos:

Conceder permissões

A identidade gerenciada escolhida para facilitar a autenticação entre o SQL Server e a ID do Microsoft Entra deve ter as três permissões de aplicativo do Microsoft Graph a seguir (funções de aplicativo): User.Read.All, GroupMember.Read.Alle Application.Read.All.

Como alternativa, adicionar a identidade gerenciada à função Leitores de Diretório do Microsoft Entra concede permissões suficientes. Outra maneira de atribuir a função Leitores de Diretório a uma identidade gerenciada é atribuir a função Leitores de Diretório a um grupo no ID do Microsoft Entra. Os proprietários do grupo podem então adicionar a identidade gerenciada da Máquina Virtual como um membro desse grupo. Isso minimiza o envolvimento dos administradores de funções do Microsoft Entra e delega a responsabilidade aos proprietários do grupo.

Adicionar identidade gerenciada à função

Esta seção explica como adicionar sua identidade gerenciada à função Leitores de Diretório na ID do Microsoft Entra. Você precisa ter privilégios de Administrador de Função Privilegiada para fazer alterações nas atribuições de função de Leitores de Diretório. Se não tiver permissão suficiente, trabalhe com o administrador do Microsoft Entra para seguir estes passos.

Para conceder à sua identidade gerida a função Leitores de Diretório, siga estas etapas:

  1. Abra Funções e administradores do Microsoft Entra ID no portal do Azure:

  2. Digite Leitores de diretório na caixa de pesquisa e selecione a função Leitores de diretório para abrir o Leitores de diretório | Página de atribuições :

    Captura de ecrã da página Funções e administradores do portal do Azure, procurando e selecionando a função Leitores de Diretório.

  3. Na página Directory Readers | Assignments, selecione + Adicionar atribuições para abrir a página Adicionar atribuição.

    Captura de ecrã da página Leitores de Diretório do portal do Azure.

  4. Na página Adicionar atribuições , escolha Nenhum membro selecionado em Selecionar membros para abrir a página Selecionar um membro .

    Captura de ecrã da página de adicionar atribuição do portal do Azure, onde está realçado que Nenhum membro foi selecionado.

  5. Na página Selecione um membro , procure o nome da identidade gerenciada que você deseja usar com sua VM do SQL Server e adicione-o à função Leitores de Diretório . Para identidades geridas atribuídas pelo sistema, procure o nome da VM (Máquina Virtual). Use Selecionar para confirmar a identidade e voltar para a página Adicionar atribuições .

    Captura de ecrã de procura de membros para selecionar no portal do Azure.

  6. Verifique se vê a identidade escolhida em Selecionar membros e, em seguida, selecione Seguinte.

    Captura de ecrã da página Adicionar atribuição no portal do Azure, com VM2 adicionado como uma atribuição.

  7. Verifique se o tipo de atribuição está definido como Ativo e se a caixa ao lado de Atribuído permanentemente está marcada. Insira uma justificativa comercial, como Adicionando permissões de função de Leitor de Diretório à identidade atribuída pelo sistema para VM2 e, em seguida, selecione Atribuir para salvar suas configurações e voltar para os Leitores de Diretório | Página de atribuições .

    Captura de ecrã das definições na atribuição Adicionar no portal do Azure.

  8. Na página Leitores do Diretório | Atribuições, confirme que vê a sua identidade recém-adicionada em Leitores do Diretório.

    Captura de tela da página Leitores de Diretório do portal do Azure mostrando sua atribuição de VM adicionada à função.

Adicionar permissões de função de aplicativo

Você pode usar o Azure PowerShell para conceder funções de aplicativo a uma identidade gerenciada. Para fazer isso, execute as seguintes etapas:

Note

Os módulos Azure AD e MSOnline PowerShell foram preteridos a partir de 30 de março de 2024. Para saber mais, leia a atualização de descontinuação. Após essa data, o suporte para esses módulos é limitado à assistência de migração para o SDK do Microsoft Graph PowerShell e correções de segurança. Os módulos preteridos continuarão a funcionar até 30 de março de 2025.

Recomendamos migrar para o Microsoft Graph PowerShell para interagir com o Microsoft Entra ID (anteriormente Azure AD). Para perguntas comuns sobre migração, consulte as Perguntas frequentes sobre migração. Observação: As versões 1.0.x do MSOnline podem sofrer interrupções após 30 de junho de 2024.

  1. Conectar-se ao Microsoft Graph

    Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All" -TenantId "<tenant id>"
    
  2. Recupere a identidade gerenciada:

    $Graph_SP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'"
    $MSI = Get-MgServicePrincipal -Filter "displayName eq '<your managed identity display name>'"
    
  3. Atribua a User.Read.All função à identidade:

    $AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}  
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
    
  4. Atribua GroupMember.Read.All função à identidade:

    $AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}  
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
    
  5. Atribua Application.Read.All função à identidade:

    $AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}  
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
    

Você pode validar as permissões atribuídas à identidade gerenciada fazendo o seguinte:

  1. Vá para Microsoft Entra ID no portal do Azure.
  2. Escolha Aplicativos corporativos e, em seguida, selecione Todos os aplicativos em Gerenciar.
  3. Filtre o tipo de aplicativo por Managed identities.
  4. Selecione a identidade gerenciada e, em seguida, escolha Permissões em Segurança. Você verá as seguintes permissões: User.Read.All, GroupMember.Read.All, Application.Read.All.

Ativar comunicação de saída

Para que a autenticação do Microsoft Entra funcione, você precisa do seguinte:

  • Comunicação de saída do SQL Server para o Microsoft Entra ID e o destino do Microsoft Graph.
  • Comunicação de saída do cliente SQL para o Microsoft Entra ID.

As configurações padrão da VM do Azure permitem a comunicação de saída para o ponto final do Microsoft Graph e o Microsoft Entra ID, mas alguns utilizadores optam por restringir essa comunicação de saída, quer utilizando um firewall ao nível do sistema operativo, quer o grupo de segurança de rede (NSG) da VNet do Azure.

Os firewalls na VM do SQL Server e em qualquer cliente SQL precisam permitir o tráfego de saída nas portas 80 e 443.

A regra NSG da VNet do Azure para a VNet que hospeda a sua VM do SQL Server deve conter o seguinte:

  • Uma etiqueta de serviço AzureActiveDirectory.
  • Intervalos de portas de destino de: 80, 443.
  • Ação definida como Permitir.
  • Uma prioridade alta (que corresponde a um número baixo).

Habilitar a autenticação do Microsoft Entra para a instância registrada

Ao registrar sua instância do SQL Server com a extensão do SQL IaaS Agent, você pode habilitar a autenticação do Microsoft Entra para a instância registrada usando o portal do Azure, a CLI do Azure ou o PowerShell. O uso do portal do Azure ou da CLI do Azure para gerenciar sua instância só é suportado na instância registrada do SQL Server.

Note

Depois que a autenticação do Microsoft Entra estiver habilitada, você poderá seguir as mesmas etapas nesta seção para atualizar a configuração para usar uma identidade gerenciada diferente.

Para habilitar a autenticação do Microsoft Entra para sua VM do SQL Server, siga estas etapas:

  1. Navegue até o recurso de máquinas virtuais SQL no portal do Azure.

  2. Selecione Configuração de Segurança em Segurança.

  3. Escolha Ativar em Autenticação do Microsoft Entra.

  4. Escolha o tipo de identidade gerenciada no menu suspenso, identidade atribuída pelo sistema ou identidade atribuída pelo utilizador. Se optar pela atribuição pelo utilizador, selecione a identidade que pretende usar para autenticar no SQL Server na sua VM do Azure a partir do menu suspenso Identidade gerida atribuída pelo utilizador que aparece.

    Captura de ecrã da página de configuração de segurança para SQL VM no portal do Azure, com a autenticação Microsoft Entra selecionada.

Depois que a autenticação do Microsoft Entra estiver habilitada, você poderá seguir as mesmas etapas para alterar qual identidade gerenciada pode ser autenticada em sua VM do SQL Server.

Note

O erro The selected managed identity does not have enough permissions for Microsoft Entra authentication indica que as permissões não foram atribuídas corretamente à identidade selecionada. Verifique a seção Conceder permissões para atribuir permissões adequadas.

Habilitar a autenticação do Microsoft Entra para instâncias não registradas

Se sua instância do SQL Server não estiver registrada com a extensão do SQL IaaS Agent, como quando você tiver várias instâncias do SQL Server na mesma VM, poderá habilitar a autenticação do Microsoft Entra usando o PowerShell. Você pode habilitar a autenticação do Microsoft Entra para instâncias não registradas específicas ou para todas as instâncias na VM.

Note

Para usar a autenticação do Microsoft Entra com instâncias não registradas no SQL Server em VMs do Azure, você deve ter pelo menos uma instância registrada com a extensão do SQL IaaS Agent.

Ao usar o comando para habilitar a Set-AzVMExtension -ExtensionName "SqlIaasExtension" autenticação do Microsoft Entra para uma instância do SQL Server, considere o seguinte:

  • As permissões da identidade gerenciada só são verificadas quando o CheckPermissions parâmetro é definido como true.
  • Especifique a ID do cliente do parâmetro identity ClientID para usar uma identidade gerenciada atribuída pelo usuário. Quando o ClientID parâmetro está vazio, uma identidade gerenciada atribuída ao sistema é usada.
  • Forneça uma lista de instâncias no parâmetro EnableForGivenInstances para habilitar a autenticação Microsoft Entra para instâncias não registadas específicas. Caso contrário, use o parâmetro EnableForAllInstances para habilitar a autenticação do Microsoft Entra para todas as instâncias não registadas na máquina virtual.

O exemplo a seguir habilita a autenticação do Microsoft Entra para todas as instâncias na VM usando uma identidade atribuída pelo sistema:

Set-AzVMExtension -ExtensionName "SqlIaasExtension" -ResourceGroupName $resourceGroupName -VMName $sqlVMName -Publisher "Microsoft.SqlServer.Management" -ExtensionType "SqlIaaSAgent" -TypeHandlerVersion 2.0 -Location $region -SettingString '{"ServerConfigurationsManagementSettings": {"AADAuthenticationSettings": {"ClientId":"", "EnableForAllInstances":true, "CheckPermissions":true}},"DeploymentTokenSettings":{"DeploymentToken":12345678}}'

O exemplo a seguir habilita a autenticação do Microsoft Entra para instâncias não registradas específicas usando uma identidade atribuída pelo usuário:

Set-AzVMExtension -ExtensionName "SqlIaasExtension" -ResourceGroupName $resourceGroupName -VMName $sqlVMName -Publisher "Microsoft.SqlServer.Management" -ExtensionType "SqlIaaSAgent" -TypeHandlerVersion 2.0 -Location $region -SettingString '{"ServerConfigurationsManagementSettings": {"AADAuthenticationSettings": {"ClientId":$clientId, "EnableForGivenInstances":["MSSQLSERVER","MSSQLSERVER01"], "CheckPermissions":true}},"DeploymentTokenSettings":{"DeploymentToken":12345678}}'

Criar logins e usuários

Siga as etapas no tutorial do Microsoft Entra para criar logons e usuários para a identidade gerenciada.

Conecte-se à sua instância

Siga as instruções no tutorial do Microsoft Entra para se conectar à sua instância do SQL Server usando a autenticação do Microsoft Entra.

Limitations

Considere as seguintes limitações:

  • A autenticação do Microsoft Entra só é suportada com o SQL Server 2022 em execução em VMs do Windows registradas com a extensão SQL IaaS Agent, implantada em qualquer nuvem.
  • O gerenciamento da autenticação do Microsoft Entra no portal do Azure só está disponível para instâncias suportadas pela extensão do Agente IaaS do SQL, como uma instância padrão ou uma única instância nomeada. Use a CLI do Azure ou o PowerShell para gerenciar instâncias adicionais de autenticação do Microsoft Entra na VM do SQL Server que não estão registradas com a extensão do SQL IaaS Agent.
  • Não há suporte para o uso da autenticação do Microsoft Entra com instâncias de cluster de failover.
  • A identidade escolhida para autenticar no SQL Server deve ter a função Leitores de Diretório na ID do Microsoft Entra ou as três permissões de aplicativo do Microsoft Graph a seguir (funções de aplicativo): User.Read.All, GroupMember.Read.Alle Application.Read.All.
  • Depois que a autenticação do Microsoft Entra estiver habilitada, não há como desativá-la.
  • Atualmente, não há suporte para autenticação no SQL Server em VMs do Azure por meio da autenticação do Microsoft Entra usando o método FIDO2 .

Próximos passos

Analise as práticas recomendadas de segurança para o SQL Server.

Para outros artigos relacionados à execução do SQL Server em VMs do Azure, consulte Visão geral do SQL Server em Máquinas Virtuais do Azure. Se você tiver dúvidas sobre máquinas virtuais do SQL Server, consulte as Perguntas freqüentes.

Para saber mais, consulte os outros artigos desta série de práticas recomendadas: