Partilhar via


Configurar identidade gerida e autenticação Microsoft Entra para SQL Server ativada pelo Azure Arc

Aplica-se a: SQL Server 2025 (17.x)

Este artigo fornece instruções passo a passo para definir e configurar a identidade gerida do Microsoft Entra ID para o SQL Server com suporte do Azure Arc.

Para uma visão geral da identidade gerida com SQL Server, veja Identidade gerida para SQL Server ativada por Azure Arc.

Pré-requisitos

Antes de poder usar uma identidade gerida com o SQL Server ativado pelo Azure Arc, certifique-se de que cumpre os seguintes pré-requisitos:

Habilitar a identidade gerenciada principal

Se instalou a Extensão Azure para SQL Server no seu servidor, pode ativar a identidade gerida principal da sua instância do SQL Server diretamente a partir do portal do Azure. Também é possível habilitar a identidade gerenciada principal manualmente atualizando o registro, mas deve ser feito com extrema cautela.

Para ativar a identidade gerida principal no portal Azure, siga estes passos:

  1. Vai ao teu recurso SQL Server ativado pelo Azure Arc no portal Azure.

  2. Em Settings, selecione Microsoft Entra ID e Purview para abrir as páginas Microsoft Entra ID e Purview.

    Observação

    Se não vires a opção Ativar autenticação Microsoft Entra ID, certifica-te de que a tua instância SQL Server está ligada à Azure Arc e que tens a mais recente extensão SQL instalada.

  3. Na página Microsoft Entra ID e Purview, assinala a caixa ao lado de Usa uma identidade gerida primária e depois usa Save para aplicar a tua configuração:

    Captura de ecrã da opção Microsoft Entra no portal Azure.

Conceder permissões de acesso ao aplicativo à identidade

Importante

Somente um Administrador de Função Privilegiada ou uma função superior pode conceder essas permissões.

Para permitir a autenticação do Microsoft Entra para instâncias do SQL Server, cada identidade gerida pelo sistema requer as permissões User.Read.All, GroupMember.Read.All e Application.Read.All para consultar o Microsoft Graph. Para mais informações sobre estas permissões, veja:

  • User.Read.All: Permite o acesso à informação do utilizador do Microsoft Entra.
  • GroupMember.Read.All: Permite o acesso às informações do grupo Microsoft Entra.
  • Application.Read.All: Permite o acesso à informação do principal de serviço Microsoft Entra (aplicação).

Estas permissões são permissões ao nível da aplicação (papéis de aplicação) e devem ser atribuídas diretamente a cada identidade gerida. Não podem ser atribuídas manualmente a um grupo de segurança da Microsoft Entra e concedidas aos membros através da adesão ao grupo. Para ambientes com muitas máquinas, uma alternativa é atribuir o papel Leitores de Diretório a um grupo de segurança Microsoft Entra atribuível a um papel e adicionar as identidades geridas como membros. Ao contrário das permissões de função de aplicação, esta função da Microsoft Entra pode ser concedida ao nível de grupo, simplificando a gestão em larga escala. No entanto, Leitores de Diretório concede acesso amplo de leitura em todos os objetos do diretório, superando significativamente as três permissões específicas da Graph API. O papel de Leitores do Diretório não é recomendado para ambientes de produção onde é necessário acesso com privilégios mínimos.

O script PowerShell a seguir concede as permissões necessárias para a identidade gerenciada. Certifique-se de que este script está a correr no PowerShell 7.5 ou numa versão posterior, e que tem instalado o módulo Microsoft.Graph 2.28 ou posterior.

# Set your Azure tenant and managed identity name
$tenantID = '<Enter-Your-Azure-Tenant-Id>'
$managedIdentityName = '<Enter-Your-Arc-HostMachine-Name>'

# Connect to Microsoft Graph
try {
    Connect-MgGraph -TenantId $tenantID -ErrorAction Stop
    Write-Output "Connected to Microsoft Graph successfully."
}
catch {
    Write-Error "Failed to connect to Microsoft Graph: $_"
    return
}

# Get Microsoft Graph service principal
$graphAppId = '00000003-0000-0000-c000-000000000000'
$graphSP = Get-MgServicePrincipal -Filter "appId eq '$graphAppId'"
if (-not $graphSP) {
    Write-Error "Microsoft Graph service principal not found."
    return
}

# Get the managed identity service principal
$managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '$managedIdentityName'"
if (-not $managedIdentity) {
    Write-Error "Managed identity '$managedIdentityName' not found."
    return
}

# Define roles to assign
$requiredRoles = @(
    "User.Read.All",
    "GroupMember.Read.All",
    "Application.Read.All"
)

# Assign roles using scoped syntax
foreach ($roleValue in $requiredRoles) {
    $appRole = $graphSP.AppRoles | Where-Object {
        $_.Value -eq $roleValue -and $_.AllowedMemberTypes -contains "Application"
    }

    if ($appRole) {
        try {
            New-MgServicePrincipalAppRoleAssignment   -ServicePrincipalId $managedIdentity.Id `
                -PrincipalId $managedIdentity.Id `
                -ResourceId $graphSP.Id `
                -AppRoleId $appRole.Id `
                -ErrorAction Stop

            Write-Output "Successfully assigned role '$roleValue' to '$managedIdentityName'."
        }
        catch {
            Write-Warning "Failed to assign role '$roleValue': $_"
        }
    }
    else {
        Write-Warning "Role '$roleValue' not found in Microsoft Graph AppRoles."
    }
}

Criar logins e usuários

Siga os passos do tutorial Microsoft Entra para criar logins e utilizadores para a identidade gerida.