Pravidlo Linter – použití protectedSettings pro tajné kódy commandToExecute

Toto pravidlo najde možné odhalení tajných kódů ve vlastnosti nastavení prostředku vlastního skriptu.

Kód pravidla Linter

K přizpůsobení nastavení pravidla použijte v konfiguračním souboru Bicep následující hodnotu:

protect-commandtoexecute-secrets

Řešení

U prostředků vlastních skriptů commandToExecute by hodnota měla být umístěna pod protectedSettings objekt vlastnosti místo objektu settings vlastnosti, pokud obsahuje tajná data, jako je heslo. Tajná data lze například najít v zabezpečených parametrech, funkcích, list* jako jsou listKeys, nebo v argumentech vlastních skriptů.

Nepoužívejte v objektu settings tajná data, protože používá prostý text. Další informace najdete v tématech Microsoft.Compute virtualMachines/extensions, Rozšíření vlastních skriptů pro Windows a Použití rozšíření vlastních skriptů Azure verze 2 s virtuálními počítači s Linuxem.

Následující příklad selže, protože commandToExecute je zadán v části settings a používá zabezpečený parametr.

param vmName string
param location string
param fileUris string
param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
  name: storageAccountName
}

resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2023-03-15-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}'
    }
  }
}

Můžete jej opravit přesunutím commandToExecute vlastnost do objektu protectedSettings .

param vmName string
param location string
param fileUris string
param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
  name: storageAccountName
}

resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2023-03-15-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}'
    }
  }
}

Další kroky

Další informace o linteru najdete v tématu Použití nástroje Bicep linter.