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 hívóbetűk típusait é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 A 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.
Házigazda 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. 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.
Csak bizonyos bővítmények hozhatnak létre rendszerkulcsokat. 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. A függvény és a gazdagép szintjén van egy alapértelmezett kulcs (névvel elnevezve default). A funkciógombok elsőbbséget élveznek a számítógép gombokkal 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 Konkrét 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ény-alkalmazás Csak a mester részére
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 a Functions szolgáltatással használhatja őket, javasoljuk, hogy ehelyett engedélyezze a Functions számára, hogy az összes hozzáférési kulcsot létrehozza önnek.

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 olyan tárfiókban tárolja, amely eltér a Functions-futtatókörnyezet által használttól. 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 AzureWebJobsSecretStorageSas beállítást meg kell őriznie, amikor az SAS URL-címe megváltozik.
Azure Key Vault keyvault A AzureWebJobsSecretStorageKeyVaultUri beállított kulcstárolót a kulcsok tárolására használjuk.
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 nem módosítható titkos kulcsok nem támogatottak.
Azure Container Apps titkos adatok ContainerApps A kulcsok az Azure Container Apps titkos kulcstárolójában vannak tárolva. Csak akkor támogatott, ha a függvényalkalmazás üzembe van helyezve az Azure Container Appsben.

A Key Vault kulcstárolóhoz való használata esetén 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.

Név beállítása Rendszer által hozzárendelt Felhasználó által hozzárendelt Alkalmazásregisztráció
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Fontos

A titkos kulcsok nem terjednek ki az egyes függvényalkalmazásokra a AzureWebJobsSecretStorageKeyVaultUri beállításon keresztül. Ha több függvényalkalmazás is ugyanarra a Key Vaultra van konfigurálva, ugyanazokkal a titkos kulcsokkal rendelkeznek, ami kulcsütközésekhez vagy felülíráshoz vezethet. A nem szándékos viselkedés elkerülése érdekében javasoljuk, hogy minden függvényalkalmazáshoz külön Key Vault-példányt használjon.

Hozzáférési kulcsok használata

A HTTP által aktivált függvények általában a függvény nevét tartalmazó URL-címmel hívhatók meg. Ha egy adott függvény engedélyezési szintje nem anonymousértékként van beállítva, 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égpontokatel.

Szerezze meg a függvény hozzáférési kulcsait

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 menüben bontsa ki a Functions elemet, majd válassza az Alkalmazáskulcsok lehetőséget.

    Megjelenik az Alkalmazáskulcsok lap. Ezen a lapon megjelennek a gazda kulcsok, amelyek az alkalmazás bármely funkciójának 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.

Jótanács

A függvények hozzáférési kulcsait az Azure Functions Core Tools paranccsal func azure functionapp list-functions is beszerezheti a --show-keys beállítással. További információkért tekintse meg az Azure Functions Core Tools referenciáját.

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 menüben bontsa ki a Functions elemet, majd válassza az Alkalmazáskulcsok lehetőséget.

    Megjelenik az Alkalmazáskulcsok lap. Ezen a lapon megjelennek a gazda kulcsok, amelyek az alkalmazás bármely funkciójának 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.