Dela via


Microsoft Entra-tjänstens huvudnamn med Azure SQL

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

Azure SQL-resurser stöder programmatisk åtkomst för program som använder tjänstens huvudnamn och hanterade identiteter i Microsoft Entra-ID (tidigare Azure Active Directory).

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

Den här artikeln gäller för program som är registrerade i Microsoft Entra-ID. Att använda programautentiseringsuppgifter för att komma åt Azure SQL stöder säkerhetsprincipen separation av uppgifter, vilket gör det möjligt för organisationer att konfigurera exakt åtkomst för varje program som ansluter till sina databaser. Hanterade identiteter, en särskild form av tjänstens huvudidentiteter, rekommenderas eftersom de är utan lösenord och eliminerar behovet av utvecklarhanterade autentiseringsuppgifter.

Microsoft Entra ID möjliggör ytterligare avancerade autentiseringsscenarier som OAuth 2.0 On-Behalf-Of Flow (OBO). OBO gör det möjligt för program att begära inloggningsuppgifter för användare, för scenarier när själva programmen inte ska ges databasåtkomst utan delegerade behörigheter.

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.

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-huvudnamn skapas och underhålls i SQL Database eller SQL Managed Instance utan mänsklig interaktion. Serviceprincipaler kan vara Microsoft Entra-administratörer för den logiska SQL-servern eller den hanterad instans, antingen som en del av en grupp eller som en fristående identitet. Programmet kan automatisera skapandet av Microsoft Entra-objekt i SQL Database eller SQL Managed Instance, vilket möjliggör fullständig automatisering av skapandet av databasanvändare.

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

När du använder program för att komma åt Azure SQL kräver skapandet av Microsoft Entra-användare och inloggningar behörigheter som inte har tilldelats tjänstens huvudnamn eller hanterade identiteter som standard: möjligheten att läsa användare, grupper och program i en klientorganisation från Microsoft Graph. Dessa behörigheter är nödvändiga för att SQL-motorn ska kunna verifiera den identitet som anges i CREATE LOGIN eller CREATE USERoch hämta viktig information, inklusive identitetens objekt- eller program-ID, som används för att skapa inloggningen eller användaren.

När en Microsoft Entra-användare kör dessa kommandon använder Azure SQL:s Microsoft-program delegerade behörigheter för att personifiera den inloggade användaren och frågar Microsoft Graph med hjälp av deras behörigheter. Det här flödet är inte möjligt med tjänstens huvudnamn eftersom ett program inte kan personifiera ett annat program. I stället försöker SQL-motorn använda sin serveridentitet, som är den primära hanterade identiteten som tilldelats till en SQL-hanterad instans, en logisk Azure SQL-server eller Azure Synapse-arbetsyta. Serveridentiteten måste finnas och ha Microsoft Graph-frågebehörigheter eller så misslyckas åtgärderna.

Följande steg beskriver hur du tilldelar en hanterad identitet till servern samt tilldelar Microsoft Graph-behörigheter för att möjliggöra för tjänstens huvudansvariga att skapa Microsoft Entra-användare och inloggningar i databasen.

  1. Tilldela serveridentiteten. Serveridentiteten kan vara en systemtilldelad eller användartilldelad hanterad identitet. Mer information finns i Hanterade identiteter i Microsoft Entra för Azure SQL.

    • Följande PowerShell-kommando skapar en ny logisk server som etableras med en systemtilldelad hanterad identitet:
    $newServerParams = @{
        ResourceGroupName        = '<resource group>'
        Location                 = '<Location name>'
        ServerName               = '<Server name>'
        ServerVersion            = '12.0'
        SqlAdministratorCredentials = (Get-Credential)
        AssignIdentity           = $true
    }
    New-AzSqlServer @newServerParams
    

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

    • För en befintlig logisk server kör du följande kommando för att lägga till en systemtilldelad hanterad identitet i den:
    $setServerParams = @{
        ResourceGroupName = '<resource group>'
        ServerName        = '<Server name>'
        AssignIdentity    = $true
    }
    Set-AzSqlServer @setServerParams
    

    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 eller kommandot Get-AzSqlInstance för SQL Managed Instance.

    Anmärkning

    Serveridentiteten 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 serveridentiteten behörighet att fråga Microsoft Graph. Detta kan göras på flera sätt: genom att lägga till identiteten i rollen Microsoft Entra-katalogläsare , genom att tilldela identiteten de enskilda Microsoft Graph-behörigheterna eller genom att lägga till identiteten i en rolltilldelningsbar grupp som har rollen Katalogläsare :

    • Lägga till serveridentitet i en rolltilldelningsbar grupp

      I produktionsmiljöer rekommenderar vi att en klientadministratör skapar en rolltilldelningsbar grupp och tilldelar rollen Katalogläsare till den. Gruppägare kan sedan lägga till serveridentiteter i gruppen och ärva dessa behörigheter. Detta tar bort kravet på att en administratör för privilegierade roller ska bevilja behörigheter till varje enskild serveridentitet, så att administratörer kan delegera behörighetstilldelning till gruppens ägare för det här scenariot. Mer information finns i Katalogläsarroll i Microsoft Entra-ID för Azure SQL.

    • Tilldela Microsoft Graph-behörigheter till serveridentitet

      Om du vill tilldela enskilda Microsoft Graph-behörigheter till serveridentiteten måste du ha rollen Administratör för Microsoft Entra-privilegierade roller . Detta rekommenderas när du tilldelar rollen Katalogläsare , eftersom det finns behörigheter som ingår i den roll som serveridentiteten inte behöver. Om du endast tilldelar enskilda Läsbehörigheter för Microsoft Graph begränsas serveridentitetens behörigheter i klientorganisationen och principen om lägsta behörighet upprätthålls. Anvisningar finns i Hanterade identiteter i Microsoft Entra för Azure SQL.

    • Lägga till serveridentitet i katalogläsarrollen

      Om du vill lägga till serveridentiteten i rollen Directory Readers måste du vara medlem i Microsoft Entra Privileged Roles Administrator-rollen. I produktionsmiljöer rekommenderas inte det här alternativet av två skäl: rollen Katalogläsare ger fler behörigheter än vad serveridentiteten kräver, och rolltilldelningsprocessen kräver fortfarande administratörsgodkännanden för varje serveridentitet (till skillnad från att använda grupper). Följ instruktionerna för SQL Managed Instance i artikeln Ange Microsoft Entra-administratör (SQL Managed Instance).

Felsökning

När du felsöker kan det uppstå följande fel:

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Det här felet anger att serveridentiteten inte har skapats eller inte har tilldelats Microsoft Graph-behörigheter. Följ stegen för att tilldela en identitet till den logiska servern och tilldela katalogläsare behörighet till den logiska serveridentiteten.

Begränsningar

  • Tjänstprincipaler kan inte autentiseras över klientorganisationers gränser. Det går inte att komma åt SQL Database eller SQL Managed Instance med hjälp av ett Microsoft Entra-program som skapats i en annan klientorganisation.

  • Az.Sql 2.9.0-modulen eller senare krävs för att ange ett Microsoft Entra-program som Microsoft Entra-administratör för Azure SQL. Se till att du uppgraderas till den senaste modulen.