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 denna handledning lägger du till en hanterad identitet i en funktionsapp som använder Azure SQL-bindningar.
Denna handledning använder en användartilldelad hanterad identitet (UAMI), vilket rekommenderas eftersom den kan delas över resurser och är oberoende av appens livscykel. För mer information om identitetsbaserade anslutningar i Azure Functions, se Konfigurera anslutningar till fjärrtjänster.
När du är klar med denna handledning ansluter din funktionsapp till Azure SQL Database utan att behöva användarnamn och lösenord.
En översikt över de steg du tar:
Bevilja databasåtkomst till Microsoft Entra-användare
För det första, aktivera Microsoft Entra-autentisering mot 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.
Du kan aktivera Microsoft Entra-autentisering via Azure-portalen, PowerShell eller Azure CLI. Instruktioner för Azure CLI finns i följande avsnitt. För information om hur man slutföra denna uppgift via Azure-portalen och PowerShell, se 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.
Hitta objekt-ID:t för Microsoft Entra-användaren genom att använda kommandot
az ad user listoch ersätt <user-principal-name>. Spara resultatet till 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 denna Microsoft Entra-användare som služba Active Directory-administratör genom att använda kommandot
az sql server ad-admin createi 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
För mer information om hur du lägger till en služba Active Directory-administratör, se Provisionera en Microsoft Entra-administratör för din server.
Skapa en användartilldelad hanterad identitet
Skapa en användartilldelad hanterad identitet och tilldela den till din funktionsapp. Använd en användar-tilldelad identitet eftersom du kan återanvända den över flera resurser och dess livscykel är oberoende av din funktionsapp.
I Azure-portalen, sök efter Managed Identities och välj Skapa.
Välj din prenumeration, resursgrupp, region och ge identiteten ett namn (till exempel,
my-sql-identity).Välj Granska + skapaoch välj sedan Skapa.
När identiteten är skapad, gå till din funktionsapp i portalen.
Under Inställningar, välj Identitet och sedan fliken Användartilldelad.
Välj Lägg till, välj den hanterade identitet du skapade och välj Lägg till.
Tips
Du kan också använda en systemtilldelad hanterad identitet. Om du föredrar systemtilldelat, aktivera det på fliken System tilldelat på Identitetssidan . När du använder systemtilldelad identitet är <identity-name> i SQL-kommandona namnet på din funktionsapp, och du behöver inte parametern User Id i anslutningssträngen.
Ge SQL Database åtkomst till den hanterade identiteten
I detta steg ansluter du till SQL-databasen genom att använda ett Microsoft Entra-användarkonto och ger den hanterade identiteten tillgång till databasen.
Öppna ditt föredragna SQL-verktyg och logga in med ett Microsoft Entra-användarkonto, till exempel den Microsoft Entra-användare du tilldelat som administratör. Du kan utföra detta steg i Cloud Shell genom att använda 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. För en användar-tilldelad identitet är detta namn det namn du gav identiteten när du skapade den (till exempel,
my-sql-identity). För en systemtilldelad identitet är namnet alltid detsamma som namnet på din funktionsapp.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 du funktionsappens SQL-anslutningssträng så att den använder autentisering med hanterad identitet i Microsoft Entra.
Du identifierar reťazec pripojenia-inställningens namn i din funktionskod som bindningsattributet ConnectionStringSetting, vilket ses i SQL-inmatningsbindningsattributen och annotationerna.
I applikationsinställningarna i din funktionsapp, uppdatera SQL-reťazec pripojenia-inställningen till att följa detta format:
Server=<server-name>.database.windows.net; Authentication=Active Directory Default; Database=<database-name>; User Id=<client-id-of-user-assigned-identity>
Ersätt <server-name> med ditt SQL-servernamn, <database-name> med ditt databasnamn och <client-id-of-user-assigned-identity> med klient-ID:t för din användartilldelade hanterade identitet. Du kan hitta klient-ID:t på Översiktssidan för din hanterade identitetsresurs i Azure-portalen.
Tips
Autentiseringsnyckelordet služba Active Directory Default fungerar både lokalt (med dina utvecklaruppgifter) och i Azure (med den hanterade identiteten). Denna funktion innebär att du kan använda samma reťazec pripojenia i båda miljöerna. För systemtilldelad hanterad identitet, utelämna parametern User Id .
För mer information om identitetsbaserade anslutningar, se Konfigurera anslutningar till fjärrtjänster.