Microsoft Entra-tjänstens huvudnamn med Azure SQL

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

Microsoft Entra-ID (tidigare Azure Active Directory) stöder användarskapande i Azure SQL Database (SQL DB) för Microsoft Entra-program (tjänstens huvudnamn). Detta stöds för Azure SQL Database och Azure SQL Managed Instance.

Stöd för tjänstens huvudnamn (Microsoft Entra-program)

Den här artikeln gäller för program som är integrerade med Microsoft Entra-ID och som ingår i Microsoft Entra-registrering. Dessa program behöver ofta autentiserings- och auktoriseringsåtkomst till Azure SQL för att utföra olika uppgifter. Med den här funktionen kan tjänstens huvudnamn skapa Microsoft Entra-användare i SQL Database.

När ett Microsoft Entra-program registreras med hjälp av Azure-portalen eller ett PowerShell-kommando skapas två objekt i Microsoft Entra-klientorganisationen:

  • Ett programobjekt
  • Ett objekt för tjänstens huvudnamn

Mer information om Microsoft Entra-program finns i Objekt för program och tjänstens huvudnamn i Microsoft Entra-ID och Skapa ett Azure-tjänsthuvudnamn med Azure PowerShell.

SQL Database och SQL Managed Instance stöder följande Microsoft Entra-objekt:

  • Microsoft Entra-användare (hanterade, federerade och gäst)
  • Microsoft Entra-grupper (hanterade och federerade)
  • Microsoft Entra-program

Microsoft Entra-användare, grupper och program kan alla skapas i en databas med hjälp av T-SQL-kommandot CREATE USER [Azure_AD_Object] FROM EXTERNAL PROVIDER.

Funktioner för att skapa Microsoft Entra-användare med hjälp av tjänstens huvudnamn

Stöd för den här funktionen är användbart i Microsoft Entra-programautomatiseringsprocesser där Microsoft Entra-objekt skapas och underhålls i SQL Database utan mänsklig interaktion. Tjänstens huvudnamn kan vara Microsoft Entra-administratör för den logiska SQL-servern som en del av en grupp eller en enskild användare. Programmet kan automatisera skapandet av Microsoft Entra-objekt i SQL Database när det körs som systemadministratör och kräver inga ytterligare SQL-behörigheter. Detta möjliggör fullständig automatisering av en databasanvändares skapande. Den här funktionen stöder även microsoft entra-systemtilldelad hanterad identitet och användartilldelad hanterad identitet som kan skapas som användare i SQL Database för tjänstens huvudnamn. Mer information finns i Vad är hanterade identiteter för Azure-resurser?

Aktivera tjänstens huvudnamn för att skapa Microsoft Entra-användare

Om du vill aktivera skapande av Microsoft Entra-objekt i SQL Database för ett Microsoft Entra-program krävs följande inställningar:

  1. Tilldela serveridentiteten. Den tilldelade serveridentiteten representerar den hanterade tjänstidentiteten (MSI). Serveridentiteten kan vara en systemtilldelad eller användartilldelad hanterad identitet. Mer information finns i Användartilldelad hanterad identitet i Microsoft Entra-ID för Azure SQL.

    • Kör följande PowerShell-kommando för en ny logisk Azure SQL-server:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Mer information finns i kommandot New-AzSqlServer eller kommandot New-AzSqlInstance för SQL Managed Instance.

    • Kör följande kommando för befintliga logiska Azure SQL-servrar:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Mer information finns i kommandot Set-AzSqlServer eller kommandot Set-AzSqlInstance för SQL Managed Instance.

    • Kontrollera om serveridentiteten har tilldelats servern genom att köra kommandot Get-AzSqlServer.

    Kommentar

    Serveridentitet kan också tilldelas med hjälp av REST API- och CLI-kommandon. Mer information finns i az sql server create, az sql server update och Servers – REST API.

  2. Ge Microsoft Entra ID-katalogläsarna behörighet till den serveridentitet som skapats eller tilldelats till servern.

    • Om du vill bevilja den här behörigheten följer du beskrivningen som används för SQL Managed Instance som är tillgänglig i följande artikel: Etablera Microsoft Entra-administratör (SQL Managed Instance)
    • Den Microsoft Entra-användare som beviljar den här behörigheten måste vara en del av rollen Global administratör för Microsoft Entra-ID eller privilegierade roller.
    • För dedikerade SQL-pooler på en Azure Synapse-arbetsyta använder du arbetsytans hanterade identitet i stället för Azure SQL-serveridentiteten.

Viktigt!

Med Microsoft Graph-stöd för Azure SQL kan katalogläsarrollen ersättas med behörigheter på lägre nivå. Mer information finns i Användartilldelad hanterad identitet i Microsoft Entra-ID för Azure SQL

Steg 1 och 2 måste köras i ovanstående ordning. Skapa eller tilldela först serveridentiteten, följt av att ge behörigheten Katalogläsare eller behörigheter på lägre nivå som beskrivs i Användartilldelad hanterad identitet i Microsoft Entra-ID för Azure SQL. Om du utelämnar något av dessa steg, eller så orsakar båda ett körningsfel när Microsoft Entra-objekt skapas i Azure SQL för ett Microsoft Entra-program.

Du kan tilldela rollen Katalogläsare till en grupp i Microsoft Entra-ID. Gruppägarna kan sedan lägga till den hanterade identiteten som medlem i den här gruppen, vilket skulle kringgå behovet av att en global administratör eller administratör för privilegierade roller beviljar rollen Katalogläsare . Mer information om den här funktionen finns i Katalogläsarroll i Microsoft Entra-ID för Azure SQL.

Felsökning och begränsningar

  • När du skapar Microsoft Entra-objekt i Azure SQL för ett Microsoft Entra-program utan att aktivera serveridentitet och ge katalogläsare behörighet, eller behörigheter på lägre nivå som beskrivs i Användartilldelad hanterad identitet i Microsoft Entra-ID för Azure SQL, misslyckas åtgärden med följande möjliga fel. Följande exempelfel gäller för en PowerShell-kommandokörning för att skapa en SQL Database-användare myapp i artikeln Självstudie: Skapa Microsoft Entra-användare med hjälp av Microsoft Entra-program.
    • Exception calling "ExecuteNonQuery" with "0" argument(s): "'myapp' is not a valid login or you do not have permission. Cannot find the user 'myapp', because it does not exist, or you do not have permission."
    • Exception calling "ExecuteNonQuery" with "0" argument(s): "Principal 'myapp' could not be resolved. Error message: 'Server identity is not configured. Please follow the steps in "Assign a Microsoft Entra identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'"
    • För det här felet följer du stegen för att tilldela en identitet till den logiska servern och tilldela katalogläsare behörighet till den logiska serveridentiteten.
    • Du kan ange tjänstens huvudnamn (Microsoft Entra-program) som Microsoft Entra-administratör för SQL Database med hjälp av Kommandona Azure-portalen, PowerShell, REST API och CLI.
  • Det går inte att använda ett Microsoft Entra-program med tjänstens huvudnamn från en annan Microsoft Entra-klientorganisation vid åtkomst till SQL Database eller SQL Managed Instance som skapats i en annan klientorganisation. Ett huvudnamn för tjänsten som tilldelats det här programmet måste komma från samma klientorganisation som den logiska SQL-servern eller SQL Managed Instance.
  • Az.Sql 2.9.0-modulen eller senare behövs när du använder PowerShell för att konfigurera ett enskilt Microsoft Entra-program som Microsoft Entra-administratör för Azure SQL. Se till att du uppgraderas till den senaste modulen.

Nästa steg