Regla linter: parámetros seguros en la implementación anidada
Los recursos de implementación anidados con ámbito externo no deben usarse para parámetros seguros ni funciones list*. Puede exponer los valores seguros en el historial de implementación.
Código de regla de linter
Use el valor siguiente del archivo de configuración de Bicep para personalizar los valores de regla:
secure-params-in-nested-deploy
Soluciones
Establezca las properties.expressionEvaluationOptions.scope a inner
de la implementación en o use en su lugar un módulo de Bicep.
En el ejemplo siguiente se produce un error en esta prueba porque se hace referencia a un parámetro seguro en un recurso de implementación anidado de ámbito externo.
@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'
}
}
]
}
}
]
}
}
}
Puede corregirlo estableciendo las propiedades de la implementación.expressionEvaluationOptions.scope en 'inner':
@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'
}
}
]
}
}
]
}
}
}
Pasos siguientes
Para obtener más información acerca de linter, consulte Uso de linter de Bicep.