Linter-Regel: sichere Parameter in geschachtelter Bereitstellung
Outer-scope-Ressourcen für geschachtelte Bereitstellungen sollten nicht für sichere Parameter oder list*-Funktionen verwendet werden. Dadurch können die sicheren Werte im Bereitstellungsverlauf verfügbar gemacht werden.
Linter-Regelcode
Verwenden Sie den folgenden Wert in der Bicep-Konfigurationsdatei, um die Regeleinstellungen anzupassen:
secure-params-in-nested-deploy
Lösung
Legen Sie properties.expressionEvaluationOptions.scope der Bereitstellung auf inner
fest, oder verwenden Sie stattdessen ein Bicep-Modul.
Im folgenden Beispiel schlägt dieser Test fehl, da in einer Outer-scope-Ressource für eine geschachtelte Bereitstellung auf einen sicheren Parameter verwiesen wird.
@secure()
param secureValue string
resource nested 'Microsoft.Resources/deployments@2024-03-01' = {
name: 'nested'
properties: {
mode: 'Incremental'
template: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
contentVersion: '1.0.0.0'
variables: {}
resources: [
{
name: 'outerImplicit'
type: 'Microsoft.Network/networkSecurityGroups'
apiVersion: '2023-11-01'
location: '[resourceGroup().location]'
properties: {
securityRules: [
{
name: 'outerImplicit'
properties: {
description: format('{0}', secureValue)
protocol: 'Tcp'
}
}
]
}
}
]
}
}
}
Sie können dies korrigieren, indem Sie „properties.expressionEvaluationOptions.scope“ der Bereitstellung auf „inner“ festlegen:
@secure()
param secureValue string
resource nested 'Microsoft.Resources/deployments@2024-03-01' = {
name: 'nested'
properties: {
mode: 'Incremental'
expressionEvaluationOptions: {
scope: 'Inner' // Set to inner scope
}
template: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
contentVersion: '1.0.0.0'
variables: {}
resources: [
{
name: 'outerImplicit'
type: 'Microsoft.Network/networkSecurityGroups'
apiVersion: '2023-11-01'
location: '[resourceGroup().location]'
properties: {
securityRules: [
{
name: 'outerImplicit'
properties: {
description: format('{0}', secureValue)
protocol: 'Tcp'
}
}
]
}
}
]
}
}
}
Nächste Schritte
Weitere Informationen über den Linter finden Sie unter Verwendung des Bicep-Linters.