Configureer en beheer Microsoft Entra-authenticatie met Azure Synapse Analytics

Dit artikel laat zien hoe je Microsoft Entra ID gebruikt voor authenticatie met Azure Synapse Analytics.

Note

Microsoft Entra Server Principals zijn momenteel in preview voor Azure Synapse Analytics.

Prerequisites

Om Microsoft Entra-authenticatie met Azure Synapse Analytics te gebruiken, heb je de volgende vereisten nodig:

  • Een Microsoft Entra tenant gevuld met gebruikers en groepen.
  • Een bestaande Azure Synapse workspace of standalone dedicated SQL pool.

Een Microsoft Entra-tenant maken en vullen

Voordat je Microsoft Entra-authenticatie voor Azure Synapse Analytics kunt configureren, moet je een Microsoft Entra-tenant aanmaken en deze vullen met gebruikers en groepen. Je kunt Microsoft Entra-tenants volledig binnen Azure beheren of ze gebruiken voor de federatie van een on-premises Active Directory-domein Service.

Voor meer informatie, zie:

Microsoft Entra-beheerder instellen

Om Microsoft Entra-authenticatie te gebruiken, heeft je Azure Synapse-resource een Microsoft Entra-administrator nodig.

Je kunt ook de Microsoft Entra-beheerder configureren wanneer je de resource aanmaakt. Als je al een beheerder hebt ingesteld, sla dan deze sectie over.

Azure Synapse-werkruimte

Voor een Azure Synapse workspace configureer je de Microsoft Entra administrator op de workspace. Voor meer informatie, zie Beheerderstructuur.

Zelfstandige toegewezen SQL-pool

Wanneer je de Microsoft Entra-beheerder instelt, schakel je Microsoft Entra-authenticatie in voor de logische server die een zelfstandige dedicated SQL-pool host. Je kunt de beheerder instellen door gebruik te maken van het Azure-portaal, PowerShell, Azure CLI of REST API's.

In de Azure-portal vindt u de logical-servernaam

  • In het veld servernaam op de pagina Overview van uw zelfstandige toegewezen SQL-pool in Azure Synapse Analytics.

Voer de volgende stappen uit om de Microsoft Entra-beheerder voor uw logische server in te stellen in de Azure-portal:

  1. In het Azure portal-venster Directories + subscriptions kies je de directory die je Azure Synapse-resource bevat als huidige directory.

  2. Zoek naar SQL-servers en selecteer vervolgens de logische server voor je dedicated SQL-pool om het SQL-serverpaneel te openen.

  3. Selecteer in het deelvenster SQL-server voor de logische server Microsoft Entra ID onder Settings om het deelvenster Microsoft Entra ID te openen.

  4. Selecteer in het deelvenster Microsoft Entra IDBeheerder instellen om het deelvenster Microsoft Entra ID te openen.

  5. In het deelvenster Microsoft Entra ID worden alle gebruikers, groepen en toepassingen in uw huidige map weergegeven en kunt u zoeken op naam, alias of id. Zoek uw gewenste identiteit voor uw Microsoft Entra-beheerder en selecteer deze en selecteer vervolgens Selecteren om het deelvenster te sluiten.

  6. Selecteer Save bovenaan de pagina Microsoft Entra ID voor uw logische server.

    De Object-id wordt weergegeven naast de beheerdersnaam voor Microsoft Entra gebruikers en groepen. Voor toepassingen (service-principals) wordt de toepassings-id weergegeven.

Het wijzigen van de beheerder kan enkele minuten duren. Vervolgens wordt de nieuwe beheerder weergegeven in het veld Microsoft Entra admin.

Als u de beheerder wilt verwijderen, selecteert u boven aan de pagina Microsoft Entra IDVerwijder admin en selecteert u vervolgens Opslaan. Als u de Microsoft Entra-beheerder verwijdert, wordt Microsoft Entra-verificatie voor uw logische server uitgeschakeld.

Note

De Microsoft Entra-beheerder wordt opgeslagen in de master-database van de server als gebruiker (database-principal). Omdat database-principalnamen uniek moeten zijn, kan de weergavenaam van de beheerder niet hetzelfde zijn als de naam van een gebruiker in de database van master de server. Als er al een gebruiker met de naam bestaat, mislukt de installatie van de Microsoft Entra-beheerder en wordt deze teruggedraaid, wat aangeeft dat de naam al in gebruik is.

