Biztonságos paraméterérték átadása az Azure Key Vault használatával a Bicep üzembe helyezése során
Ahelyett, hogy közvetlenül a Bicep-fájlba vagy paraméterfájlba helyezné a biztonságos értéket (például egy jelszót), lekérheti az értéket egy Azure-Key Vault az üzembe helyezés során. Ha egy modul módosítóval secure:true
rendelkező paramétert várstring
, a getSecret függvénnyel lekérhet egy kulcstartó titkos kulcsát. Az érték soha nem lesz közzétéve, mert csak a kulcstartó azonosítójára hivatkozik.
Fontos
Ez a cikk a bizalmas értékek sablonparaméterként való átadását ismerteti. Ha a titkos kulcs paraméterként van átadva, a kulcstartó egy másik előfizetésben is létezhet, mint a központilag üzembe helyezendő erőforráscsoport.
Ez a cikk nem ismerteti, hogyan állíthat be egy virtuálisgép-tulajdonságot egy tanúsítvány URL-címére egy kulcstartóban. A forgatókönyv rövid útmutatósablonját lásd: Tanúsítvány telepítése az Azure Key Vault-ból virtuális gépen.
Kulcstartók és titkos kódok üzembe helyezése
Ha a Bicep üzembe helyezése során szeretne hozzáférni egy kulcstartóhoz, állítsa enabledForTemplateDeployment
a kulcstartón a következőre: true
.
Ha már rendelkezik kulcstartóval, győződjön meg arról, hogy engedélyezi a sablontelepítéseket.
az keyvault update --name ExampleVault --enabled-for-template-deployment true
Új kulcstartó létrehozásához és titkos kulcs hozzáadásához használja a következőt:
az group create --name ExampleGroup --location centralus
az keyvault create \
--name ExampleVault \
--resource-group ExampleGroup \
--location centralus \
--enabled-for-template-deployment true
az keyvault secret set --vault-name ExampleVault --name "ExamplePassword" --value "hVFkk965BuUv"
A kulcstartó tulajdonosaként automatikusan rendelkezik hozzáféréssel a titkos kódok létrehozásához. Ha a titkos kódokkal dolgozó felhasználó nem a kulcstartó tulajdonosa, adjon hozzáférést a következőkkel:
az keyvault set-policy \
--upn <user-principal-name> \
--name ExampleVault \
--secret-permissions set delete get list
További információ a kulcstartók létrehozásáról és a titkos kódok hozzáadásáról:
- Titkos kód beállítása és lekérése a parancssori felület használatával
- Titkos kód beállítása és lekérése a PowerShell használatával
- Titkos kód beállítása és lekérése a portál használatával
- Titkos kód beállítása és lekérése a .NET használatával
- Titkos kód beállítása és lekérése a Node.jshasználatával
Hozzáférés biztosítása a titkos kódokhoz
A Bicep-fájlt üzembe helyező felhasználónak rendelkeznie kell az Microsoft.KeyVault/vaults/deploy/action
erőforráscsoport és a kulcstartó hatókörére vonatkozó engedéllyel. A Tulajdonos és a Közreműködő szerepkör egyaránt biztosítja ezt a hozzáférést. Ha létrehozta a kulcstartót, ön a tulajdonos, és rendelkezik az engedéllyel.
Az alábbi eljárás bemutatja, hogyan hozhat létre szerepkört a minimális engedéllyel, és hogyan rendelheti hozzá a felhasználót.
Egyéni szerepkördefiníciós JSON-fájl létrehozása:
{ "Name": "Key Vault Bicep deployment operator", "IsCustom": true, "Description": "Lets you deploy a Bicep file with the access to the secrets in the Key Vault.", "Actions": [ "Microsoft.KeyVault/vaults/deploy/action" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
Cserélje le a "00000000-0000-0000-0000-000000000000" értéket az előfizetés-azonosítóra.
Hozza létre az új szerepkört a JSON-fájl használatával:
az role definition create --role-definition "<path-to-role-file>" az role assignment create \ --role "Key Vault Bicep deployment operator" \ --scope /subscriptions/<Subscription-id>/resourceGroups/<resource-group-name> \ --assignee <user-principal-name>
A minták hozzárendelik az egyéni szerepkört a felhasználóhoz az erőforráscsoport szintjén.
Ha kulcstartót használ egy felügyelt alkalmazás Bicep-fájljával, hozzáférést kell adnia a berendezés erőforrás-szolgáltató szolgáltatásnévéhez. További információ: Hozzáférés Key Vault titkos kód az Azure Managed Applications üzembe helyezésekor.
GetSecret függvény használata
A getSecret függvénnyel lekérheti a kulcstartó titkos kulcsát, és átadhatja az értéket egy modul paraméterének string
. A getSecret
függvény csak egy Microsoft.KeyVault/vaults
erőforráson hívható meg, és csak dekoratorral rendelkező paraméterrel @secure()
használható.
A következő Bicep-fájl létrehoz egy Azure SQL kiszolgálót. A adminPassword
paraméter rendelkezik dekorátorsal @secure()
.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2020-11-01-preview' = {
name: sqlServerName
location: resourceGroup().location
properties: {
administratorLogin: adminLogin
administratorLoginPassword: adminPassword
version: '12.0'
}
}
Használjuk az előző Bicep-fájlt modulként, mivel a fájl neve sql.bicep ugyanabban a könyvtárban van, mint a fő Bicep-fájl.
A következő Bicep-fájl az sql.bicep-et használja modulként. A Bicep-fájl hivatkozik egy meglévő kulcstartóra, és meghívja a függvényt a getSecret
kulcstartó titkos kulcsának lekéréséhez, majd paraméterként átadja az értéket a modulnak.
param sqlServerName string
param adminLogin string
param subscriptionId string
param kvResourceGroup string
param kvName string
resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: kv.getSecret('vmAdminPassword')
}
}
getSecret
A függvény (vagy a névtér minősítőjeaz.getSecret
) is használható egy .bicepparam
fájlban egy titkos kód értékének lekéréséhez egy kulcstartóból.
using './main.bicep'
param secureUserName = getSecret('exampleSubscription', 'exampleResourceGroup', 'exampleKeyVault', 'exampleSecretUserName', 'exampleSecretVersion')
param securePassword = az.getSecret('exampleSubscription', 'exampleResourceGroup', 'exampleKeyVault', 'exampleSecretPassword')
Titkos kulcsok hivatkozása a paraméterfájlban
Ha nem kíván modult használni, közvetlenül a paraméterfájlban hivatkozhat a kulcstartóra. Az alábbi képen látható, hogy a paraméterfájl hogyan hivatkozik a titkos kódra, és hogyan továbbítja ezt az értéket a Bicep-fájlnak.
Megjegyzés
Jelenleg csak a JSON-paraméterek fájljaiban hivatkozhat a kulcstartóra. A Bicep paraméterfájlban nem hivatkozhat a kulcstartóra.
A következő Bicep-fájl egy rendszergazdai jelszót tartalmazó SQL-kiszolgálót helyez üzembe. A jelszóparaméter biztonságos sztringre van állítva. A Bicep azonban nem határozza meg, hogy az érték honnan származik.
param location string = resourceGroup().location
param adminLogin string
@secure()
param adminPassword string
param sqlServerName string
resource sqlServer 'Microsoft.Sql/servers@2022-11-01-preview' = {
name: sqlServerName
location: location
properties: {
administratorLogin: adminLogin
administratorLoginPassword: adminPassword
version: '12.0'
}
}
Most hozzon létre egy paraméterfájlt az előző Bicep-fájlhoz. A paraméterfájlban adjon meg egy paramétert, amely megfelel a Bicep-fájlban található paraméter nevének. A paraméterértékhez hivatkozzon a kulcstartó titkos kódjára. A titkos kódra a kulcstartó erőforrás-azonosítójának és a titkos kód nevének megadásával hivatkozhat:
A következő paraméterfájlban a kulcstartó titkos kódjának már léteznie kell, és statikus értéket kell megadnia az erőforrás-azonosítóhoz.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"adminLogin": {
"value": "exampleadmin"
},
"adminPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
},
"secretName": "ExamplePassword"
}
},
"sqlServerName": {
"value": "<your-server-name>"
}
}
}
Ha a titkos kódnak az aktuális verziótól eltérő verzióját kell használnia, adja meg a tulajdonságot secretVersion
.
"secretName": "ExamplePassword",
"secretVersion": "cd91b2b7e10e492ebb870a6ee0591b68"
Helyezze üzembe a sablont, és adja meg a paraméterfájlt:
az group create --name SqlGroup --location westus2
az deployment group create \
--resource-group SqlGroup \
--template-file <Bicep-file> \
--parameters <parameters-file>
További lépések
- A kulcstartókkal kapcsolatos általános információkért lásd: Mi az Az Azure Key Vault?
- A kulcstitkokra való hivatkozásra vonatkozó teljes példákért tekintse meg a Kulcstartóra vonatkozó példákat a GitHubon.
- A kulcstartóból biztonságos érték átadását ismertető Learn-modulért lásd: Összetett felhőbeli üzemelő példányok kezelése speciális ARM-sablonfunkciókkal.