Titkos kódok kezelése az ARM-sablonban az Azure Key Vault olvasásával

Befejeződött

Az Infrastruktúra mint kód (IaC) lényege, hogy az infrastruktúrára vonatkozó követelmények ember által olvasható szövegfájlokban vannak megfogalmazva. Az Azure Resource Manager- (ARM-) sablonok is az IaC formái.

Ahogyan egy alkalmazás kódja, az infrastruktúra kódja is kezelhető egy olyan verziókövetési rendszerben, mint a Git. Így lehetővé válik a másokkal való együttműködés, és a fejlődő infrastruktúra-követelmények változásainak nyomon követése.

Ahogyan az alkalmazáskódba, úgy az ARM-sablonba sem érdemes közvetlenül beleírni olyan bizalmas információkat, mint a jelszavak és az API-kódok. Másként bárki, aki olvasási hozzáféréssel rendelkezik az adattárban, hozzáférhet ezekhez a titkos információkhoz.

Bizalmas információkhoz csak a szervezet arra feljogosított tagjainak szabad hozzáférniük, ugyanakkor ezekre az információkra az ARM-sablonoknak is szükségük van. Az Azure Key Vault a bizalmas információk védelmében segítő eszközök egyike.

Az Azure Key Vault segít a bizalmas információk védelmében

Az Azure Key Vault egy felhőszolgáltatás, amely biztonságos titkoskulcs-tárolóként működik. A Key Vault lehetővé teszi több biztonságos tároló létrehozását, amelyeket kulcstartóknak nevezünk. Ezeket a tárolókat hardveres biztonsági modulok (HSM-ek) védik. A tárolók a titkos alkalmazáskulcsok központi tárolásával csökkentik a biztonsági információk véletlen elvesztésének kockázatát. A kulcstartók a bennük tárolt tartalomhoz való hozzáférést vezérlik és naplózzák is.

A kulcstartó kulcsok és titkos kódok tárolására is alkalmas. Sokféle funkciója miatt jó választás a titkos kódok kezeléséhez, de ugyanilyen jól használható az üzembe helyezési folyamatban is.

  • Szerepköralapú hozzáférés-vezérlés. A kulcstartó különböző szerepkörökkel kezelhető, így biztosítható, hogy az alkalmazások ugyanúgy használhassák, mint a különböző szintű rendszergazdák.

  • A felhasználók és alkalmazások engedélyezése. A kulcstartó konfigurálható úgy, hogy adott felhasználók és alkalmazások is hozzáférjenek. Alkalmazások esetén alkalmazáspéldányt kell létrehozni. A kulcstartó akár úgy is konfigurálható, hogy csak alkalmazáspéldányok férjenek hozzá.

    Megjegyzés:

    A szolgáltatásnevek arra a célra létrehozott identitások, hogy az alkalmazások, üzemeltetett szolgáltatások és automatizált eszközök Azure-erőforrásokhoz férhessenek hozzá. Az erőforrásokhoz való hozzáférés úgy korlátozható, hogy az alkalmazáspéldányhoz csak korlátozott hozzáférési jogokkal rendelkező szerepkört vagy szerepköröket rendel hozzá. Így részletesebben szabályozhatja, hogy mi és milyen mértékben férhet hozzá az erőforrásokhoz.

  • Együttműködés ARM-sablonokkal. Az ARM-sablonok üzembe helyezésekor olvashat egy kulcstartóból. A működéshez némi konfigurációra van szükség. A következő szakasz ezt mutatja be.

Engedélyek konfigurálása

A Key Vault szolgáltatást választotta ki a hitelesítő adatok tárolására. Innen szeretne titkos kódokat kiolvasni az üzembe helyezés során, hogy beállíthassa például egy virtuális gép jelszavát.

A Key Vault beállításához több konfigurálási lépést is végre kell hajtania, hogy az olvasható legyen az üzembe helyezéskor. A lépések a következők:

  1. A Key Vault engedélyezése az üzembe helyezéshez. Engedélyezve kell lennie a Key Vault üzembe helyezéskori olvasásának. Ezt a beállítást átadhatja a létrehozáskor, vagy később is módosíthatja.

  2. A felhasználónak rendelkeznie kell az erőforráscsoportra vonatkozó üzembe helyezési engedéllyel. Ez más üzembe helyezések esetében is így van. Ha azonban még nem hozta létre az erőforráscsoportot, egy szerepkör hozzárendelésével biztosíthatja, hogy üzembe helyezhessen benne.

  3. A felhasználónak a megfelelő hozzáféréssel kell rendelkeznie a kulcstartóhoz. Gondoskodnia kell arról, hogy a megfelelő hozzáféréssel rendelkezik a kulcstartóhoz, amikor az üzembe helyezés során olvassa. Egy kulcstartó a létrehozásakor létrehoz egy hozzáférési szabályzatot, amely megadja az összes titkos kód, kulcs és tanúsítvány kezeléshez szükséges felhasználói jogosultságokat.

