Condividi tramite


Regola Linter - Nessun URL dell'ambiente hardcoded

Questa regola trova tutti gli URL hardcoded che variano in base all'ambiente cloud.

Codice regola Linter

Usa il valore seguente nel file di configurazione Bicep per personalizzare le impostazioni delle regole:

no-hardcoded-env-urls

Soluzione

Invece degli URL hardcoded nel file Bicep, usare la funzione environment per ottenere dinamicamente questi URL durante la distribuzione. La funzione environment restituisce URL differenti in base all'ambiente cloud in cui si esegue la distribuzione.

L'esempio seguente non supera questo test perché l'URL è hardcoded.

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

Il test ha esito negativo anche quando viene usato con concat o uri.

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

È possibile correggerlo sostituendo l'URL hardcoded con la funzione environment().

var galleryURL = environment().gallery

In alcuni casi, è possibile correggerlo ottenendo una proprietà da una risorsa distribuita. Ad esempio, anziché costruire l'endpoint per l'account di archiviazione, recuperarlo con .properties.primaryEndpoints.

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

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

output endpoint string = sa.properties.primaryEndpoints.web

Impostazione

Per impostazione predefinita, questa regola usa le impostazioni seguenti per determinare quali URL non sono consentiti.

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

È possibile personalizzarla aggiungendo un file bicepconfig.json e applicando nuove impostazioni.

Passaggi successivi

Per altre informazioni su linter, vedi Usare linter di Bicep.