Compartir a través de


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@2022-09-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.