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

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

Kód pravidla Linteru

K přizpůsobení nastavení pravidel 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 settings objektu vlastnosti, pokud obsahuje tajná data, jako je heslo. Například v zabezpečených parametrech, funkcích, list* jako jsou listKeys, nebo v argumentech vlastních skriptů, se dají najít tajná data.

Nepoužívejte v objektu settings tajná data, protože používají prostý text. Další informace najdete v tématu 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@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}'
    }
  }
}

Můžete to 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@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}'
    }
  }
}

Další kroky

Další informace o linteru naleznete v tématu Použití linter Bicep.