Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 anslutningssträng. 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 služba 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 Portal, PowerShell eller Azure CLI. Anvisningar för Azure CLI finns nedan och information som slutför detta via Azure Portal 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 listoch 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)Tips
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 služba Active Directory-administratör med hjälp av
az sql server ad-admin createkommandot i Cloud Shell. Ersätt <server-name> med servernamnet (utan.database.windows.netsuffix) i det följande kommandot.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 služba 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 Portal:
- Skapa en Azure-funktion i portalen som vanligt. Navigera 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.
Tips
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 30I 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. Ett 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.
Note
Om du använder utlösaren Azure SQL kräver din hanterade identitet ytterligare behörigheter utöver
db_datareaderochdb_datawriter. Mer information finns i Bevilja behörigheter för Azure SQL trigger.
Konfigurera Azure Function SQL anslutningssträng
I det sista steget konfigurerar vi Azure Function SQL-anslutningssträng att använda Microsoft Entra-hanterad identitetsautentisering.
Inställningsnamnet för anslutningssträng identifieras i vår Functions-kod som bindningsattributet "ConnectionStringSetting", såsom det ses i SQL-indatabindningens attribut och annoteringar.
I programinställningarna för vår funktionsapp bör inställningen SQL anslutningssträng 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.
Tips
För användartilldelad hanterad identitet använder du Server=demo.database.windows.net; Authentication=služba Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb.