Reguła lintera — brak zakodowanego na stałe adresu URL środowiska

Ta reguła znajduje wszelkie zakodowane adresy URL, które różnią się w zależności od środowiska chmury.

Kod reguły lintera

Użyj następującej wartości w pliku konfiguracji Bicep , aby dostosować ustawienia reguły:

no-hardcoded-env-urls

Rozwiązanie

Zamiast trwale kodować adresy URL w pliku Bicep, użyj funkcji środowiska , aby dynamicznie pobierać te adresy URL podczas wdrażania. Funkcja environment zwraca różne adresy URL na podstawie wdrażanego środowiska w chmurze.

Poniższy przykład nie powiedzie się w tym teście, ponieważ adres URL jest zakodowany na stałe.

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

Test również kończy się niepowodzeniem w przypadku użycia z concat lub uri.

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

Możesz rozwiązać ten problem, zastępując zakodowany adres URL funkcją environment() .

var galleryURL = environment().gallery

W niektórych przypadkach można rozwiązać ten problem, uzyskując właściwość z wdrożonego zasobu. Na przykład zamiast konstruowania punktu końcowego dla konta magazynu pobierz go za pomocą polecenia .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

Konfigurowanie

Domyślnie ta reguła używa następujących ustawień do określania, które adresy URL są niedozwolone.

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

Można go dostosować, dodając plik bicepconfig.json i stosując nowe ustawienia.

Następne kroki

Aby uzyskać więcej informacji na temat linter, zobacz Use Bicep linter (Używanie lintera Bicep).