다음을 통해 공유


Linter 규칙 - 중첩 배포의 보안 매개 변수

외부 범위 중첩 배포 리소스는 보안 매개 변수 또는 list* 함수에 사용하면 안 됩니다. 배포 기록에서 보안 값을 노출할 수 있습니다.

Linter 규칙 코드

Bicep 구성 파일의 다음 값을 사용하여 규칙 설정을 사용자 지정합니다.

secure-params-in-nested-deploy

솔루션

배포의 properties.expressionEvaluationOptions.scopeinner로 설정하거나 대신 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 사용을 참조하세요.