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:
- App Service-hitelesítés/engedélyezés engedélyezése
- Kérelmek hitelesítése az Azure API Management (APIM) használatával
- A függvényalkalmazás üzembe helyezése virtuális hálózaton
- A függvényalkalmazás üzembe helyezése külön-külön
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.
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 | ✓ |
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 anonymous
egy é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:
- Függvénykulcsok listázása
- Gazdagépkulcsok listázása
- Függvénykulcsok listázása pont
- A gazdagépkulcsok pontjának listázása.
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.
Jelentkezzen be az Azure Portalra, majd keresse meg és válassza a függvényalkalmazást.
Válassza ki a használni kívánt függvényalkalmazást.
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:
- Függvény titkos kódjának létrehozása vagy frissítése
- Függvény titkos kódhelyének létrehozása vagy frissítése
- Gazdagép titkos kódjának létrehozása vagy frissítése
- Gazdagép titkos kódhelyének létrehozása vagy frissítése
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.
Jelentkezzen be az Azure Portalra, majd keresse meg és válassza a függvényalkalmazást.
Válassza ki a használni kívánt függvényalkalmazást.
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.
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:
- Függvény titkos kódjának törlése
- Függvény titkos kódhelyének törlése
- Gazdagép titkos kódjának törlése
- Gazdagép titkos kódhelyének törlése
Az Azure Resource Manager API-k meghívásáról az Azure REST API-referenciában olvashat.