Linter 규칙 - 하드 코드된 환경 URL 없음

이 규칙은 클라우드 환경에 따라 달라지는 하드 코드된 URL을 찾습니다.

Linter 규칙 코드

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

no-hardcoded-env-urls

솔루션

Bicep 파일의 하드 코딩 URL 대신 환경 함수를 사용하여 배포 중에 이러한 URL을 동적으로 가져옵니다. 환경 함수는 배포하는 클라우드 환경에 따라 다른 URL을 반환합니다.

URL이 하드 코드되었으므로 다음 예제는 이 테스트에 실패합니다.

var managementURL = 'https://management.azure.com'

concat 또는 uri와 함께 사용하는 경우에도 테스트에 실패합니다.

var galleryURL1 = concat('https://','gallery.azure.com')
var galleryURL2 = uri('gallery.azure.com','test')

하드 코드된 URL을 environment() 함수로 바꿔서 해결할 수 있습니다.

var galleryURL = environment().gallery

경우에 따라 배포한 리소스에서 속성을 가져와서 해결할 수 있습니다. 예를 들어, 스토리지 계정의 엔드포인트를 생성하는 대신 .properties.primaryEndpoints를 사용하여 검색합니다.

param storageAccountName string
param location string = resourceGroup().location

resource sa 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

output endpoint string = sa.properties.primaryEndpoints.web

구성

기본적으로 이 규칙은 허용되지 않는 URL을 확인하는 데 다음 설정을 사용합니다.

"analyzers": {
  "core": {
    "verbose": false,
    "enabled": true,
    "rules": {
      "no-hardcoded-env-urls": {
        "level": "warning",
        "disallowedhosts": [
          "gallery.azure.com",
          "management.core.windows.net",
          "management.azure.com",
          "database.windows.net",
          "core.windows.net",
          "login.microsoftonline.com",
          "graph.windows.net",
          "trafficmanager.net",
          "datalake.azure.net",
          "azuredatalakestore.net",
          "azuredatalakeanalytics.net",
          "vault.azure.net",
          "api.loganalytics.io",
          "asazure.windows.net",
          "region.asazure.windows.net",
          "batch.core.windows.net"
        ],
        "excludedhosts": [
          "schema.management.azure.com"
        ]
      }
    }
  }
}

bicepconfig.json 파일을 추가하고 새 설정을 적용하여 사용자 지정할 수 있습니다.

다음 단계

Linter에 관한 자세한 내용은 Bicep Linter 사용을 참조하세요.