Skonfiguruj tożsamość zarządzaną i uwierzytelnianie Microsoft Entra dla SQL Server obsługiwanego przez Azure Arc

Dotyczy: SQL Server 2025 (17.x)

Ten artykuł zawiera instrukcje krok po kroku dotyczące ustawiania i konfigurowania zarządzanej tożsamości Microsoft Entra ID dla SQL Server obsługiwanej przez Azure Arc.

Aby zapoznać się z omówieniem tożsamości zarządzanej z SQL Server, zobacz Zarządzana tożsamość SQL Server włączona przez Azure Arc.

Wymagania wstępne

Przed użyciem tożsamości zarządzanej z funkcją SQL Server włączoną przez Azure Arc, upewnij się, że spełniasz następujące wymagania wstępne:

Włącz podstawową tożsamość zarządzaną

Jeśli na serwerze zainstalowano rozszerzenie Azure dla SQL Server, możesz włączyć podstawową tożsamość zarządzaną dla wystąpienia SQL Server bezpośrednio z portalu Azure. Istnieje również możliwość ręcznego włączenia podstawowej tożsamości zarządzanej przez zaktualizowanie rejestru, ale należy zachować szczególną ostrożność.

Aby włączyć podstawową tożsamość zarządzaną w portalu Azure, wykonaj następujące kroki:

  1. Przejdź do zasobu SQL Server zarządzanego przez Azure Arc w portalu Azure.

  2. W obszarze Settings wybierz Microsoft Entra ID i Purview aby otworzyć stronę Microsoft Entra ID i Purview.

    Uwaga / Notatka

    Jeśli nie widzisz opcji Enable Microsoft Entra ID authentication upewnij się, że wystąpienie SQL Server jest połączone z Azure Arc i że masz zainstalowane najnowsze rozszerzenie SQL.

  3. Na stronie Microsoft Entra ID i Purview zaznacz pole wyboru obok Użyj podstawowej tożsamości zarządzanej a następnie użyj Zapisz aby zastosować konfigurację:

    Oekt ekranu opcji Microsoft Entra w Azure portal.

Przyznawanie uprawnień aplikacji dla tożsamości

Ważne

Tylko administrator ról uprzywilejowanych lub wyższa rola może przyznać te uprawnienia.

Aby włączyć uwierzytelnianie Microsoft Entra dla wystąpień SQL Server, każda systemowo przypisana tożsamość zarządzana wymaga User.Read.All, GroupMember.Read.All i Application.Read.All uprawnień do wykonywania zapytań Microsoft Graph. Aby uzyskać więcej informacji na temat tych uprawnień, zobacz:

  • User.Read.All: Zezwala na dostęp do Microsoft Entra informacji o użytkowniku.
  • GroupMember.Read.All: Zezwala na dostęp do Microsoft Entra informacji o grupie.
  • Application.Read.All: Zezwala na dostęp do informacji o jednostce usługi Microsoft Entra (aplikacji).

Te uprawnienia to uprawnienia na poziomie aplikacji (role aplikacji) i muszą być przypisane bezpośrednio do każdej tożsamości zarządzanej. Nie można przypisać ich ręcznie do grupy zabezpieczeń Microsoft Entra i przyznać członkom za pośrednictwem członkostwa w grupie. W przypadku środowisk z wieloma maszynami alternatywą jest przypisanie roli Directory Readers do grupy zabezpieczeń Microsoft Entra, której można przypisywać role, i dodanie tożsamości zarządzanych jako członków. W przeciwieństwie do uprawnień roli aplikacji, tę rolę w Microsoft Entra można przyznać na poziomie grupy, upraszczając zarządzanie na dużą skalę. Jednak Directory Readers przyznaje szeroki dostęp do odczytu we wszystkich obiektach katalogu, co znacznie przekracza trzy docelowe uprawnienia Graph API. Rola Czytelnicy katalogu nie jest zalecana w środowiskach produkcyjnych, w których wymagany jest dostęp z najniższymi uprawnieniami.

Poniższy skrypt programu PowerShell przyznaje wymagane uprawnienia tożsamości zarządzanej. Upewnij się, że ten skrypt jest uruchamiany w programie PowerShell 7.5 lub nowszej wersji i ma zainstalowany moduł Microsoft.Graph 2.28 lub nowszy.

# 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."
    }
}

Twórz loginy i użytkowników

Wykonaj kroki opisane w samouczku Microsoft Entra aby utworzyć identyfikatory logowania i użytkowników dla tożsamości zarządzanej.