Machtigingen voor Microsoft Graph toewijzen

Voor sommige bewerkingen vereist Azure Synapse Analytics rechten om Microsoft Graph te bevragen, zoals uitgelegd in Microsoft Graph-rechten. Azure Synapse Analytics ondersteunt fijnmazige Microsoft Graph API-rechten zoals User.Read.All, GroupMember.Read.All, en Application.Read.All op de resource-identiteit. Deze benadering volgt het principe van minimale bevoegdheden en wordt aanbevolen. Je kunt ook de rol van Directory Readers als een breder alternatief gebruiken. Voor meer informatie, zie Managed identities in Microsoft Entra voor Azure Synapse Analytics.

Rol van adreslijstlezers

Voor een begeleide procedure, zie Wijs de rol Directory Readers toe aan een Microsoft Entra-groep.

Het volgende PowerShell-script voegt een Azure Synapse resource identity toe aan de rol Directory Readers.

# This script grants "Directory Readers" permission to an Azure Synapse service principal.
# It can be executed only by a user who is a member of the **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$instanceName = "<InstanceName>"        # Enter the name of your managed instance or server
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"

# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your logical server
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$instanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($instanceName)' found, make sure that instanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($instanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($instanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($instanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($instanceName)' is already member of 'Directory Readers' role."
}

De Microsoft Entra-beheerder kan nu Microsoft Entra-serverprincipals (logins) en databaseprincipals (gebruikers) aanmaken.

Microsoft Entra-principals aanmaken in SQL

Om verbinding te maken met een database in Azure Synapse Analytics met Microsoft Entra-authenticatie, moet je een principal in de database configureren voor die identiteit met ten minste de machtiging CONNECT.

Machtigingen voor databasegebruikers

Wanneer je een databasegebruiker aanmaakt, krijgt deze standaard de CONNECT machtiging voor de database. Een databasegebruiker neemt ook machtigingen over in twee gevallen:

  • De gebruiker is lid van een Microsoft Entra-groep waaraan ook rechten op de server zijn toegewezen.
  • Je maakt de gebruiker aan vanuit een login, en de gebruiker erft de server-toegewezen rechten van de login die op de database van toepassing zijn.

Het beheren van machtigingen voor server- en database-principals werkt hetzelfde, ongeacht het type principal (Microsoft Entra ID, SQL-verificatie, enzovoort). Verleen rechten aan databaserollen in plaats van direct rechten aan gebruikers te geven. Voeg vervolgens gebruikers toe aan rollen met de juiste rechten. Deze aanpak vereenvoudigt het langetermijnbeheer van permissies en verkleint de kans dat een identiteit toegang behoudt wanneer deze niet langer passend is.

Voor meer informatie, zie:

Ingesloten databasegebruikers

Een ingesloten databasegebruiker is een type SQL-gebruiker dat niet is verbonden met een aanmelding in de master database. Om een ingesloten Microsoft Entra-databasegebruiker te maken, verbind je met de database met een Microsoft Entra-identiteit die ten minste de ALTER ANY USER machtiging heeft. Het volgende T-SQL-voorbeeld creëert een databaseprincipal met de naam Microsoft_Entra_principal_name vanuit Microsoft Entra ID.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Als u een ingesloten databasegebruiker voor een Microsoft Entra groep wilt maken, voert u de weergavenaam van de groep in:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Als u een ingesloten databasegebruiker wilt maken voor een beheerde identiteit of service-principal, voert u de weergavenaam van de identiteit in:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Als u een afzonderlijke databasegebruiker voor een Microsoft Entra gebruiker wilt maken, voert u de gebruikers-principalnaam van de identiteit in:

CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;

Op aanmelding gebaseerde gebruikers

Note

Microsoft Entra Server Principals (logins) zijn momenteel in preview voor Azure Synapse Analytics.

Microsoft Entra-serverprincipes (of inloggegevens) worden ondersteund, wat betekent dat uitgesloten databasegebruikers niet vereist zijn. Database-principals (gebruikers) kunnen worden gemaakt op basis van een server-principal, wat betekent dat Microsoft Entra-gebruikers toegewezen machtigingen van een aanmelding op serverniveau kunnen overnemen.

CREATE USER [appName] FROM LOGIN [appName];

