Zelfstudie: Een functie-app verbinden met Azure SQL met beheerde identiteiten en SQL-bindingen

Azure Functions biedt een beheerde identiteit, een kant-en-klare oplossing voor het beveiligen van de toegang tot Azure SQL Database en andere Azure-services. Beheerde identiteiten maken uw app veiliger door geheimen uit uw app te elimineren, zoals referenties in de verbindingsreeks s. In deze tutorial voeg je een beheerde identiteit toe aan een functie-app die Azure SQL-bindings gebruikt.

Deze tutorial gebruikt een door de gebruiker toegewezen beheerde identiteit (UAMI), die wordt aanbevolen omdat deze gedeeld kan worden tussen resources en onafhankelijk is van de levenscyclus van de app. Voor meer informatie over identiteitsgebaseerde verbindingen in Azure Functions, zie Verbindingen configureren met externe services.

Wanneer je deze tutorial hebt afgerond, maakt je functie-app verbinding met Azure SQL Database zonder dat je een gebruikersnaam en wachtwoord nodig hebt.

Een overzicht van de stappen die je neemt:

Databasetoegang verlenen aan Microsoft Entra-gebruiker

Schakel eerst Microsoft Entra-authenticatie in voor de SQL-database in door een Microsoft Entra-gebruiker toe te wijzen als Active Directory-beheerder van de server. Deze gebruiker wijkt af van de Microsoft-account die u hebt gebruikt om u aan te melden voor uw Azure-abonnement. Het moet een gebruiker zijn die u hebt gemaakt, geïmporteerd, gesynchroniseerd of uitgenodigd in Microsoft Entra-id. Zie Microsoft Entra-functies en -beperkingen in SQL-database voor meer informatie over toegestane Microsoft Entra-gebruikers.

Je kunt Microsoft Entra-authenticatie inschakelen via het Azure-portaal, PowerShell of Azure CLI. Instructies voor Azure CLI staan in de volgende sectie. Voor informatie over het voltooien van deze taak via het Azure-portaal en PowerShell, zie de Azure SQL-documentatie over Microsoft Entra-authenticatie.

  1. Als uw Microsoft Entra-tenant nog geen gebruiker heeft, maakt u er een door de stappen te volgen bij Gebruikers toevoegen of verwijderen met behulp van Microsoft Entra-id.

  2. Vind de object-ID van de Microsoft Entra-gebruiker door het az ad user list commando te gebruiken en user-principal-name< te vervangen>. Sla het resultaat op als variabele.

    Voor Azure CLI 2.37.0 en hoger:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
    

    Voor oudere versies van Azure CLI:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
    

    Tip

    Als u de lijst met alle gebruikersprincipaalnamen in Microsoft Entra ID wilt zien, voert u az ad user list --query [].userPrincipalName uit.

  3. Voeg deze Microsoft Entra-gebruiker toe als Active Directory-beheerder door het az sql server ad-admin create commando in Cloud Shell te gebruiken. Vervang <in de volgende opdracht de servernaam> door de servernaam (zonder het .database.windows.net achtervoegsel).

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

Voor meer informatie over het toevoegen van een Active Directory-beheerder, zie Provisione een Microsoft Entra-beheerder voor je server.

Maak een door de gebruiker toegewezen beheerde identiteit

Maak een door de gebruiker toegewezen beheerde identiteit aan en wijs deze toe aan je functie-app. Gebruik een door de gebruiker toegewezen identiteit omdat je deze kunt hergebruiken op meerdere resources en de levenscyclus onafhankelijk is van je functie-app.

  1. Zoek in het Azure-portaal naar Managed Identities en selecteer Aanmaken.

  2. Kies je Abonnement, Resourcegroep, Regio en geef de identiteit een Naam (bijvoorbeeld, my-sql-identity).

  3. Selecteer Beoordelen en maken en selecteer vervolgens Maken.

  4. Nadat de identiteit is aangemaakt, ga je naar je functie-app in het portaal.

  5. Selecteer onder InstellingenIdentiteit en selecteer vervolgens het tabblad Gebruiker toegewezen .

  6. Selecteer Toevoegen, selecteer de beheerde identiteit die je hebt aangemaakt en selecteer Toevoegen.

Tip

Je kunt ook een door het systeem toegewezen beheerde identiteit gebruiken. Als je de voorkeur geeft aan door het systeem toegewezen, schakel dit dan in op het tabblad Door het systeem toegewezen van de pagina Identiteit. Bij gebruik van system-assigned identity is de <identity-name> in de SQL-commando's de naam van je functie-app, en heb je de User Id parameter in de verbindingsreeks niet nodig.

SQL-database toegang verlenen tot de beheerde identiteit

In deze stap verbind je met de SQL-database via een Microsoft Entra-gebruikersaccount en verleen we de beheerde identiteit toegang tot de database.

  1. Open je favoriete SQL-tool en log in met een Microsoft Entra-gebruikersaccount, zoals de Microsoft Entra-gebruiker die je als beheerder hebt aangewezen. Je kunt deze stap uitvoeren in Cloud Shell door het SQLCMD-commando te gebruiken.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. Voer in de SQL-prompt voor de gewenste database de volgende opdrachten uit om machtigingen aan uw functie te verlenen. Bijvoorbeeld:

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    GO
    

    <identity-name> is de naam van de beheerde identiteit in Microsoft Entra ID. Voor een door de gebruiker toegewezen identiteit is deze naam de naam die je aan de identiteit gaf bij het aanmaken ervan (bijvoorbeeld, my-sql-identity). Voor een systeem-toegewezen identiteit is de naam altijd hetzelfde als de naam van je functie-app.

    Note

    Als u de trigger Azure SQL gebruikt, zijn voor uw beheerde identiteit extra machtigingen vereist dan db_datareader en db_datawriter. Zie Grant-machtigingen voor Azure SQL trigger voor meer informatie.

Azure Function SQL-verbindingsreeks configureren

In de laatste stap configureert u de SQL-verbindingsreeks van de functieapp om Microsoft Entra beheerde identiteitsauthenticatie te gebruiken.

Je identificeert de naam van de verbindingsreeks-instelling in je functiecode als het bindingsattribuut ConnectionStringSetting, zoals te zien is in de SQL-invoerbindingattributen en -annotaties.

In de applicatie-instellingen van je functie-app werkt u de SQL-verbindingsreeks-instelling bij zodat deze het volgt volgt:

Server=<server-name>.database.windows.net; Authentication=Active Directory Default; Database=<database-name>; User Id=<client-id-of-user-assigned-identity>

Vervang <server-name> door je SQL-servernaam, <database-name> met je databasenaam en <client-id-of-user-assigned-identity> met de client-ID van je door de gebruiker toegewezen beheerde identiteit. Je kunt de client-ID vinden op de Overzichtspagina van je beheerde identiteitsresource in het Azure-portaal.

Tip

Het Active Directory Default authenticatiesleutelwoord werkt zowel lokaal (met je ontwikkelaarsgegevens) als in Azure (met de beheerde identiteit). Deze functie betekent dat je dezelfde verbindingsreeks in beide omgevingen kunt gebruiken. Voor systeem-toegewezen beheerde identiteit laat de User Id parameter weg.

Voor meer informatie over identiteitsgebaseerde verbindingen, zie Verbindingen configureren met externe diensten.

Volgende stappen