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