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@2023-04-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.