リンター ルール - ハードコーディングされた環境 URL がない

このルールでは、クラウド環境によって異なるハードコーディングされた URL を検索します。

リンター ルールのコード

ルール設定をカスタマイズするには、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 ファイルを追加し、新しい設定を適用することでこれをカスタマイズできます。

次のステップ

リンターの詳細については、「Bicep リンターの使用方法」を参照してください。