Kulcstartó konfigurálása az üzembe helyezéshez

A Key Vault-példányt úgy kell konfigurálni, hogy abból kiolvashatók legyenek a hitelesítő adatok egy ARM-sablon üzembe helyezésekor.

A Key Vault üzembe helyezéshez történő engedélyezésére szolgáló beállítást megadhatja a Key Vault-példány létrehozásakor, vagy később is módosíthatja. A PowerShellben erre egy -EnabledForTemplateDeployment nevű kapcsoló szolgál. Az Azure CLI-ben ez egy --enabled-for-template-deployment nevű argumentum, amelyhez a true értéket is át kell adni.

Megjegyzés:

Az Azure CLI esetében egy true logikai értéket is meg kell adni.

A felhasználónak rendelkeznie kell a kulcstartóra és az erőforráscsoportra vonatkozó üzembe helyezési engedéllyel

Mielőtt megkísérelné az üzembe helyezést, melynek során a kulcstartóból olvas titkos kódokat, bizonyosodjon meg arról, hogy rendelkezik üzembe helyezési engedéllyel. Ezt az engedélyt két szerepkör is megadja:

  • Owner: Ha létrehozta a kulcstartót, automatikusan rendelkezik ezzel a szerepkörével.
  • Contributor: Ez a szerepkör hozzáférést biztosít az összes titkos kulcs kezeléséhez. Ha a kulcstartót nem Ön hozta létre, akkor a legegyszerűbb módszer a Contributor szerepkör megadása.

Egy másik lehetőség, hogy egyéni szerepkört hoz létre, amely tartalmazza az Microsoft.KeyVault/vaults/deploy/action engedélyt.

Az üzembe helyezési paraméterfájl konfigurálása

Ahelyett, hogy kulcs-érték párokként adja meg az egyes paramétereket és azok értékeit az üzembe helyezés során, használhat paraméterfájlt is.

Ebben a paraméterfájlban megadja, mely kulcstartóval és annak mely titkos kódjával szeretne foglalkozni. Ehhez módosít egy paramétert, majd úgy frissíti az üzembe helyezési sablont, hogy ezt a paramétert használja.

Megjegyzés:

A sablon nem tud a kulcstartóról vagy a titkos kódról. Az elvégzett konfiguráció a paraméterfájlban történik.

Kulcstartó és titkos kód paraméteres konfigurálása

A paraméterfájlban egy adott paraméternél adjon meg egy kulcstartót, amelyhez üzembe helyezési engedéllyel rendelkezik. Ez után adja meg az elérni kívánt titkos kódot. A titkos kódot annak nevével adhatja meg. Az üzembe helyezés során ez a konfiguráció a titkos kód értékére lesz feloldva. Itt egy myPassword nevű paraméter van egy adott kulcstartó és egy databaseSecret nevű titkos kód használatára konfigurálva.

"myPassword" : {
  "reference": {
    "keyVault": {
      "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>",
      "secretName": "databaseSecret"
    }
  }
}

A fenti JSON-ban a kulcstartó teljes azonosítójának megadásával a databaseSecret titkos kód van lekérve. A titkos kód így kinyert értéke végül a myPassword paraméterhez van rendelve.

Paraméter hozzárendelése egy erőforrás jelszavához

Ez a lépés nem a kulcstartót érinti. Azt biztosítja, hogy a megfelelő erőforrás a titkos kód értékének kulcstartóból történő kiolvasására konfigurált paramétert használja. Az alábbi rövidített kódrészlet egy virtuális gépi sablonfájlban mutatja be az adminPassword elem kiolvasását a myPassword paraméterből. A titkos kód értéke így az üzembe helyezéskor lesz kiolvasva a kulcstartóból, és hozzárendelve az adminPassword elemhez.

{
  "osProfile": {
    "adminPassword": "[parameters('myPassword')]"
  }
}