Linter-Regel - verwenden Sie protectedSettings for commandToExecute secrets

Diese Regel findet mögliche Belichtung von Geheimnissen in der Einstellungseigenschaft einer benutzerdefinierten Skriptressource.

Linter-Regelcode

Verwenden Sie den folgenden Wert in der Bicep-Konfigurationsdatei, um die Regeleinstellungen anzupassen:

protect-commandtoexecute-secrets

Lösung

Bei benutzerdefinierten Skriptressourcen sollte der Wert commandToExecute unter dem protectedSettings Eigenschaftsobjekt und nicht unter dem Eigenschaftsobjekt settings platziert werden, wenn es geheime Daten wie ein Kennwort enthält. Geheime Daten können z. B. in sicheren Parametern, list*-Funktionen wie listKeys oder in benutzerdefinierten Skriptargumenten gefunden werden.

Verwenden Sie keine Geheimnisdaten im settings-Objekt, da dieses Klartext verwendet. Weitere Informationen finden Sie unter Microsoft.Compute virtualMachines/extensions, Custom Script Extension für Windows und Verwenden der Azure Custom Script Extension Version 2 mit Linux-Virtual-Machines.

Das folgende Beispiel schlägt fehl, weil commandToExecute unter settings angegeben ist und einen sicheren Parameter verwendet.

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

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

resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2019-08-02-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}'
    }
  }
}

Sie können das Problem beheben, indem Sie die commandToExecute-Eigenschaft in das Objekt protectedSettings verschieben.

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

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

resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2019-08-02-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}'
    }
  }
}

Nächste Schritte

Weitere Informationen über den Linter finden Sie unter Verwendung des Bicep-Linters.