Règle Linter : sécuriser les paramètres dans le déploiement imbriqué
Les ressources de déploiement imbriquées à étendue externe ne doivent pas être utilisées pour les fonctions de paramètres sécurisés ou de liste*. Vous pouvez exposer les valeurs sécurisées dans l’historique de déploiement.
Code de règle de linter
Utilisez la valeur suivante dans le fichier config Bicep pour personnaliser les paramètres de règle :
secure-params-in-nested-deploy
Solution
Définissez à la place les propriétés.expressionEvaluationOptions.scopeinner
du déploiement ou utilisez un module Bicep.
L’exemple suivant échoue à ce test, car un paramètre sécurisé est référencé dans une ressource de déploiement imbriquée externe.
@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'
}
}
]
}
}
]
}
}
}
Vous pouvez le corriger en définissant les propriétés.expressionEvaluationOptions.scope du déploiement sur « 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'
}
}
]
}
}
]
}
}
}
Étapes suivantes
Pour plus d’informations sur le linter, consultez Utiliser le linter Bicep.