Linter 規則 - 針對 commandToExecute 秘密使用 protectedSettings
此規則會在自訂指令碼資源的設定屬性中尋找可能暴露的秘密。
Linter 規則程式碼
使用 Bicep 設定檔中的下列值來自訂規則設定:
protect-commandtoexecute-secrets
解決方案
針對自訂指令碼資源,若 commandToExecute
值包含秘密資料 (如密碼),則應置於 protectedSettings
屬性物件下,而不是 settings
屬性物件下。 例如,您可在安全參數、list*
函式 (如 listKeys) 或自訂指令碼引數中找到秘密資料。
由於 settings
物件使用純文字,因此請勿在其中使用祕密資料。 如需詳細資訊,請參閱 Microsoft.Compute virtualMachines/延伸模組、適用於 Windows 的自訂指令碼延伸模組,以及搭配 Linux 虛擬機器使用 Azure 自訂指令碼延伸模組第 2 版。
下列範例由於在 settings
下指定 commandToExecute
並使用安全參數,因此會失敗。
param vmName string
param location string
param fileUris string
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2023-10-03-preview' = {
name: '${vmName}/CustomScriptExtension'
location: location
properties: {
publisher: 'Microsoft.Compute'
type: 'CustomScriptExtension'
autoUpgradeMinorVersion: true
settings: {
fileUris: split(fileUris, ' ')
commandToExecute: 'mycommand ${storageAccount.listKeys().keys[0].value}'
}
}
}
您可將 commandToExecute 屬性移至 protectedSettings
物件,以修正此問題。
param vmName string
param location string
param fileUris string
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2023-10-03-preview' = {
name: '${vmName}/CustomScriptExtension'
location: location
properties: {
publisher: 'Microsoft.Compute'
type: 'CustomScriptExtension'
autoUpgradeMinorVersion: true
settings: {
fileUris: split(fileUris, ' ')
}
protectedSettings: {
commandToExecute: 'mycommand ${storageAccount.listKeys().keys[0].value}'
}
}
}
下一步
如需 Linter 的詳細資訊,請參閱使用 Bicep Linter。