Linter 規則 - 沒有硬式編碼的環境 URL
此規則會尋找依雲端環境而有所不同的硬式編碼 URL。
Linter 規則程式碼
使用 Bicep 設定檔中的下列值來自訂規則設定:
no-hardcoded-env-urls
解決方案
與其使用 Bicep 檔案中的硬式編碼 URL,您可使用環境函式在部署期間動態取得這些 URL。 環境函式會根據要部署的雲端環境而傳回不同 URL。
下列範例會導致此測試失敗,因為 URL 為硬式編碼。
var managementURL = 'https://management.azure.com'
使用 concat 或 uri 時,測試也會失敗。
var galleryURL1 = concat('https://','gallery.azure.com')
var galleryURL2 = uri('gallery.azure.com','test')
您可使用 environment()
函式來取代硬式編碼的 URL,以修正此問題。
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 檔案並套用新的設定,以進行自訂。
下一步
如需 Linter 的詳細資訊,請參閱使用 Bicep Linter。