Regla de linter: ninguna dirección URL de entorno codificada de forma rígida
Esta regla busca las direcciones URL codificadas de forma rígida que varían en función del entorno de nube.
Código de regla de linter
Use el valor siguiente del archivo de configuración de Bicep para personalizar los valores de regla:
no-hardcoded-env-urls
Solución
En lugar de codificar de forma rígida las URL en el archivo Bicep, use la función environment para obtener estas direcciones URL de forma dinámica durante la implementación. La función de entorno devuelve distintas direcciones URL en función del entorno de nube en el que se implemente.
En el siguiente ejemplo no se supera esta prueba porque la URL está codificada de forma rígida.
var managementURL = 'https://management.azure.com'
La prueba también genera un error cuando se usa con concat o uri.
var galleryURL1 = concat('https://','gallery.azure.com')
var galleryURL2 = uri('gallery.azure.com','test')
Para corregirlo, reemplace la dirección URL codificada de forma rígida por la función environment()
.
var galleryURL = environment().gallery
En algunos casos, puede corregirlo obteniendo una propiedad de un recurso que ha implementado. Por ejemplo, en lugar de construir el punto de conexión para la cuenta de almacenamiento, recupérelo 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
Configuración
De forma predeterminada, esta regla usa la siguiente configuración para determinar qué direcciones URL no están permitidas.
"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"
]
}
}
}
}
Para personalizarla, puede agregar un archivo bicepconfig.json y aplicar una nueva configuración.
Pasos siguientes
Para obtener más información acerca de linter, consulte Uso de linter de Bicep.