Partager via


Règle de linter : aucune URL d’environnement codée en dur

Cette règle recherche les URL codées en dur qui varient en fonction de l’environnement cloud.

Code de règle de linter

Utilisez la valeur suivante dans le fichier config Bicep pour personnaliser les paramètres de règle :

no-hardcoded-env-urls

Solution

Au lieu des URL codées en dur dans votre fichier Bicep, utilisez la fonction environment pour obtenir dynamiquement ces URL pendant le déploiement. La fonction environment retourne des URL différentes en fonction de l’environnement cloud dans lequel vous effectuez le déploiement.

L’exemple suivant échoue à ce test, car l’URL est codée en dur.

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

De même, le test échoue quand il est utilisé avec concat ou uri.

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

Vous pouvez résoudre ce problème en remplaçant l’URL codée en dur par la fonction environment().

var galleryURL = environment().gallery

Dans certains cas, vous pouvez résoudre le problème en obtenant une propriété à partir d’une ressource que vous avez déployée. Par exemple, au lieu de construire le point de terminaison de votre compte de stockage, récupérez-le avec .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

Configuration

Par défaut, cette règle utilise les paramètres suivants pour déterminer les URL qui ne sont pas autorisées.

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

Vous pouvez la personnaliser en ajoutant un fichier bicepconfig.json et en appliquant de nouveaux paramètres.

Étapes suivantes

Pour plus d’informations sur le linter, consultez Utiliser le linter Bicep.