Hogyan hitelesíthet egy alkalmazásszolgáltatást a kulcstároló titkainak olvasásához felügyelt identitás használatával
Bevezetés
Az Azure Key Vault egy hatékony eszköz a titkok, tanúsítványok és kulcsok kezelésére a felhőben. Lehetővé teszi az érzékeny információk, például a kapcsolati karakterláncok, API-kulcsok és jelszavak biztonságos tárolását és hozzáférésének szabályozását. Az Azure Web Apps népszerű webalkalmazások felhőben való tárolására, és gyakran hozzáférést igényel a Key Vaultban tárolt titkokhoz. Ebben a cikkben a Terraform helyett Bicep-et fogunk használni annak bemutatására, hogyan lehet az Azure webalkalmazást Key Vaulthoz csatlakoztatni felügyelt identitás használatával.
Mi az a Bicep?
A Bicep egy tartományspecifikus nyelv (DSL), amely leegyszerűsíti az Azure Resource Manager (ARM)-sablonok létrehozását és kezelését. Úgy tervezték, hogy tömörebb és intuitívabb szintaxist biztosítson, mint a JSON, miközben továbbra is megőrzi az ARM-sablonok teljes erejét. A Bicep a Microsoft nyílt forráskódú projektje, amely gyorsan népszerűvé vált az Azure-közösségben, mint az ARM-sablonok JSON-ban való írásának elérhetőbb és hatékonyabb alternatívája.
Előfeltételek
Mielőtt elkezdené, a következő előfeltételekkel kell rendelkeznünk:
- Azure-előfizetés
- Az Azure CLI telepítve és hitelesítve
- Bicep CLI telepítve
1. Hozzon létre egy kulcstárolót és egy titkot
Az első lépés egy Azure Key Vault létrehozása és egy abban tárolandó titok létrehozása. A Key Vault az Azure Portal, az Azure parancssori felület vagy a Bicep használatával hozható létre. Ebben a cikkben a Bicep segítségével hozzuk létre a kulcstárolót és egy titkot.
Hozzon létre egy keyvault.bicep
nevű fájlt, és adja hozzá a következő kódot:
param keyVaultName string = 'mykeyvault' param location string = 'eastus' resource keyVault 'Microsoft.KeyVault/vaults@2021-06-01-preview' = { name: keyVaultName location: location properties: { sku: { name: 'standard' } tenantId: subscription().tenantId accessPolicies: [ { tenantId: subscription().tenantId objectId: '<object-id-of-your-user-principal>' permissions: { secrets: [ 'get' ] } } ] } } resource secret 'Microsoft.KeyVault/vaults/secrets@2021-06-01-preview' = { name: 'mysecret' properties: { value: '<my-secret-value>' } dependsOn: [ keyVault ] }
Ez a kód új Key Vault-ot hoz létre szabványos termékváltozattal, és hozzáférési házirendet ad hozzá a jelenlegi egyszerű felhasználói fiókhoz, hogy titkokat kapjon a Key Vaultból. Ezenkívül létrehoz egy mysecret
nevű titkot, amelynek értéke <my-secret-value>
.
A Bicep kód telepítéséhez futtassa a következő parancsot a terminálon:
az deployment sub create --location eastus --template-file keyvault.bicep
Ezzel telepíti a Key Vault-ot és a titkot az előfizetéséhez.
2. Hozzon létre egy Azure webalkalmazást felügyelt identitással
A következő lépés egy felügyelt identitással rendelkező Azure Web App létrehozása. A felügyelt identitás egy automatikusan generált identitás, amelyet az Azure kezel, és más Azure-szolgáltatásokkal való hitelesítésre használható.
Hozzon létre egy webapp.bicep
nevű fájlt, és adja hozzá a következő kódot:
param webAppName string = 'mywebapp' param location string = 'eastus' resource webApp 'Microsoft.Web/sites@2021-08-01' = { name: webAppName location: location kind: 'app' identity: { type: 'SystemAssigned' } } output principalId string = webApp.identity.principalId
Ez a kód egy új Azure Web Appot hoz létre egy rendszerhez rendelt felügyelt identitású. A kimeneti blokk lekéri a webalkalmazás principlId-jét, amelyet később fogunk használni.
A Bicep kód telepítéséhez futtassa a következő parancsot a terminálon:
az deployment sub create --location eastus --template-file webapp.bicep
Ezzel létrejön egy új Azure Web App felügyelt identitással.
3. Adjon hozzáférést a Key Vaulthoz
Most, hogy van egy kulcstárolónk és egy felügyelt identitású webalkalmazásunk, hozzáférést kell biztosítanunk a webalkalmazásnak a Key Vaulthoz. Ezt úgy tehetjük meg, hogy hozzáférési szabályzatot adunk a Key Vaulthoz, amely lehetővé teszi a webalkalmazás számára a titkok lekérését.
Hozzon létre egy keyvaultaccess.bicep
nevű fájlt, és adja hozzá a következő kódot:
param keyVaultName string = 'mykeyvault' param webAppPrincipalId string = '<principal-id-of-the-web-app>' resource keyVaultAccess 'Microsoft.KeyVault/vaults/accessPolicies@2021-06-01-preview' = { parent: keyVault name: guid(subscription().subscriptionId, keyVaultName, webAppPrincipalId) properties: { tenantId: subscription().tenantId objectId: webAppPrincipalId permissions: { secrets: [ 'get' ] } } }
Ez a kód hozzáférési házirendet ad a Key Vaulthoz a webalkalmazás felügyelt identitásához. A guid
függvény egyedi nevet hoz létre a hozzáférési szabályzat számára az előfizetési azonosító, a Key Vault neve és a webalkalmazás főazonosítója alapján.
A Bicep kód telepítéséhez futtassa a következő parancsot a terminálon:
az deployment sub create --location eastus --template-file keyvaultaccess.bicep --parameters webAppPrincipalId=<principal-id-of-the-web-app> --parameters keyVaultName=mykeyvault
Ez egy hozzáférési házirendet ad a Key Vaulthoz, amely lehetővé teszi a webalkalmazás számára a titkok lekérését.
4. Csatlakoztassa a Web App alkalmazást a Key Vaulthoz
Végül frissítenünk kell a webalkalmazást, hogy csatlakozhassunk a Key Vaulthoz, és lekérjük a titkot. Ezt a MSI_ENDPOINT
és MSI_SECRET
környezeti változók beállításával tehetjük meg a webalkalmazás konfigurációjában.
Hozzon létre egy webappconfig.bicep
nevű fájlt, és adja hozzá a következő kódot:
param webAppName string = 'mywebapp' param keyVaultName string = 'mykeyvault' resource webAppConfig 'Microsoft.Web/sites/config@2021-08-01' = { name: '${webAppName}/appsettings' properties: { 'MSI_ENDPOINT': '[concat(''http://localhost:50342/oauth2/token?resource='',encodeURIComponent(''https://${keyVaultName}.vault.azure.net''))]' 'MSI_SECRET': '[listsecrets(resourceId(''Microsoft.Web/sites'', '${webAppName}''/providers/Microsoft.ManagedIdentity/Identities/default''), ''2017-09-01'').value]' } dependsOn: [ webApp ] }
Ez a kód beállítja a MSI_ENDPOINT
és MSI_SECRET
környezeti változókat a webalkalmazáshoz. A MSI_ENDPOINT
változó megadja a webalkalmazás felügyelt szolgáltatásazonosítójának (MSI) végpontjának URL-jét, a MSI_SECRET
változó pedig a titkos értéket kéri le a Key Vault-ból a webalkalmazás felügyelt identitásának használatával.
A Bicep kód telepítéséhez futtassa a következő parancsot a terminálon:
az deployment sub create --location eastus --template-file webappconfig.bicep --parameters webAppName=mywebapp --parameters keyVaultName=mykeyvault
Ez frissíti a webalkalmazás konfigurációját a Key Vaulthoz való csatlakozáshoz és a titkos adat lekéréséhez.
Következtetés
A felügyelt identitás használata az erőforrások összekapcsolásához az Azure-ban a legjobb módszer az erőforrások védelmére és az érzékeny információk nyilvánosságra hozatalának kockázatának csökkentésére. A Bicep segítségével egyszerűen kezelheti az Azure-erőforrásokat az infrastruktúrával kódként, és az ebben a cikkben ismertetett lépéseket követve gyorsan és egyszerűen csatlakoztathatja az Azure-erőforrásokat felügyelt identitás használatával.
Level Up kódolás
Köszönjük, hogy közösségünk tagja vagy! Mielőtt mész:
- 👏 Tapsolj a történetért és kövesd a szerzőt 👉
- 📰 Tekintse meg a Level Up Coding kiadvány további tartalmát
- 💰 Ingyenes kódolási interjú tanfolyam ⇒ Tanfolyam megtekintése
- 🔔 Kövess minket: Twitter | LinkedIn | "Hírlevél"
🚀👉 Csatlakozzon a Level Up tehetségcsoporthoz, és találjon egy csodálatos munkát