Megosztás a következőn keresztül:


Hozzáférési kulcsok használata az Azure Functionsben

Az Azure Functions lehetővé teszi titkos kulcsok használatát, hogy megnehezítse a függvényvégpontok elérését. Ez a cikk a Functions által támogatott különböző hozzáférési kulcsokat és a hozzáférési kulcsok használatát ismerteti.

Bár a hozzáférési kulcsok némi kockázatcsökkentést nyújtanak a nem kívánt hozzáférés ellen, érdemes megfontolni a HTTP-végpontok éles környezetben történő biztonságossá tételének egyéb lehetőségeit. Például nem ajánlott nyilvános alkalmazásokban megosztani a megosztott titkos kulcsokat. Ha a függvény nyilvános ügyfélről van meghívva, érdemes megfontolnia az alábbi vagy más biztonsági mechanizmusok implementálását:

A hozzáférési kulcsok biztosítják a HTTP-hitelesítés alapját a HTTP által aktivált függvényekben. További információ: Engedélyezési szint.

A kulcsok ismertetése

A hozzáférési kulcs hatóköre és a támogatott műveletek a hozzáférési kulcs típusától függenek.

Kulcs típusa Kulcs neve HTTP-hitelesítés szintje Leírás
Függvény default vagy felhasználó által definiált function Csak egy adott függvényvégponthoz engedélyezi a hozzáférést.
Gazdagép default vagy felhasználó által definiált function Lehetővé teszi a függvényalkalmazások összes függvényvégpontjának elérését.
Mester _master admin Speciális gazdagépkulcs, amely rendszergazdai hozzáférést is biztosít a futtatókörnyezeti REST API-khoz egy függvényalkalmazásban. Ez a kulcs nem vonható vissza. Mivel a főkulcs emelt szintű engedélyeket biztosít a függvényalkalmazásban, nem szabad megosztania ezt a kulcsot harmadik felekkel, és nem szabad natív ügyfélalkalmazásokban terjesztenie.
Rendszer A bővítménytől függ n.a. Bizonyos bővítményekhez rendszer által felügyelt kulcsra lehet szükség a webhookvégpontok eléréséhez. A rendszerkulcsok olyan bővítményspecifikus függvényvégpontokhoz lettek kialakítva, amelyeket belső összetevők hívnak meg. Az Event Grid-eseményindító például megköveteli, hogy az előfizetés rendszerkulcsot használjon az eseményindító végpontjának meghívásakor. A Durable Functions rendszerkulcsokkal is meghívja a Durable Task bővítmény API-kat.
A rendszerkulcsok csak adott bővítményekkel hozhatók létre, és nem állíthatja be explicit módon az értékeiket. A többi kulcshoz hasonlóan a portálról vagy a kulcs API-kkal is létrehozhat egy új értéket a kulcshoz.

Minden kulcs neve referenciaként van elnevezve, és a függvény és a gazdagép szintjén van egy alapértelmezett kulcs (névvel elnevezve default). A függvénykulcsok elsőbbséget élveznek a gazdagépkulcsokkal szemben. Ha két kulcs azonos néven van definiálva, a függvénykulcsot mindig a rendszer használja.

Az alábbi táblázat a különböző hozzáférési kulcsok felhasználási módjait hasonlítja össze:

Művelet Hatókör Kulcs típusa
Függvény végrehajtása Adott függvény Függvény
Függvény végrehajtása Bármely függvény Függvény vagy gazdagép
Végpont meghívása admin Függvényalkalmazás Csak mesteralakzat
Durable Task Extension API-k meghívása Függvényalkalmazás* Rendszer
Bővítményspecifikus webhook meghívása (belső) Függvényalkalmazás* rendszer

*A bővítmény által meghatározott hatókör.

Fő követelmények

A Functionsben a hozzáférési kulcsok véletlenszerűen generálnak 32 bájtos tömböket, amelyek URL-biztonságos base-64 sztringként vannak kódolva. Bár létrehozhat saját hozzáférési kulcsokat, és használhatja őket a Functions használatával, javasoljuk, hogy ehelyett engedélyezze a Functions számára az összes hozzáférési kulcs létrehozásához.

A függvények által létrehozott hozzáférési kulcsok speciális aláírási és ellenőrzőösszeg-értékeket tartalmaznak, amelyek a hozzáférési kulcs típusát jelzik, és amelyeket az Azure Functions hozott létre. Ha ezeket az extra összetevőket maga a kulcs tartalmazza, sokkal könnyebb meghatározni az ilyen típusú titkos kulcsok forrását a biztonsági vizsgálat és más automatizált folyamatok során.

Ha engedélyezni szeretné a Functions számára a kulcsok létrehozását, ne adja meg a kulcsot value a kulcsok létrehozásához használható API-khoz.

Kulcstároló kezelése

A kulcsok a függvényalkalmazás részeként vannak tárolva az Azure-ban, és inaktív állapotban vannak titkosítva. A kulcsok alapértelmezés szerint egy Blob Storage-tárolóban vannak tárolva a AzureWebJobsStorage beállítás által megadott fiókban. A beállítással felülbírálhatja ezt az AzureWebJobsSecretStorageType alapértelmezett viselkedést, és ehelyett kulcsokat tárolhat az alábbi alternatív helyek egyikén:

