Aturan Linter - tidak ada URL lingkungan yang di-hardcode

Aturan ini menemukan URL berkode permanen yang bervariasi menurut lingkungan cloud.

Kode aturan Linter

Gunakan nilai berikut pada file konfigurasi Bicep untuk menyesuaikan pengaturan aturan:

no-hardcoded-env-urls

Solusi

Alih-alih menggunakan URL kode permanen di file Bicep Anda, gunakan fungsi lingkungan untuk mendapatkan URL ini secara dinamis selama penyebaran. Fungsi lingkungan mengembalikan URL yang berbeda berdasarkan lingkungan cloud tempat Anda menyebarkan.

Contoh berikut gagal dalam pengujian ini karena URL dikodekan secara permanen.

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

Pengujian juga gagal ketika digunakan dengan concat atau uri.

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

Anda dapat memperbaikinya dengan mengganti URL yang dikodekan secara permanen dengan fungsi environment().

var galleryURL = environment().gallery

Dalam beberapa kasus, Anda dapat memperbaikinya dengan mendapatkan properti dari sumber daya yang telah Anda sebarkan. Misalnya, alih-alih membangun titik akhir untuk akun penyimpanan Anda, ambil dengan .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

Konfigurasi

Secara default, aturan ini menggunakan pengaturan berikut untuk menentukan URL mana yang dianulir.

"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"
        ]
      }
    }
  }
}

Anda dapat menyesuaikannya dengan menambahkan file bicepconfig.json dan menerapkan pengaturan baru.

Langkah berikutnya

Untuk informasi selengkapnya tentang linter, lihat Menggunakan linter Bicep.