Поделиться через


Правило анализатора кода — отсутствие жестко заданных URL-адресов среды

Это правило находит все жестко заданные URL-адреса, которые зависят от облачной среды.

Код правила анализатора кода

Для настройки параметров правил укажите в файле конфигурации Bicep следующее значение:

no-hardcoded-env-urls

Решение

Вместо жесткого задания URL-адресов в файле Bicep используйте функцию environment для динамического получения URL-адресов во время развертывания. Функция environment возвращает разные URL-адреса в зависимости от облачной среды, где выполняется развертывание.

Следующий пример не проходит этот тест, так как URL-адрес задан жестко.

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

Тест также завершается ошибкой при использовании concat или uri.

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

Это можно исправить, заменив жестко заданный URL-адрес функцией environment().

var galleryURL = environment().gallery

В некоторых случаях это можно исправить, получив свойство из развернутого ресурса. Например, вместо того чтобы создавать конечную точку для учетной записи хранения, извлеките ее с помощью .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

Настройка

По умолчанию это правило использует следующие параметры для определения URL-адресов, которые являются запрещенными.

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

Вы можете настроить его, добавив файл bicepconfig.json и применив новые параметры.

Следующие шаги

Дополнительные сведения об анализаторе кода Bicep см. в разделе Использование анализатора кода Bicep.