A paraméterek védelme
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 @secure
hatá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.
Í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@2023-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.