你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Linter 规则 - 嵌套部署中的安全参数

外部嵌套部署资源不应用于安全参数或 list* 函数。 可以在部署历史记录中公开安全值。

Linter 规则代码

请在 Bicep 配置文件中使用以下值自定义规则设置:

secure-params-in-nested-deploy

解决方案

部署的 properties.expressionEvaluationOptions.scope 设置为 inner,或者改为使用 Bicep 模块。

以下示例未通过此测试,因为在外部嵌套部署资源中引用了安全参数。

@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'
                }
              }
            ]
          }
        }
      ]
    }
  }
}

可以通过将部署的 properties.expressionEvaluationOptions.scope 设置为“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'
                }
              }
            ]
          }
        }
      ]
    }
  }
}

后续步骤

有关 Linter 的详细信息,请参阅使用 Bicep Linter