Hely Érték Leírás
Egy második tárfiók blob A Blob Storage-kulcsokat a Functions-futtatókörnyezetben használttól eltérő tárfiókban tárolja. A használt fiókot és tárolót a beállításban AzureWebJobsSecretStorageSas megadott közös hozzáférésű jogosultságkód (SAS) URL-cím határozza meg. Az SAS URL-címének módosításakor meg kell őriznie AzureWebJobsSecretStorageSas a beállítást.
Azure Key Vault keyvault A be AzureWebJobsSecretStorageKeyVaultUri van állítva kulcstartó a kulcsok tárolására szolgál.
Fájlrendszer files A kulcsok megmaradnak a helyi fájlrendszerben, amely a Functions 1.x-ben az alapértelmezett. A fájlrendszer tárolása nem ajánlott.
A Kubernetes titkos kódjai kubernetes Az AzureWebJobsKubernetesSecretName erőforráskészlete a kulcsok tárolására szolgál. Csak akkor támogatott, ha a függvényalkalmazás üzembe van helyezve a Kubernetesben. Az Azure Functions Core Tools automatikusan létrehozza az értékeket, amikor az alkalmazás Kubernetes-fürtön való üzembe helyezéséhez használja.

A Key Vault kulcstárolóhoz való használatakor a szükséges alkalmazásbeállítások a felügyelt identitás típusától függenek, akár rendszer által hozzárendelt, akár felhasználó által hozzárendelt.

A beállítás neve Rendszer által hozzárendelt Felhasználó által hozzárendelt Alkalmazásregisztráció
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Hozzáférési kulcsok használata

A HTTP által aktivált függvények általában a következő formátumú URL-címmel hívhatók meg: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Ha egy adott függvény engedélyezési szintje nem anonymousegy értéket ad meg, a kérelemben meg kell adnia egy hozzáférési kulcsot is. A hozzáférési kulcs megadható az URL-címben a lekérdezési sztring ?code= használatával, vagy a kérelem fejlécében (x-functions-key). További információ: Access-kulcs engedélyezése.

A futtatókörnyezeti REST API-k (alatt /admin/) eléréséhez meg kell adnia a főkulcsot (_master) a x-functions-key kérelem fejlécében. A rendszergazdai végpontokat a functionsRuntimeAdminIsolationEnabled webhelytulajdonság használatával távolíthatja el.

A függvény hozzáférési kulcsának lekérése

A függvények és a gazdagépkulcsok programozott módon lekérhetők az alábbi Azure Resource Manager API-k használatával:

Az Azure Resource Manager API-k meghívásáról az Azure REST API-referenciában olvashat.

Ezekkel a metódusokkal a REST API-k használata nélkül is lekérheti a hozzáférési kulcsokat.

  1. Jelentkezzen be az Azure Portalra, majd keresse meg és válassza a függvényalkalmazást.

  2. Válassza ki a használni kívánt függvényalkalmazást.

  3. A bal oldali panelen bontsa ki a Functions elemet, majd válassza az Alkalmazáskulcsok lehetőséget.

    Megjelenik az Alkalmazáskulcsok lap. Ezen a lapon megjelennek a gazdagépkulcsok, amelyek az alkalmazás bármely függvényének eléréséhez használhatók. Megjelenik a rendszerkulcs is, amely rendszergazdai szintű hozzáférést biztosít az összes függvényalkalmazás API-hoz.

A minimális jogosultságot is gyakorolhatja egy adott függvény kulcsával. A függvényspecifikus kulcsokat egy adott HTTP-aktivált függvény Függvénykulcsok lapján szerezheti be.

Hozzáférési kulcsok megújítása vagy létrehozása

A hozzáférési kulcs értékeinek megújítása vagy létrehozásakor manuálisan kell újraosztania a frissített kulcsértékeket az összes olyan ügyfélnek, amely meghívja a függvényt.

A függvényeket és a gazdagépkulcsokat programozott módon megújíthatja, vagy újakat hozhat létre az alábbi Azure Resource Manager API-k használatával:

Az Azure Resource Manager API-k meghívásáról az Azure REST API-referenciában olvashat.

Ezekkel a metódusokkal anélkül szerezhet be hozzáférési kulcsokat, hogy manuálisan kellene hívásokat létrehoznia a REST API-khoz.

  1. Jelentkezzen be az Azure Portalra, majd keresse meg és válassza a függvényalkalmazást.

  2. Válassza ki a használni kívánt függvényalkalmazást.

  3. A bal oldali panelen bontsa ki a Functions elemet, majd válassza az Alkalmazáskulcsok lehetőséget.

    Megjelenik az Alkalmazáskulcsok lap. Ezen a lapon megjelennek a gazdagépkulcsok, amelyek az alkalmazás bármely függvényének eléréséhez használhatók. Megjelenik a rendszerkulcs is, amely rendszergazdai szintű hozzáférést biztosít az összes függvényalkalmazás API-hoz.

  4. Válassza a Megújítás gombot a megújítani kívánt kulcs mellett, majd válassza a Megújítás és mentés lehetőséget.

Egy függvénykulcsot egy adott HTTP-aktivált függvény Függvénykulcs lapján is megújíthat.

Hívóbetűk törlése

A függvényeket és a gazdagépkulcsokat programozott módon törölheti az alábbi Azure Resource Manager API-k használatával:

Az Azure Resource Manager API-k meghívásáról az Azure REST API-referenciában olvashat.