A paraméterek védelme

Befejeződött

Néha bizalmas értékeket kell átadnia az üzemelő példányoknak, például jelszavakat és API-kulcsokat. Azonban gondoskodnia kell arról, hogy ezek az értékek védettek legyenek. Bizonyos helyzetekben nem szeretné, hogy az üzembe helyezést létrehozó személy megismerje a titkos értékeket. Máskor valaki megadja a paraméter értékét az üzembe helyezés létrehozásakor, de meg kell győződnie arról, hogy a titkos értékek nincsenek naplózva. Ebben a leckében megismerheti, hogyan védheti meg a paramétereket.

Tipp.

A legjobb módszer a hitelesítő adatok teljes használatának elkerülése. Az Azure-erőforrások felügyelt identitásai lehetővé teszik a megoldás összetevői számára, hogy hitelesítő adatok nélkül biztonságosan kommunikáljanak egymással. A felügyelt identitások nem minden erőforráshoz érhetők el, de érdemes őket bárhol használni. Ahol nem, ott használhatja az itt leírt módszereket.

Megjegyzés:

Az egység parancsai a fogalmakat szemléltetik. Még ne futtassa a parancsokat. Hamarosan gyakorolja, amit itt tanul.

Biztonságos paraméterek definiálása

A @secure dekorátor olyan sztring- és objektumparaméterekre alkalmazható, amelyek titkos értékeket tartalmazhatnak. Ha egy paramétert a következőképpen @securehatároz meg, az Azure nem teszi elérhetővé a paraméterértékeket az üzembe helyezési naplókban. Ha interaktívan hozza létre az üzembe helyezést az Azure CLI vagy az Azure PowerShell használatával, és az üzembe helyezés során meg kell adnia az értékeket, a terminál nem fogja megjeleníteni a szöveget a képernyőn.

A HR-alkalmazások migrálásának részeként üzembe kell helyeznie egy Azure SQL logikai kiszolgálót és adatbázist. A logikai kiszolgálót rendszergazdai bejelentkezéssel és jelszóval fogja kiépíteni. Mivel érzékenyek, ezeket az értékeket védeni kell. Íme egy példa deklaráció, amely két sztringparamétert hoz létre az SQL Server rendszergazdájának adataihoz:

@secure()
param sqlServerAdministratorLogin string

@secure()
param sqlServerAdministratorPassword string

Figyelje meg, hogy egyik paraméter sem rendelkezik alapértelmezett értékkel. Célszerű elkerülni a felhasználónevek, jelszavak és egyéb titkos kódok alapértelmezett értékeinek megadását. Ellenkező esetben, ha valaki üzembe helyezi a sablont, és nem veszi észre, hogy felül kell bírálnia az értéket, akkor gyengíti a biztonságát, mert az alapértelmezett értéket kapja ahelyett, amit saját maga választott.

Tipp.

Győződjön meg arról, hogy nem hoz létre kimeneteket bizalmas adatokhoz. A kimeneti értékeket bárki elérheti, aki hozzáfér az üzembe helyezési előzményekhez. Nem alkalmasak titkos kódok kezelésére.

Ne használjon paraméterfájlokat titkos kódokhoz

Ahogy az előző leckében megtudta, a paraméterfájlok kiválóan használhatók paraméterértékek halmazának megadására. Gyakran fog paraméterfájlokat létrehozni minden olyan környezethez, amelyre üzembe helyez. Általában kerülje a paraméterfájlok használatát a titkos értékek megadásához. A paraméterfájlokat gyakran egy központi verziókövetési rendszerbe, például a Gitbe menti a rendszer. A jövőben sokan hozzáférhetnek hozzá. Ne mentse a bizalmas adatokat a verziókövetési rendszerekbe, mert ezek nem ilyen típusú információk tárolására lettek kialakítva.

Integrálás az Azure Key Vaulttal

Az Azure Key Vault egy olyan szolgáltatás, amely titkos kulcsok tárolására és elérésére szolgál. A Bicep-sablonokat a Key Vaulttal egy paraméterfájllal integrálhatja egy Key Vault-titkos kódra mutató hivatkozással.

Ezt a funkciót a paraméterfájl kulcstartójára és titkos kulcsára hivatkozva használhatja. Az érték soha nem lesz közzétéve, mert csak az azonosítójára hivatkozik, ami önmagában nem titkos. A sablon üzembe helyezésekor az Azure Resource Manager kapcsolatba lép a kulcstartóval, és lekéri az adatokat.

Tipp.

A kulcstartókban található titkos kulcsokra hivatkozhat, amelyek más erőforráscsoportban vagy előfizetésben találhatók, mint amelyikbe üzembe helyez.

Diagram that shows a parameter file reference Azure Key Vault and pass secret to Bicep template to deploy Azure resources.

Íme egy paraméterfájl, amely Key Vault-hivatkozásokkal keresi meg az SQL logikai kiszolgáló rendszergazdájának bejelentkezési adatait és jelszavát:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "sqlServerAdministratorLogin": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/PlatformResources/providers/Microsoft.KeyVault/vaults/toysecrets"
        },
        "secretName": "sqlAdminLogin"
      }
    },
    "sqlServerAdministratorPassword": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/PlatformResources/providers/Microsoft.KeyVault/vaults/toysecrets"
        },
        "secretName": "sqlAdminLoginPassword"
      }
    }
  }
}

Figyelje meg, hogy az egyes paraméterek megadása helyett value ez a fájl egy reference objektummal rendelkezik, amely tartalmazza a kulcstartó és a titkos kulcs részleteit.

Fontos

A kulcstartót úgy kell konfigurálni, hogy a Resource Manager hozzáférhessen a kulcstartóban lévő adatokhoz a sablontelepítések során. Emellett a sablont üzembe helyező felhasználónak engedéllyel kell rendelkeznie a kulcstartó eléréséhez. A következő leckében megtanulhatja, hogyan végezheti el ezeket a feladatokat.

A Key Vault használata modulokkal

A modulok lehetővé teszik, hogy olyan újrafelhasználható Bicep-fájlokat hozzon létre, amelyek erőforrások készletét tartalmazzák. Gyakori, hogy modulok használatával helyezi üzembe a megoldás egyes részeit. A modulok olyan paraméterekkel rendelkezhetnek, amelyek titkos értékeket fogadnak el, és a Bicep Key Vault-integrációjával biztonságosan biztosíthatja ezeket az értékeket. Íme egy példa Bicep-fájl, amely üzembe helyez egy modult, és a titkos paraméter értékét adja meg közvetlenül a ApiKey Key Vaultból:

resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = {
  name: keyVaultName
}

module applicationModule 'application.bicep' = {
  name: 'application-module'
  params: {
    apiKey: keyVault.getSecret('ApiKey')
  }
}

Figyelje meg, hogy ebben a Bicep-fájlban a Key Vault-erőforrásra hivatkozik a existing kulcsszó. A kulcsszó azt jelzi a Bicepnek, hogy a Key Vault már létezik, és ez a kód az adott tárolóra mutató hivatkozás. Bicep nem fogja újra üzembe helyezni. Figyelje meg azt is, hogy a modul kódja a getSecret() modul apiKey paraméterének értékében lévő függvényt használja. Ez egy speciális Bicep-függvény, amely csak biztonságos modulparaméterekkel használható. A Bicep belsőleg lefordítja ezt a kifejezést a korábban megismert Key Vault-referenciára.