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.
Följande exempel misslyckas med 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@2023-04-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.