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.