Nastavte spravovanou identitu a ověřování Microsoft Entra pro SQL Server aktivovaný pomocí Azure Arc

Platí pro: SQL Server 2025 (17.x)

Tento článek obsahuje podrobné pokyny k nastavení a konfiguraci spravované identity Microsoft Entra ID pro SQL Server, povolené pomocí Azure Arc.

Přehled spravované identity s SQL Server najdete v tématu Spravovaná identita pro SQL Server povolenou Azure Arc.

Požadavky

Než budete moct používat spravovanou identitu s SQL Server povolenou Azure Arc, ujistěte se, že splňujete následující požadavky:

Povolte primární spravovanou identitu

Pokud jste na server nainstalovali rozšíření Azure pro SQL Server, můžete pro instanci SQL Server povolit primární spravovanou identitu přímo z portálu Azure. Primární spravovanou identitu je také možné povolit ručně aktualizací registru, ale měla by být provedena s extrémní opatrností.

Pokud chcete na portálu Azure povolit primární spravovanou identitu, postupujte takto:

  1. Na portálu Azure přejděte ke svému prostředku SQL Serveru povolenému službou Azure Arc.

  2. V části Nastavení vyberte Microsoft Entra ID a Purview a otevřete stránku Microsoft Entra ID a Purview.

    Poznámka:

    Pokud možnost ověřování Enable Microsoft Entra ID nevidíte, ujistěte se, že je vaše instance SQL Server připojená k Azure Arc a že máte nainstalované nejnovější rozšíření SQL.

  3. Na stránce Microsoft Entra ID a Purview zaškrtněte políčko vedle položky Použít primární spravovanou identitu a potom použijte Save použít konfiguraci:

    Snímek obrazovky možnosti Microsoft Entra na portálu Azure.

Udělení oprávnění aplikace pro identitu

Důležité

Tato oprávnění může udělit pouze správce privilegovaných rolí nebo vyšší role.

Aby bylo možné povolit ověřování Microsoft Entra pro instance SQL Server, vyžaduje každá spravovaná identita přiřazená systémem User.Read.All, GroupMember.Read.All a Application.Read.All oprávnění k dotazování Microsoft Graph. Další informace o těchto oprávněních najdete tady:

  • User.Read.All: Umožňuje přístup k informacím o uživateli Microsoft Entra.
  • GroupMember.Read.All: Umožňuje přístup k informacím skupiny Microsoft Entra.
  • Application.Read.All: Umožňuje přístup k informacím o objektu typu "service principal" (aplikace) Microsoft Entra.

Tato oprávnění jsou oprávnění na úrovni aplikace (role aplikací) a musí být přiřazena přímo ke každé spravované identitě. Nemůžou být ručně přiřazeny ke skupině zabezpečení Microsoft Entra a uděleny členům prostřednictvím členství ve skupině. Pro prostředí s mnoha počítači je alternativou přiřadit Directory Readers role-assignovatelné skupině zabezpečení Microsoft Entra a přidání spravovaných identit jako členů. Na rozdíl od oprávnění role aplikace může být tato role Microsoft Entra udělena na úrovni skupiny, což zjednodušuje správu ve velkém měřítku. Directory Readers však uděluje široký přístup pro čtení napříč všemi objekty adresáře, což výrazně překračuje tři cílená oprávnění Graph API. Role Čtenáři adresáře se nedoporučuje pro produkční prostředí, kde je vyžadován přístup s nejnižšími oprávněními.

Následující skript PowerShellu udělí požadovaná oprávnění spravované identitě. Ujistěte se, že je tento skript spuštěný v PowerShellu 7.5 nebo novější verzi a má nainstalovaný Microsoft.Graph modul 2.28 nebo novější.

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

Vytváření přihlášení a uživatelů

Postupujte podle kroků v kurzu Microsoft Entra a vytvořte přihlášení a uživatele pro spravovanou identitu.