Linterregel – ingen hårdkodad miljö-URL

Den här regeln hittar hårdkodade URL:er som varierar beroende på molnmiljö.

Linterregelkod

Använd följande värde i Bicep-konfigurationsfilen för att anpassa regelinställningar:

no-hardcoded-env-urls

Lösning

I stället för hårdkodade URL:er i Bicep-filen använder du miljöfunktionen för att dynamiskt hämta dessa URL:er under distributionen. Miljöfunktionen returnerar olika URL:er baserat på den molnmiljö som du distribuerar till.

I följande exempel misslyckas det här testet eftersom URL:en är hårdkodad.

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

Testet misslyckas också när det används med concat eller uri.

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

Du kan åtgärda det genom att ersätta den hårdkodade URL:en med environment() funktionen.

var galleryURL = environment().gallery

I vissa fall kan du åtgärda det genom att hämta en egenskap från en resurs som du har distribuerat. I stället för att till exempel skapa slutpunkten för ditt lagringskonto hämtar du den med .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

Konfiguration

Som standard använder den här regeln följande inställningar för att avgöra vilka URL:er som inte tillåts.

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

Du kan anpassa den genom att lägga till en bicepconfig.json-fil och tillämpa nya inställningar.

Nästa steg

Mer information om linter finns i Använda Bicep-linter.