Share via


Zelfstudie: een functie-app Verbinding maken naar Azure SQL met beheerde identiteit 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 zelfstudie voegt u een beheerde identiteit toe aan een Azure-functie die gebruikmaakt van Azure SQL-bindingen. Een voorbeeld van een Azure Function-project met SQL-bindingen is beschikbaar in het voorbeeld van de ToDo-back-end.

Wanneer u klaar bent met deze zelfstudie, maakt uw Azure-functie verbinding met de Azure SQL-database zonder gebruikersnaam en wachtwoord.

Een overzicht van de stappen die u gaat uitvoeren:

Databasetoegang verlenen aan Microsoft Entra-gebruiker

Schakel eerst Microsoft Entra-verificatie in voor SQL Database 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.

Het inschakelen van Microsoft Entra-verificatie kan worden voltooid via Azure Portal, PowerShell of Azure CLI. Instructies voor Azure CLI vindt u hieronder en informatie over het voltooien hiervan via Azure Portal en PowerShell is beschikbaar in de Azure SQL-documentatie over Microsoft Entra-verificatie.

  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. Zoek de object-id van de Microsoft Entra-gebruiker met behulp van de az ad user list user-principal-name> en vervang <deze. Het resultaat wordt opgeslagen in een 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)
    

    Fooi

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

  3. Voeg deze Microsoft Entra-gebruiker toe als Active Directory-beheerder met behulp van az sql server ad-admin create de opdracht in Cloud Shell. 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
    

Zie Een Microsoft Entra-beheerder inrichten voor uw server voor meer informatie over het toevoegen van een Active Directory-beheerder

Door het systeem toegewezen beheerde identiteit inschakelen in Azure Function

In deze stap voegen we een door het systeem toegewezen identiteit toe aan de Azure-functie. In latere stappen krijgt deze identiteit toegang tot de SQL-database.

Door het systeem toegewezen beheerde identiteit inschakelen in Azure Portal:

  1. Maak een Azure-functie in de portal zoals u dat normaal zou doen. Navigeer ernaar in de portal.
  2. Schuif omlaag naar de groep Instellingen in het linkernavigatievenster.
  3. Selecteer Identiteit.
  4. Schakel op het tabblad Door systeem toegewezen status over naar Aan. Klik op Opslaan.

Turn on system assigned identity for Function app

Zie voor meer informatie over het inschakelen van door het systeem toegewezen beheerde identiteit via Azure CLI of PowerShell meer informatie over het gebruik van beheerde identiteiten met Azure Functions.

Fooi

Schakel voor door de gebruiker toegewezen beheerde identiteit over naar het tabblad Toegewezen gebruiker. Klik op Toevoegen en selecteer een beheerde identiteit. Zie de door de gebruiker toegewezen beheerde identiteiten beheren voor meer informatie over het maken van door de gebruiker toegewezen beheerde identiteiten.

SQL-database toegang verlenen tot de beheerde identiteit

In deze stap maken we verbinding met de SQL-database met een Microsoft Entra-gebruikersaccount en verlenen we de beheerde identiteit toegang tot de database.

  1. Open uw favoriete SQL-hulpprogramma en meld u aan met een Microsoft Entra-gebruikersaccount (zoals de Microsoft Entra-gebruiker die we als beheerder hebben toegewezen). Dit kan worden bereikt in Cloud Shell met de SQLCMD-opdracht.

    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. Als een gebruiker

    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. Als de identiteit is toegewezen aan het systeem, is de naam altijd gelijk aan de naam van uw functie-app.

Azure Function SQL-verbindingsreeks configureren

In de laatste stap configureren we de Azure Function SQL-verbindingsreeks voor het gebruik van door Microsoft Entra beheerde identiteitsverificatie.

De naam van de instelling verbindingsreeks wordt in onze Functions-code geïdentificeerd als het bindingskenmerk 'Verbinding maken ionStringSetting', zoals te zien is in de sql-invoerbindingskenmerken en aantekeningen.

In de toepassingsinstellingen van onze functie-app moet de SQL-verbindingsreeks-instelling worden bijgewerkt om deze indeling te volgen:

Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb

testdb is de naam van de database waarmee we verbinding maken en demo.database.windows.net de naam is van de server waarmee we verbinding maken.

Fooi

Gebruik Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdbvoor door de gebruiker toegewezen beheerde identiteit .

Volgende stappen