Självstudie: Ansluta en funktionsapp till Azure SQL med hanterad identitet och SQL-bindningar
Azure Functions tillhandahåller en hanterad identitet, vilket är en nyckelfärdig lösning för att skydda åtkomsten till Azure SQL Database och andra Azure-tjänster. Hanterade identiteter gör din app säkrare genom att eliminera hemligheter från din app, till exempel autentiseringsuppgifter i niska veze. I den här självstudien lägger du till hanterad identitet i en Azure-funktion som använder Azure SQL-bindningar. Ett Exempel på Ett Azure-funktionsprojekt med SQL-bindningar finns i ToDo-serverdelsexemplet.
När du är klar med den här självstudien ansluter din Azure-funktion till Azure SQL-databasen utan användarnamn och lösenord.
En översikt över de steg du ska utföra:
Bevilja databasåtkomst till Microsoft Entra-användare
Aktivera först Microsoft Entra-autentisering till SQL-databasen genom att tilldela en Microsoft Entra-användare som Active Directory-administratör för servern. Den här användaren skiljer sig från det Microsoft-konto som du använde för att registrera dig för din Azure-prenumeration. Det måste vara en användare som du har skapat, importerat, synkroniserat eller bjudit in till Microsoft Entra-ID. Mer information om tillåtna Microsoft Entra-användare finns i Microsoft Entra-funktioner och begränsningar i SQL-databasen.
Aktivering av Microsoft Entra-autentisering kan slutföras via Azure-portalen, PowerShell eller Azure CLI. Anvisningar för Azure CLI finns nedan och information som slutför detta via Azure-portalen och PowerShell finns i Azure SQL-dokumentationen om Microsoft Entra-autentisering.
Om din Microsoft Entra-klientorganisation inte har någon användare än skapar du en genom att följa stegen i Lägg till eller ta bort användare med hjälp av Microsoft Entra-ID.
Leta reda på objekt-ID:t för Microsoft Entra-användaren med hjälp av
az ad user list
och ersätt <user-principal-name>. Resultatet sparas i en variabel.För Azure CLI 2.37.0 och senare:
azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
För äldre versioner av Azure CLI:
azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
Dricks
Om du vill se listan över alla användarhuvudnamn i Microsoft Entra-ID kör du
az ad user list --query [].userPrincipalName
.Lägg till den här Microsoft Entra-användaren som Active Directory-administratör med hjälp av
az sql server ad-admin create
kommandot i Cloud Shell. Ersätt servernamn med servernamnet (utan suffixet.database.windows.net
) i följande kommando<.>az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
Mer information om hur du lägger till en Active Directory-administratör finns i Etablera en Microsoft Entra-administratör för servern
Aktivera systemtilldelad hanterad identitet på Azure Function
I det här steget lägger vi till en systemtilldelad identitet i Azure-funktionen. I senare steg får den här identiteten åtkomst till SQL-databasen.
Så här aktiverar du systemtilldelad hanterad identitet i Azure-portalen:
- Skapa en Azure-funktion i portalen som vanligt. Gå till den i portalen.
- Rulla ned till gruppen Inställningar i det vänstra navigeringsfältet.
- Välj Identitet.
- På fliken Systemtilldelat växlar du Status till På. Klicka på Spara.
Mer information om hur du aktiverar systemtilldelad hanterad identitet via Azure CLI eller PowerShell finns i mer information om hur du använder hanterade identiteter med Azure Functions.
Dricks
För användartilldelad hanterad identitet växlar du till fliken Användartilldelad. Klicka på Lägg till och välj en hanterad identitet. Mer information om hur du skapar användartilldelade hanterade identiteter finns i Hantera användartilldelade hanterade identiteter.
Ge SQL Database åtkomst till den hanterade identiteten
I det här steget ska vi ansluta till SQL-databasen med ett Microsoft Entra-användarkonto och ge den hanterade identiteten åtkomst till databasen.
Öppna ditt önskade SQL-verktyg och logga in med ett Microsoft Entra-användarkonto (till exempel den Microsoft Entra-användare som vi tilldelade som administratör). Detta kan göras i Cloud Shell med SQLCMD-kommandot.
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
I SQL-prompten för den databas som du vill använda kör du följande kommandon för att bevilja behörigheter till din funktion. Exempel:
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; GO
<identitetsnamn> är namnet på den hanterade identiteten i Microsoft Entra-ID. Om identiteten är systemtilldelad är namnet alltid detsamma som namnet på funktionsappen.
Konfigurera Azure Function SQL niska veze
I det sista steget konfigurerar vi Azure Function SQL-niska veze att använda Microsoft Entra-hanterad identitetsautentisering.
Det niska veze inställningsnamnet identifieras i vår Functions-kod som bindningsattributet "ConnectionStringSetting", enligt sql-indatabindningsattributen och anteckningarna.
I programinställningarna för vår funktionsapp bör INSTÄLLNINGEN SQL niska veze uppdateras för att följa det här formatet:
Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb
testdb är namnet på databasen vi ansluter till och demo.database.windows.net är namnet på den server som vi ansluter till.
Dricks
För användartilldelad hanterad identitet använder du Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb
.