Compartilhar via


Regra de linter – nenhuma URL de ambiente embutida em código

Essa regra localiza quaisquer URLs embutidas em código que variam de acordo com o ambiente de nuvem.

Código de regra linter

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

no-hardcoded-env-urls

Solução

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

O exemplo a seguir reprova neste teste porque a URL está inserida no código.

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

O teste também reprova 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 a URL embutida em código pela função environment().

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óximas etapas

Para saber mais sobre o linter, confira Usar o linter do Bicep.