Hanterade identiteter i Microsoft Entra för Azure SQL

Gäller för:Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra-ID (tidigare Azure Active Directory) stöder två typer av hanterade identiteter: systemtilldelad hanterad identitet (SMI) och användartilldelad hanterad identitet (UMI). Mer information finns i Hanterade identitetstyper.

Ett SMI tilldelas automatiskt till Azure SQL Managed Instance när det skapas. När du använder Microsoft Entra-autentisering med Azure SQL Database måste du tilldela ett SMI när Azure-tjänstens huvudnamn används för att skapa Microsoft Entra-användare i SQL Database.

Tidigare kunde endast ett SMI tilldelas till Azure SQL Managed Instance eller SQL Database-serveridentiteten. Nu kan en UMI tilldelas till SQL Managed Instance eller SQL Database som instans eller serveridentitet.

Förutom att använda en UMI och ett SMI som instans eller serveridentitet kan du använda dem för att komma åt databasen med hjälp av alternativet Authentication=Active Directory Managed IdentitySQL anslutningssträng . Du måste skapa en SQL-användare från den hanterade identiteten i måldatabasen med hjälp av INSTRUKTIONEN SKAPA ANVÄNDARE . Mer information finns i Använda Microsoft Entra-autentisering med SqlClient.

Information om hur du hämtar aktuella UMI:er eller SMI för Azure SQL Managed Instance eller Azure SQL Database finns i Hämta eller ange en hanterad identitet för en logisk server eller hanterad instans senare i den här artikeln.

Fördelar med att använda användartilldelade hanterade identiteter

Det finns flera fördelar med att använda en UMI som serveridentitet:

  • Användarna har flexibiliteten att skapa och underhålla sina egna UMI:er för en klientorganisation. Du kan använda UMI:er som serveridentiteter för Azure SQL. En UMI hanteras av användaren, medan ett SMI definieras unikt per server och tilldelas av systemet.

  • Tidigare behövde du rollen Microsoft Entra ID Directory Readers när du använde ett SMI som server- eller instansidentitet. Med introduktionen av åtkomst till Microsoft Entra-ID via Microsoft Graph kan användare som är intresserade av att ge högnivåbehörigheter som katalogläsarrollen till SMI eller UMI alternativt ge behörigheter på lägre nivå så att server- eller instansidentiteten kan komma åt Microsoft Graph.

    Mer information om hur du tillhandahåller katalogläsarbehörigheter och dess funktion finns i katalogläsarrollen i Microsoft Entra-ID för Azure SQL.

  • Användare kan välja en specifik UMI som server- eller instansidentitet för alla databaser eller hanterade instanser i klientorganisationen. Eller så kan de ha flera UMI:er tilldelade till olika servrar eller instanser.

    UMI:er kan användas på olika servrar för att representera olika funktioner. En UMI kan till exempel hantera transparent datakryptering (TDE) på en server, och en UMI kan hantera Microsoft Entra-autentisering på en annan server.

  • Du behöver en UMI för att skapa en logisk server i Azure som konfigurerats med TDE med kundhanterade nycklar (CMK:er). Mer information finns i Kundhanterad transparent datakryptering med användartilldelad hanterad identitet.

  • UMI:er är oberoende av logiska servrar eller hanterade instanser. När en logisk server eller instans tas bort tas även SMI bort. UMI:er tas inte bort med servern.

Kommentar

Du måste aktivera instansidentiteten (SMI eller UMI) för att tillåta stöd för Microsoft Entra-autentisering i SQL Managed Instance. För SQL Database är det valfritt att aktivera serveridentiteten och krävs endast om ett Microsoft Entra-tjänsthuvudnamn (Microsoft Entra-program) övervakar skapandet och hanteringen av Microsoft Entra-användare, grupper eller program på servern. Mer information finns i Microsoft Entra-tjänstens huvudnamn med Azure SQL.

Skapa en användartilldelad hanterad identitet

Information om hur du skapar en UMI finns i Hantera användartilldelade hanterade identiteter.

Behörigheter

När UMI har skapats krävs vissa behörigheter för att tillåta att UMI läser från Microsoft Graph som serveridentitet. Bevilja följande behörigheter eller ge UMI rollen Katalogläsare .

