Oktatóanyag: Olyan függvényalkalmazás létrehozása, amely titkos kulcsok helyett identitásokkal csatlakozik az Azure-szolgáltatásokhoz
Ez az oktatóanyag bemutatja, hogyan konfigurálhat függvényalkalmazásokat titkos kódok vagy kapcsolati sztring helyett Microsoft Entra-identitásokkal, ahol lehetséges. Az identitások használatával elkerülheti a bizalmas titkos kódok véletlen kiszivárogtatását, és jobban átláthatóbbá teheti az adatok elérését. Az identitásalapú kapcsolatokról további információt az identitásalapú kapcsolatok konfigurálásáról szóló cikkben talál.
Bár a bemutatott eljárások általában minden nyelven működnek, ez az oktatóanyag jelenleg kifejezetten a Windows C#-osztálykódtár-funkcióit támogatja.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Függvényalkalmazás létrehozása az Azure-ban ARM-sablon használatával
- A rendszer által hozzárendelt és a felhasználó által hozzárendelt felügyelt identitások engedélyezése a függvényalkalmazásban
- Olyan szerepkör-hozzárendelések létrehozása, amelyek engedélyeket adnak más erőforrásoknak
- Nem lecserélhető titkos kulcsok áthelyezése az Azure Key Vaultba identitásokkal
- Alkalmazás konfigurálása az alapértelmezett gazdagéptárolóhoz való csatlakozáshoz a felügyelt identitás használatával
Az oktatóanyag elvégzése után be kell fejeznie a következő oktatóanyagot, amely bemutatja, hogyan [használjon identitásalapú kapcsolatokat titkos kulcsok helyett triggerekkel és kötésekkel].
Előfeltételek
Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
Az Azure Functions Core Tools 4.x-es verziója.
Miért érdemes identitást használni?
A titkos kódok és a hitelesítő adatok kezelése gyakori kihívást jelent minden méretű csapat számára. A titkos kulcsokat védeni kell a lopás vagy a véletlen felfedés ellen, és előfordulhat, hogy rendszeres időközönként el kell forgatni őket. Számos Azure-szolgáltatás lehetővé teszi, hogy ehelyett a Microsoft Entra-azonosítóban lévő identitással hitelesítse az ügyfeleket, és ellenőrizze az engedélyeket, amelyek gyorsan módosíthatók és visszavonhatók. Ezzel nagyobb mértékben szabályozható az alkalmazásbiztonság, kevesebb üzemeltetési többletterhelés mellett. Az identitás lehet emberi felhasználó, például egy alkalmazás fejlesztője, vagy egy felügyelt identitással rendelkező futó alkalmazás az Azure-ban.
Mivel egyes szolgáltatások nem támogatják a Microsoft Entra-hitelesítést, az alkalmazások bizonyos esetekben még mindig titkos kulcsokat igényelhetnek. Ezek a titkos kódok azonban tárolhatók az Azure Key Vaultban, ami megkönnyíti a titkos kulcsok felügyeleti életciklusát. A kulcstartóhoz való hozzáférés identitásokkal is vezérelhető.
Ha tisztában van azzal, hogyan használhat identitásokat titkos kulcsok helyett, és ha nem tudja, hogyan használhatja a Key Vaultot, csökkentheti a kockázatokat, csökkentheti a működési terhelést, és általában javíthatja az alkalmazások biztonsági helyzetét.
Olyan függvényalkalmazás létrehozása, amely a Key Vaultot használja a szükséges titkos kódokhoz
Az Azure Files egy olyan szolgáltatás példája, amely még nem támogatja a Microsoft Entra-hitelesítést a kiszolgálói üzenetblokkok (SMB) fájlmegosztásaihoz. Az Azure Files az alapértelmezett fájlrendszer a Prémium és Használati csomagokban futó Windows-telepítésekhez. Bár az Azure Files teljes mértékben eltávolítható, ez olyan korlátozásokat vezet be, amelyeket nem feltétlenül szeretne. Ehelyett áthelyezi az Azure Files kapcsolati sztring az Azure Key Vaultba. Így központilag van felügyelve, az identitás által szabályozott hozzáféréssel.
Azure Key Vault létrehozása;
Először egy kulcstartóra van szüksége a titkos kulcsok tárolásához. Úgy konfigurálja, hogy azure-beli szerepköralapú hozzáférés-vezérlést (RBAC) használjon annak meghatározásához, hogy ki olvashat titkos kulcsokat a tárolóból.
Az Azure Portalon válassza az Erőforrás létrehozása (+) lehetőséget.
Az erőforrás létrehozása lapon válassza a Security>Key Vault lehetőséget.
Az Alapszintű beállítások lapon az alábbi táblázat segítségével konfigurálhatja a kulcstartót.
Lehetőség Ajánlott érték Leírás Előfizetés Az Ön előfizetése Előfizetés, amely alatt ez az új függvényalkalmazás létrejön. Erőforráscsoport myResourceGroup Annak az új erőforráscsoportnak a neve, amelyben a függvényalkalmazást létrehozza. Kulcstartó neve Globálisan egyedi név Az új kulcstartót azonosító név. A tároló neve csak alfanumerikus karaktereket és kötőjeleket tartalmazhat, és nem kezdődhet számmal. Tarifacsomag Standard A számlázás lehetőségei. A Standard elegendő ehhez az oktatóanyaghoz. Régió Előnyben részesített régió Válasszon ki egy Önhöz közeli régiót vagy a függvények által elérhető egyéb szolgáltatásokat. Használja az alapértelmezett beállításokat a "Helyreállítási beállítások" szakaszokhoz.
Jegyezze fel a használt nevet későbbi használatra.
Válassza a Tovább: Hozzáférési szabályzat lehetőséget az Access Policy lapra való navigáláshoz.
Az Engedélymodell területen válassza az Azure szerepköralapú hozzáférés-vezérlését
Válassza az Áttekintés + létrehozás lehetőséget. Tekintse át a konfigurációt, majd válassza a Létrehozás elemet.
Identitás és engedélyek beállítása az alkalmazáshoz
Az Azure Key Vault használatához az alkalmazásnak rendelkeznie kell egy identitással, amely engedélyt adhat a titkos kódok olvasására. Ez az alkalmazás felhasználó által hozzárendelt identitást használ, hogy az engedélyeket még az alkalmazás létrehozása előtt be lehessen állítani. További információ az Azure Functions felügyelt identitásairól: Felügyelt identitások használata az Azure Functionsben.
Az Azure Portalon válassza az Erőforrás létrehozása (+) lehetőséget.
Az Erőforrás létrehozása lapon válassza az Identitásfelhasználó>által hozzárendelt felügyelt identitás lehetőséget.
Az Alapszintű beállítások lapon az alábbi táblázat segítségével konfigurálhatja az identitást.
Lehetőség Ajánlott érték Leírás Előfizetés Az Ön előfizetése Előfizetés, amely alatt ez az új függvényalkalmazás létrejön. Erőforráscsoport myResourceGroup Annak az új erőforráscsoportnak a neve, amelyben a függvényalkalmazást létrehozza. Régió Előnyben részesített régió Válasszon ki egy Önhöz közeli régiót vagy a függvények által elérhető egyéb szolgáltatásokat. Név Globálisan egyedi név Az új felhasználó által hozzárendelt identitást azonosító név. Válassza az Áttekintés + létrehozás lehetőséget. Tekintse át a konfigurációt, majd válassza a Létrehozás elemet.
Az identitás létrehozásakor lépjen rá a portálon. Válassza a Tulajdonságok lehetőséget, és jegyezze fel az erőforrás-azonosítót későbbi használatra.
Válassza az Azure-szerepkör-hozzárendelések lehetőséget, majd válassza a Szerepkör-hozzárendelés hozzáadása (előzetes verzió) lehetőséget.
A Szerepkör-hozzárendelés hozzáadása (előzetes verzió) lapon használja az alábbi táblázatban látható beállításokat.
Lehetőség Ajánlott érték Leírás Hatókör Key Vault A hatókör olyan erőforrások készlete, amelyekre a szerepkör-hozzárendelés vonatkozik. A hatókör alacsonyabb szinteken öröklődő szinteket is rendelkezik. Ha például kiválaszt egy előfizetési hatókört, a szerepkör-hozzárendelés az előfizetésben lévő összes erőforráscsoportra és erőforrásra vonatkozik. Előfizetés Az Ön előfizetése Előfizetés, amely alatt ez az új függvényalkalmazás létrejön. Erőforrás A kulcstartó A korábban létrehozott kulcstartó. Szerepkör Key Vault titkos kulcsok felhasználója A szerepkörök a megadott engedélyek gyűjteményei. A Key Vault titkos kulcsainak felhasználója engedélyt ad az identitásnak arra, hogy titkos értékeket olvasson be a tárolóból. Válassza a Mentés lehetőséget. Az identitás szerepkör-hozzárendelési listájának frissítésekor eltarthat egy-két percig, amíg a szerepkör megjelenik.
Az identitás mostantól képes olvasni a kulcstartóban tárolt titkos kulcsokat. Az oktatóanyag későbbi részében további szerepkör-hozzárendeléseket adhat hozzá különböző célokra.
Sablon létrehozása függvényalkalmazás létrehozásához
Mivel a függvényalkalmazások létrehozásának portálélménye nem működik együtt az Azure Key Vaulttal, létre kell hoznia és szerkesztenie kell egy Azure Resource Manager-sablont. Ezután ezzel a sablonnal létrehozhatja a függvényalkalmazást, amely az Azure Files kapcsolati sztring hivatkozik a kulcstartóból.
Fontos
Ne hozza létre a függvényalkalmazást az ARM-sablon szerkesztése után. Az Azure Files konfigurációját az alkalmazás létrehozásakor kell beállítani.
Az Azure Portalon válassza az Erőforrás létrehozása (+) lehetőséget.
Az Erőforrás létrehozása lapon válassza a Számítási>függvényalkalmazás lehetőséget.
Az Alapok lapon az alábbi táblázat segítségével konfigurálhatja a függvényalkalmazást.
Lehetőség Ajánlott érték Leírás Előfizetés Az Ön előfizetése Előfizetés, amely alatt ez az új függvényalkalmazás létrejön. Erőforráscsoport myResourceGroup Annak az új erőforráscsoportnak a neve, amelyben a függvényalkalmazást létrehozza. Függvényalkalmazás neve Globálisan egyedi név Az új függvényalkalmazást azonosító név. Az érvényes karakterek az a-z
(kis- és nagybetűk megkülönböztetése nélkül)0-9
és az-
.Közzététel Kód Válassza ki a kódfájlok vagy egy Docker-tároló közzétételét. Futtatókörnyezeti verem .NET Ez az oktatóanyag a .NET-et használja. Régió Előnyben részesített régió Válasszon ki egy Önhöz közeli régiót vagy a függvények által elérhető egyéb szolgáltatásokat. Válassza az Áttekintés + létrehozás lehetőséget. Az alkalmazás az alapértelmezett értékeket használja a Hosting and Monitoring (Üzemeltetés és figyelés ) lapon. Tekintse át az alapértelmezett beállításokat, amelyeket a létrehozott ARM-sablon tartalmaz.
Ahelyett, hogy itt létrehozná a függvényalkalmazást, válassza a Következő gombtól jobbra található Sablon letöltése automatizáláshoz lehetőséget.
A sablonlapon válassza az Üzembe helyezés lehetőséget, majd az Egyéni üzembe helyezés lapon válassza a Sablon szerkesztése lehetőséget.
A sablon szerkesztése
Most szerkessze a sablont, hogy az Azure Files kapcsolati sztring a Key Vaultban tárolja, és lehetővé tegye a függvényalkalmazás számára, hogy hivatkozzon rá. A folytatás előtt győződjön meg arról, hogy a korábbi szakaszokban szereplő alábbi értékekkel rendelkezik:
- A felhasználó által hozzárendelt identitás erőforrás-azonosítója
- A kulcstartó neve
Feljegyzés
Ha egy teljes sablont szeretne létrehozni az automatizáláshoz, a megfelelő dependsOn
záradékokkal együtt az identitás- és szerepkör-hozzárendelési erőforrások definícióit is tartalmaznia kell. Ez a portált használó korábbi lépéseket váltaná fel. Tekintse meg az Azure Resource Manager útmutatását és az egyes szolgáltatások dokumentációját.
A szerkesztőben keresse meg a tömb kezdő helyét
resources
. A függvényalkalmazás definíciója előtt adja hozzá a következő szakaszt, amely az Azure Files kapcsolati sztring a Key Vaultba helyezi. Cserélje le a "VAULT_NAME" szót a kulcstartó nevére.{ "type": "Microsoft.KeyVault/vaults/secrets", "apiVersion": "2016-10-01", "name": "VAULT_NAME/azurefilesconnectionstring", "properties": { "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]" }, "dependsOn": [ "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]" ] },
A függvényalkalmazás-erőforrás definíciójában (amely a következőre
Microsoft.Web/sites
vantype
beállítva) adja hozzáMicrosoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring
adependsOn
tömböt. Cserélje le ismét a "VAULT_NAME" szót a kulcstartó nevére. Ezzel megakadályozza, hogy az alkalmazás a titkos kód definiálása előtt létrejönjön. AdependsOn
tömbnek a következő példához hasonlóan kell kinéznie:{ "type": "Microsoft.Web/sites", "apiVersion": "2018-11-01", "name": "[parameters('name')]", "location": "[parameters('location')]", "tags": null, "dependsOn": [ "microsoft.insights/components/idcxntut", "Microsoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring", "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]", "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]" ], // ... }
Adja hozzá a
identity
következő példában szereplő blokkot a függvényalkalmazás-erőforrás definíciójához. Cserélje le a "IDENTITY_RESOURCE_ID" kifejezést a felhasználó által hozzárendelt identitás erőforrás-azonosítójára.{ "apiVersion": "2018-11-01", "name": "[parameters('name')]", "type": "Microsoft.Web/sites", "kind": "functionapp", "location": "[parameters('location')]", "identity": { "type": "SystemAssigned,UserAssigned", "userAssignedIdentities": { "IDENTITY_RESOURCE_ID": {} } }, "tags": null, // ... }
Ez a
identity
blokk egy rendszer által hozzárendelt identitást is beállít, amelyet az oktatóanyag későbbi részében fog használni.Adja hozzá a
keyVaultReferenceIdentity
tulajdonságot aproperties
függvényalkalmazás objektumához, ahogyan az alábbi példában is látható. Cserélje le a "IDENTITY_RESOURCE_ID" kifejezést a felhasználó által hozzárendelt identitás erőforrás-azonosítójára.{ // ... "properties": { "name": "[parameters('name')]", "keyVaultReferenceIdentity": "IDENTITY_RESOURCE_ID", // ... } }
Erre a konfigurációra azért van szükség, mert egy alkalmazáshoz több felhasználó által hozzárendelt identitás is konfigurálható. Amikor felhasználó által hozzárendelt identitást szeretne használni, meg kell adnia egy azonosítót. A rendszer által hozzárendelt identitásokat nem kell így megadni, mert egy alkalmazás csak egyszer rendelkezhet ilyen azonosítóval. A felügyelt identitást használó számos funkció feltételezi, hogy alapértelmezés szerint a rendszer által hozzárendeltetet kell használnia.
Keresse meg az alkalmazásbeállítást meghatározó
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
JSON-objektumokat, amelyeknek az alábbi példához hasonlóan kell kinéznie:{ "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]" },
Cserélje le a
value
mezőt a titkos kódra mutató hivatkozásra az alábbi példában látható módon. Cserélje le a "VAULT_NAME" szót a kulcstartó nevére.{ "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', 'VAULT_NAME', 'azurefilesconnectionstring')).secretUri, ')')]" },
A frissített ARM-sablon mentéséhez válassza a Mentés lehetőséget.
A módosított sablon üzembe helyezése
Győződjön meg arról, hogy a létrehozási beállítások , beleértve az erőforráscsoportot is, továbbra is helyesek, és válassza a Véleményezés + létrehozás lehetőséget.
A sablon ellenőrzése után jegyezze fel a tárfiók nevét, mivel ezt a fiókot később fogja használni. Végül válassza a Létrehozás lehetőséget az Azure-erőforrások létrehozásához és a kód üzembe helyezéséhez a függvényalkalmazásban.
Az üzembe helyezés befejezése után válassza az Ugrás az erőforráscsoportra lehetőséget, majd válassza ki az új függvényalkalmazást.
Gratulálunk! Sikeresen létrehozta a függvényalkalmazást, hogy hivatkozzon az Azure Files kapcsolati sztring az Azure Key Vaultból.
Amikor az alkalmazásnak fel kell vennie egy titkos kódra mutató hivatkozást, csak meg kell határoznia egy új alkalmazásbeállítást, amely a Key Vaultban tárolt értékre mutat. További információkért tekintse meg az Azure Functions Key Vault-hivatkozásait.
Tipp.
Az Application Insights kapcsolati sztring és a benne foglalt rendszerállapotkulcs nem minősül titkos kulcsnak, és olvasói engedélyekkel kérhető le az App Insightsból. Nem kell áthelyeznie őket a Key Vaultba, bár biztosan megteheti.
Felügyelt identitás használata az AzureWebJobsStorage-hoz
Ezután a kapcsolat előző lépéseiben konfigurált rendszer által hozzárendelt identitást AzureWebJobsStorage
fogja használni. AzureWebJobsStorage
a Functions-futtatókörnyezet, valamint több eseményindító és kötés használja a több futó példány közötti koordinációhoz. A függvényalkalmazás működéséhez szükséges, és az Azure Fileshoz hasonlóan alapértelmezés szerint egy kapcsolati sztring van konfigurálva új függvényalkalmazás létrehozásakor.
A rendszer által hozzárendelt identitás hozzáférésének biztosítása a tárfiókhoz
A felhasználó által hozzárendelt identitással és a kulcstartóval korábban követett lépésekhez hasonlóan most létrehoz egy szerepkör-hozzárendelést, amely hozzáférést biztosít a rendszer által hozzárendelt identitásnak a tárfiókhoz.
Az Azure Portalon lépjen a függvényalkalmazással korábban létrehozott tárfiókra.
Válassza a Hozzáférés-vezérlés (IAM) lehetőséget. Ezen a lapon tekintheti meg és konfigurálhatja, hogy ki férhet hozzá az erőforráshoz.
Válassza a Hozzáadás és a Szerepkör-hozzárendelés hozzáadása lehetőséget.
Keresse meg a Storage Blob-adatok tulajdonosát, jelölje ki, majd válassza a Tovább elemet
A Tagok lap Hozzáférés hozzárendelése területén válassza a Felügyelt identitás lehetőséget
Válassza a Tagok kijelölése lehetőséget a Felügyelt identitások kiválasztása panel megnyitásához.
Győződjön meg arról, hogy az előfizetés az, amelyben korábban létrehozta az erőforrásokat.
A felügyelt identitásválasztóban válassza a Függvényalkalmazás lehetőséget a rendszer által hozzárendelt felügyelt identitás kategóriából. A függvényalkalmazás címkéje mellett lehet egy szám zárójelben, amely a rendszer által hozzárendelt identitásokkal rendelkező előfizetésben lévő alkalmazások számát jelzi.
Az alkalmazásnak a beviteli mezők alatti listában kell megjelennie. Ha nem látja, a Kiválasztás mezővel szűrheti az eredményeket az alkalmazás nevével.
Válassza ki az alkalmazást. A kijelölt tagok szakaszra kell lépnie. Válassza a Kiválasztás lehetőséget
A Szerepkör-hozzárendelés hozzáadása képernyőn válassza a Véleményezés + hozzárendelés lehetőséget. Tekintse át a konfigurációt, majd válassza a Véleményezés + hozzárendelés lehetőséget.
Tipp.
Ha egy blob által aktivált függvényhez szeretné használni a függvényalkalmazást, meg kell ismételnie ezeket a lépéseket a tárfiók közreműködői és tárolási üzenetsor-adatszolgáltatói szerepköreihez az AzureWebJobsStorage által használt fiókon keresztül. További információ: Blob trigger identitásalapú kapcsolatok.
Az AzureWebJobsStorage konfigurációjának szerkesztése
Ezután frissíti a függvényalkalmazást a rendszer által hozzárendelt identitás használatára, amikor a blobszolgáltatást használja a gazdagéptárolóhoz.
Fontos
A AzureWebJobsStorage
konfigurációt egyes triggerek és kötések használják, és ezeknek a bővítményeknek is képesnek kell lenniük identitásalapú kapcsolatok használatára. Előfordulhat, hogy a blob-eseményindítókat vagy eseményközpont-eseményindítókat használó alkalmazásoknak frissítenie kell ezeket a bővítményeket. Mivel ehhez az alkalmazáshoz nem definiáltak függvényeket, még nincs probléma. Ha többet szeretne megtudni erről a követelményről, olvassa el a Csatlakozás a gazdagép tárolójához identitással című témakört.
Hasonlóképpen AzureWebJobsStorage
az üzembehelyezési összetevőkhöz is használható, amikor kiszolgálóoldali buildet használ a Linux-használatban. Ha engedélyezi az identitásalapú kapcsolatokat AzureWebJobsStorage
a Linux-használatban, külső üzembe helyezési csomagon keresztül kell üzembe helyeznie.
Az Azure Portalon keresse meg a függvényalkalmazást.
A függvényalkalmazásban bontsa ki a Beállítások elemet, majd válassza a Környezeti változók lehetőséget.
Az Alkalmazásbeállítások lapon válassza ki az AzureWebJobsStorage alkalmazásbeállítást, és szerkessze az alábbi táblázat szerint:
Lehetőség Ajánlott érték Leírás Név AzureWebJobsStorage__accountName Módosítsa a nevet az AzureWebJobsStorage névről a pontos névre AzureWebJobsStorage__accountName
. Ez a beállítás arra utasítja a gazdagépet, hogy a tárolt titkos kulcsok keresése helyett használja az identitást. Az új beállítás dupla aláhúzásjelet (__
) használ, amely egy speciális karakter az alkalmazásbeállításokban.Érték A fiók neve Frissítse a nevet a kapcsolati sztring csak a StorageAccountName névre. Ez a konfiguráció arra utasítja a rendszert, hogy használjon identitást az erőforráshoz való csatlakozáshoz.
Válassza az Alkalmaz lehetőséget, majd az Alkalmaz és megerősítés lehetőséget a módosítások mentéséhez és az alkalmazásfüggvény újraindításához.
Ezzel eltávolította az AzureWebJobsStorage tárolási kapcsolati sztring követelményét úgy, hogy úgy konfigurálja az alkalmazást, hogy ehelyett felügyelt identitásokkal csatlakozzon a blobokhoz.
Feljegyzés
A __accountName
szintaxis egyedi az AzureWebJobsStorage-kapcsolathoz, és más tárolási kapcsolatokhoz nem használható. Az egyéb kapcsolatok definiálásához tekintse meg az alkalmazás által használt egyes triggerek és kötések hivatkozását.
Következő lépések
Ez az oktatóanyag bemutatta, hogyan hozhat létre függvényalkalmazást anélkül, hogy titkos kulcsokat tárolhat a konfigurációjában.
Folytassa a következő oktatóanyagtal, amelyből megtudhatja, hogyan használhat identitásokat az eseményindító és kötési kapcsolatokban.