リンター ルール - ハードコーディングされた環境 URL がない
このルールでは、クラウド環境によって異なるハードコーディングされた URL を検索します。
リンター ルールのコード
ルール設定をカスタマイズするには、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')
これは、ハードコーディングされた 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 リンターの使用方法」を参照してください。