Dessa behörigheter bör beviljas innan du etablerar en logisk server eller hanterad instans. När du har beviljat behörigheterna till UMI aktiveras de för alla servrar eller instanser som skapas med UMI tilldelad som en serveridentitet.

Viktigt!

Endast en global administratör eller privilegierad rolladministratör kan bevilja dessa behörigheter.

Bevilja behörigheter

Följande PowerShell-exempelskript ger nödvändiga behörigheter för en hanterad identitet. Det här exemplet tilldelar behörigheter till den användartilldelade hanterade identiteten umiservertest.

Om du vill köra skriptet måste du logga in som en användare med rollen Global administratör eller Privilegierad rolladministratör.

Skriptet ger behörigheten User.Read.All, GroupMember.Read.Alloch Application.Read.ALL till en hanterad identitet för åtkomst till Microsoft Graph.

# Script to assign permissions to an existing UMI 
# The following required Microsoft Graph permissions will be assigned: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.All

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

$tenantId = "<tenantId>"        # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity

# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"

# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP

# Sample Output

# DisplayName     Id                                   AppId                                SignInAudience      ServicePrincipalType
# -----------     --                                   -----                                --------------      --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application

$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'" 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}

# Get required permissions
$Permissions = @(
  "User.Read.All"
  "GroupMember.Read.All"
  "Application.Read.All"
)

# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}

# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
    $AppRoleAssignment = @{
	    principalId = $MSI.Id
	    resourceId = $MSGraphSP.Id
	    appRoleId = $AppRole.Id
    }

    New-MgServicePrincipalAppRoleAssignment `
    -ServicePrincipalId $AppRoleAssignment.PrincipalId `
    -BodyParameter $AppRoleAssignment -Verbose
}

Kontrollera behörigheter för användartilldelad hanterad identitet

Om du vill kontrollera behörigheter för en UMI går du till Azure-portalen. Gå till Företagsprogram i Microsoft Entra-ID-resursen. Välj Alla program för programtyp och sök efter den UMI som skapades.

Screenshot of enterprise application settings in the Azure portal.

Välj UMI och gå till behörighetsinställningarna under Säkerhet.

Screenshot of user-assigned managed identity permissions.

Hämta eller ange en hanterad identitet för en logisk server eller hanterad instans

Information om hur du skapar en server med hjälp av en UMI finns i följande guide: Skapa en logisk Azure SQL-server med hjälp av en användartilldelad hanterad identitet.

Hämta den logiska SMI-servern för Azure SQL Database

Azure-portalen visar det systemtilldelade SMI-ID:t (Managed IMI) på menyn Egenskaper på den logiska Azure SQL Database-servern.

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

  • Om du vill hämta UMI:erna för Azure SQL Managed Instance eller Azure SQL Database använder du följande PowerShell- eller Azure CLI-exempel.
  • Om du vill hämta SMI för Azure SQL Managed Instance använder du följande PowerShell- eller Azure CLI-exempel.

Ange en hanterad identitet i Azure-portalen

Så här anger du den användarhanterade identiteten för den logiska Azure SQL Database-servern eller Azure SQL Managed Instance i Azure-portalen:

  1. Gå till din SQL Server - eller SQL-hanterade instansresurs .
  2. Under Säkerhet väljer du identitetsinställningen.
  3. Under Användartilldelad hanterad identitet väljer du Lägg till.
  4. Välj en prenumeration och välj sedan en hanterad identitet för prenumerationen för primär identitet. Välj sedan knappen Välj .

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

Skapa eller ange en hanterad identitet med hjälp av Azure CLI

Azure CLI 2.26.0 (eller senare) krävs för att köra dessa kommandon med en UMI.

Azure SQL Database-hanterad identitet med hjälp av Azure CLI

  • Om du vill etablera en ny server med en användartilldelad hanterad identitet använder du kommandot az sql server create .

  • Om du vill hämta hanterade identiteter för en logisk server använder du kommandot az sql server show .

    • Om du till exempel vill hämta de användartilldelade hanterade identiteterna för en logisk server letar principalId du efter varje:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Så här hämtar du den systemtilldelade hanterade identiteten för en logisk Azure SQL Database-server:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Om du vill uppdatera serverinställningen för UMI använder du kommandot az sql server update .