Zie CREATE LOGIN voor syntaxis voor het maken van Microsoft Entra server-principals (aanmeldingen).

Externe gebruikers

U kunt niet rechtstreeks een databasegebruiker maken voor een identiteit die wordt beheerd in een andere Microsoft Entra tenant dan die is gekoppeld aan uw Azure-abonnement. Je kunt echter gebruikers uit andere directory's importeren in de bijbehorende directory als externe gebruikers. Je kunt ze vervolgens gebruiken om ingesloten databasegebruikers te creëren die toegang hebben tot de database. Externe gebruikers kunnen ook toegang krijgen via lidmaatschap van Microsoft Entra groepen.

Voorbeelden: Een ingesloten databasegebruiker maken die een Microsoft Entra federatieve of beheerde domeingebruiker vertegenwoordigt:

CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
  • Een gefedereerd domeingebruikersaccount dat je importeert in een beheerd domein als externe gebruiker moet de beheerde domeinidentiteit gebruiken.

Overwegingen voor namen

Je kunt geen speciale tekens zoals colon : of ampersand & gebruiken in gebruikersnamen voor de T-SQL CREATE LOGIN en CREATE USER instructies.

Microsoft Entra ID en Azure Synapse Analytics verschillen op één belangrijk punt in hun ontwerp voor gebruikersbeheer: Microsoft Entra ID staat dubbele weergavenamen binnen een tenant toe, terwijl Azure Synapse Analytics unieke server-principalnamen vereist in een toegewezen SQL-pool en unieke database-principalnamen in een database.

Microsoft Graph-machtigingen

De opdracht CREATE USER ... FROM EXTERNAL PROVIDER vereist dat Azure Synapse Analytics namens de aangemelde gebruiker toegang heeft tot Microsoft Entra ID (de externe provider). Soms geeft Microsoft Entra ID een exceptie terug.

  • Er kan SQL-fout 33134 optreden, die het Microsoft Entra ID-specifieke foutbericht bevat. De fout geeft meestal aan dat de toegang wordt geweigerd, dat de gebruiker zich moet inschrijven bij MFA om toegang te krijgen tot de resource of dat toegang tussen toepassingen van de eerste partij moet worden afgehandeld via preauthorisatie. In de eerste twee gevallen wordt het probleem meestal veroorzaakt door beleidsregels voor voorwaardelijke toegang die zijn ingesteld in de Microsoft Entra tenant van de gebruiker: ze voorkomen dat de gebruiker toegang krijgt tot de externe provider. Het bijwerken van de Conditional Access-beleidsregels om toegang tot de applicatie 00000003-0000-0000-c000-000000000000 toe te staan (de applicatie-ID van de Microsoft Graph API) zou het probleem moeten oplossen. Als de fout aangeeft dat de toegang tussen toepassingen van derden moet worden verwerkt via verificatie vooraf, is het probleem omdat de gebruiker is aangemeld als een service-principal. De opdracht moet slagen als deze wordt uitgevoerd door een gebruiker.
  • Als u een Connection Time-out verlopen ontvangt, moet u mogelijk de parameter TransparentNetworkIPResolution van de verbindingsreeks instellen op false. Zie Verbindingstime-outprobleem met .NET Framework 4.6.1 - TransparentNetworkIPResolution voor meer informatie.

Zie CREATE USER voor meer informatie over het maken van ingesloten databasegebruikers op basis van Microsoft Entra-identiteiten.

Meervoudige verificatie configureren

Voor verbeterde beveiliging kunt u multifactorauthenticatie (MFA) configureren, waarbij de gebruiker wordt gevraagd een tweede methode te gebruiken om zich te authenticeren bij de database, zoals een telefoongesprek of een authenticator-app.

Om multifactorauthenticatie te gebruiken met Azure Synapse Analytics, schakel eerst multifactorauthenticatie in en gebruik vervolgens een Conditional Access-beleid om MFA af te dwingen.

Verbinding maken met Microsoft Entra

Nadat Microsoft Entra-authenticatie is geconfigureerd, kun je deze gebruiken om verbinding te maken met Azure Synapse Analytics met SQL Server Management Studio of SQL Server Data Tools, en clientapplicaties configureren om verbinding te maken door Microsoft Entra-identiteiten te gebruiken.

Problemen met Microsoft Entra-verificatie oplossen

Zie Problemen met Microsoft Entra-authenticatie oplossen.