Microsoft Entra-serviceprincipal met Azure SQL

Van toepassing op: Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra ID (voorheen Azure Active Directory) ondersteunt het maken van gebruikers in Azure SQL Database (SQL DB) namens Microsoft Entra-toepassingen (service-principals). Dit wordt ondersteund voor Azure SQL Database en Azure SQL Managed Instance.

Ondersteuning voor service-principal (Microsoft Entra-toepassingen)

Dit artikel is van toepassing op toepassingen die zijn geïntegreerd met Microsoft Entra ID en deel uitmaken van Microsoft Entra-registratie. Deze toepassingen hebben vaak verificatie- en autorisatietoegang tot Azure SQL nodig om verschillende taken uit te voeren. Met deze functie kunnen service-principals Microsoft Entra-gebruikers maken in SQL Database.

Wanneer een Microsoft Entra-toepassing is geregistreerd met behulp van Azure Portal of een PowerShell-opdracht, worden er twee objecten gemaakt in de Microsoft Entra-tenant:

  • Een toepassingsobject
  • Een service-principal-object

Zie Toepassings- en service-principalobjecten in Microsoft Entra-id en een Azure-service-principal maken met Azure PowerShell voor meer informatie over Microsoft Entra-toepassingen.

SQL Database en SQL Managed Instance ondersteunen de volgende Microsoft Entra-objecten:

  • Microsoft Entra-gebruikers (beheerd, federatief en gast)
  • Microsoft Entra-groepen (beheerd en federatief)
  • Microsoft Entra-toepassingen

Microsoft Entra-gebruikers, -groepen en -toepassingen kunnen allemaal in een database worden gemaakt met behulp van de T-SQL-opdracht CREATE USER [Azure_AD_Object] FROM EXTERNAL PROVIDER.

Functionaliteit van het maken van Microsoft Entra-gebruikers met behulp van service-principals

Het ondersteunen van deze functionaliteit is nuttig in automatiseringsprocessen van Microsoft Entra-toepassingen waarbij Microsoft Entra-objecten worden gemaakt en onderhouden in SQL Database zonder menselijke interactie. Service-principals kunnen een Microsoft Entra-beheerder zijn voor de logische SQL-server, als onderdeel van een groep of een afzonderlijke gebruiker. De toepassing kan het maken van Microsoft Entra-objecten in SQL Database automatiseren wanneer deze wordt uitgevoerd als systeembeheerder, en vereist geen extra SQL-bevoegdheden. Hierdoor kan een databasegebruiker volledig worden geautomatiseerd. Deze functie ondersteunt ook door het Microsoft Entra-systeem toegewezen beheerde identiteit en door de gebruiker toegewezen beheerde identiteit die namens service-principals kan worden gemaakt als gebruikers in SQL Database. Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.

Service-principals inschakelen om Microsoft Entra-gebruikers te maken

Als u het maken van Microsoft Entra-objecten wilt inschakelen in SQL Database namens een Microsoft Entra-toepassing, zijn de volgende instellingen vereist:

  1. Wijs de serveridentiteit toe. De toegewezen serveridentiteit vertegenwoordigt de Managed Service Identity (MSI). De serveridentiteit kan een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit zijn. Zie Door de gebruiker toegewezen beheerde identiteit in Microsoft Entra ID voor Azure SQL voor meer informatie.

    • Voer voor een nieuwe logische Azure SQL-server de volgende PowerShell-opdracht uit:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Zie de opdracht New-AzSqlServer of new-AzSqlInstance voor SQL Managed Instance voor meer informatie.

    • Voer voor bestaande logische Azure SQL-servers de volgende opdracht uit:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Zie de opdracht Set-AzSqlServer of set-AzSqlInstance voor SQL Managed Instance voor meer informatie.

    • Als u wilt controleren of de serveridentiteit is toegewezen aan de server, voert u de opdracht Get-AzSqlServer uit.

    Notitie

    Serveridentiteit kan ook worden toegewezen met behulp van REST API- en CLI-opdrachten. Zie az sql server create, az sql server update en Servers - REST API voor meer informatie.

  2. Verwijs de Microsoft Entra ID-adreslijstlezers toestemming voor de serveridentiteit die is gemaakt of toegewezen aan de server.

    • Als u deze machtiging wilt verlenen, volgt u de beschrijving die wordt gebruikt voor SQL Managed Instance die beschikbaar is in het volgende artikel: Microsoft Entra-beheerder (SQL Managed Instance) inrichten
    • De Microsoft Entra-gebruiker die deze machtiging verleent, moet deel uitmaken van de rol Microsoft Entra ID Global Beheer istrator of Privileged Roles Beheer istrator.
    • Gebruik voor toegewezen SQL-pools in een Azure Synapse-werkruimte de beheerde identiteit van de werkruimte in plaats van de Azure SQL-serveridentiteit.