Hanterad identitet i Azure SQL Managed Instance med hjälp av Azure CLI

  • Om du vill etablera en ny hanterad instans med en UMI använder du kommandot az sql mi create .

  • Om du vill hämta de systemtilldelade och användartilldelade hanterade identiteterna för hanterade instanser använder du kommandot az sql mi show .

    • Om du till exempel vill hämta UMI:erna för en hanterad instans letar du efter var och principalId en:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Så här hämtar du SMI för en hanterad instans:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Om du vill uppdatera UMI:s inställning för hanterad instans använder du kommandot az sql mi update .

Skapa eller ange en hanterad identitet med hjälp av PowerShell

Az.Sql-modul 3.4 eller senare krävs för att använda PowerShell med en UMI. Den senaste versionen av PowerShell rekommenderas eller använder Azure Cloud Shell i Azure-portalen.

Hanterad Azure SQL Database-identitet med PowerShell

  • Om du vill etablera en ny server med en UMI använder du kommandot New-AzSqlServer .

  • Om du vill hämta de hanterade identiteterna för en logisk server använder du kommandot Get-AzSqlServer .

    • Om du till exempel vill hämta UMI:erna för en logisk server letar du efter varje principalId :

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Så här hämtar du SMI för en logisk Azure SQL Database-server:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Om du vill uppdatera serverinställningen för UMI använder du kommandot Set-AzSqlServer .

Hanterad identitet i Azure SQL Managed Instance med PowerShell

  • Om du vill etablera en ny hanterad instans med en UMI använder du kommandot New-AzSqlInstance .

  • Om du vill hämta de hanterade identiteterna för en hanterad instans använder du kommandot Get-AzSqlInstance .

    • Om du till exempel vill hämta UMI:erna för en hanterad instans letar du efter var principalId och en:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Så här hämtar du SMI för en hanterad instans:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Om du vill uppdatera inställningen för UMI:s hanterade instans använder du kommandot Set-AzSqlInstance .

Skapa eller ange en hanterad identitet med hjälp av REST-API:et

Om du vill uppdatera UMI-inställningarna för servern kan du också använda REST API-etableringsskriptet som används i Skapa en logisk server med hjälp av en användartilldelad hanterad identitet eller Skapa en hanterad instans med hjälp av en användartilldelad hanterad identitet. Kör etableringskommandot igen i guiden med den uppdaterade användartilldelade hanterade identitetsegenskapen som du vill uppdatera.

Skapa eller ange en hanterad identitet med hjälp av en ARM-mall

Om du vill uppdatera UMI-inställningarna för servern kan du också använda Azure Resource Manager-mallen (ARM-mall) som används i Skapa en logisk server med hjälp av en användartilldelad hanterad identitet eller Skapa en hanterad instans med hjälp av en användartilldelad hanterad identitet. Kör etableringskommandot igen i guiden med den uppdaterade användartilldelade hanterade identitetsegenskapen som du vill uppdatera.

Kommentar

Du kan inte ändra serveradministratören eller lösenordet eller ändra Microsoft Entra-administratören genom att köra etableringskommandot för ARM-mallen igen.

Begränsningar och kända problem

  • När du har skapat en hanterad instans visar Microsoft Entra-administratörssidan för din hanterade instans i Azure-portalen en varning: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Om du gav UMI de behörigheter som beskrivs tidigare i den här artikeln kan du ignorera den här varningen.
  • Om du använder ett SMI eller en UMI som server- eller instansidentitet kommer borttagning av identiteten att göra att servern eller instansen inte kan komma åt Microsoft Graph. Microsoft Entra-autentisering och andra funktioner misslyckas. Om du vill återställa Microsoft Entra-funktioner tilldelar du ett nytt SMI eller UMI till servern med lämpliga behörigheter.
  • Om du vill bevilja behörighet att komma åt Microsoft Graph via ett SMI eller ett UMI måste du använda PowerShell. Du kan inte bevilja dessa behörigheter med hjälp av Azure-portalen.