Share via


Linterregel – keine hartcodierte Umgebungs-URL

Diese Regel findet alle fest kodierten URLs, die je nach Cloud-Umgebung variieren.

Linter-Regelcode

Verwenden Sie den folgenden Wert in der Bicep-Konfigurationsdatei, um die Regeleinstellungen anzupassen:

no-hardcoded-env-urls

Lösung

Anstatt URLs in Ihrer Bicep-Datei fest zu kodieren, verwenden Sie die Funktion environment, um diese URLs während der Bereitstellung dynamisch abzurufen. Die Umgebungsfunktion gibt je nach der Cloud-Umgebung, in der Sie bereitstellen, unterschiedliche URLs zurück.

Im folgenden Beispiel ist der Test nicht erfolgreich, weil die URL hartcodiert ist.

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

Der Test ist auch bei Verwendung von concat oder urinicht erfolgreich.

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

Sie können das Problem beheben, indem Sie die fest codierte URL durch die Funktion environment() ersetzen.

var galleryURL = environment().gallery

In einigen Fällen können Sie das Problem beheben, indem Sie eine Eigenschaft einer von Ihnen bereitgestellten Ressource abrufen. Anstatt beispielsweise den Endpunkt für Ihr Speicherkonto zu erstellen, rufen Sie ihn mit .properties.primaryEndpoints ab.

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

Standardmäßig verwendet diese Regel die folgenden Einstellungen, um zu bestimmen, welche URLs nicht zulässig sind.

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

Sie können sie anpassen, indem Sie eine bicepconfig.json-Datei hinzufügen und neue Einstellungen anwenden.

Nächste Schritte

Weitere Informationen über den Linter finden Sie unter Verwendung des Bicep-Linters.