Partilhar via


Regra de Linter - sem URL de ambiente codificado

Esta regra localiza todos os URLs codificados que variam de acordo com o ambiente de nuvem.

Código da regra de linha

Use o seguinte valor no arquivo de configuração do Bicep para personalizar as configurações da regra:

no-hardcoded-env-urls

Solução

Em vez de codificar URLs no arquivo Bicep, use a função de ambiente para obter dinamicamente essas URLs durante a implantação. A função de ambiente retorna URLs diferentes com base no ambiente de nuvem no qual você está implantando.

O exemplo a seguir falha neste teste porque a URL é codificada.

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

O teste também falha quando usado com concat ou uri.

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

Você pode corrigi-lo substituindo o URL codificado environment() pela função.

var galleryURL = environment().gallery

Em alguns casos, você pode corrigi-lo obtendo uma propriedade de um recurso que você implantou. Por exemplo, em vez de construir o ponto de extremidade para sua conta de armazenamento, recupere-o com .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

Configuração

Por padrão, essa regra usa as seguintes configurações para determinar quais URLs não são 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"
        ]
      }
    }
  }
}

Você pode personalizá-lo adicionando um arquivo bicepconfig.json e aplicando novas configurações.

Próximos passos

Para obter mais informações sobre o linter, consulte Usar binter linter.