Belangrijk

Met Microsoft Graph-ondersteuning voor Azure SQL kan de rol Directory Readers worden vervangen door het gebruik van machtigingen op lager niveau. Zie Door de gebruiker toegewezen beheerde identiteit in Microsoft Entra ID voor Azure SQL voor meer informatie

Stap 1 en 2 moeten in de bovenstaande volgorde worden uitgevoerd. Maak of wijs eerst de serveridentiteit toe, gevolgd door het verlenen van de machtiging Directory Readers of machtigingen op lager niveau die worden besproken in door de gebruiker toegewezen beheerde identiteit in Microsoft Entra-id voor Azure SQL. Als u een van deze stappen weglaat, of beide leiden tot een uitvoeringsfout tijdens het maken van een Microsoft Entra-object in Azure SQL namens een Microsoft Entra-toepassing.

U kunt de rol Adreslijstlezers toewijzen aan een groep in Microsoft Entra-id. De groepseigenaren kunnen vervolgens de beheerde identiteit toevoegen als lid van deze groep, waardoor de noodzaak van een globale Beheer istrator of bevoorrechte rollen Beheer istrator wordt overgeslagen om de rol Adreslijstlezers te verlenen. Zie de rol Directory Readers in Microsoft Entra ID voor Azure SQL voor meer informatie over deze functie.

Problemen oplossen en beperkingen

  • Wanneer u Microsoft Entra-objecten maakt in Azure SQL namens een Microsoft Entra-toepassing zonder serveridentiteit in te schakelen en directorylezers machtigingen te verlenen, of machtigingen op lager niveau die worden besproken in door de gebruiker toegewezen beheerde identiteit in Microsoft Entra ID voor Azure SQL, mislukt de bewerking met de volgende mogelijke fouten. De volgende voorbeeldfout is voor het uitvoeren van een PowerShell-opdracht om een SQL Database-gebruiker myapp te maken in het artikel Zelfstudie: Microsoft Entra-gebruikers maken met behulp van Microsoft Entra-toepassingen.
    • 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)'"
    • Volg voor deze fout de stappen voor het toewijzen van een identiteit aan de logische server en de machtiging Adreslijstlezers toewijzen aan de identiteit van de logische server.
    • Het instellen van de service-principal (Microsoft Entra-toepassing) als Microsoft Entra-beheerder voor SQL Database wordt ondersteund met behulp van de Azure-portal, PowerShell, REST API en CLI-opdrachten .
  • Het gebruik van een Microsoft Entra-toepassing met een service-principal van een andere Microsoft Entra-tenant mislukt wanneer u toegang krijgt tot SQL Database of SQL Managed Instance die in een andere tenant is gemaakt. Een service-principal die aan deze toepassing is toegewezen, moet afkomstig zijn van dezelfde tenant als de logische SQL-server of sql Managed Instance.
  • Az.Sql 2.9.0-module of hoger is nodig wanneer u PowerShell gebruikt om een afzonderlijke Microsoft Entra-toepassing in te stellen als Microsoft Entra-beheerder voor Azure SQL. Zorg ervoor dat u een upgrade uitvoert naar de nieuwste module.

Volgende stappen