Condividi tramite


Regola Linter: usare protectedSettings per i segreti commandToExecute

Questa regola rileva la possibile esposizione dei segreti nella proprietà delle impostazioni di una risorsa script personalizzata.

Codice regola Linter

Usa il seguente valore nel file di configurazione Bicep per personalizzare le impostazioni delle regole:

protect-commandtoexecute-secrets

Soluzione

Per le risorse script personalizzate, il valore commandToExecute deve essere inserito nell'oggetto proprietà protectedSettings anziché nell'oggetto proprietà settings se include dati segreti, ad esempio una password. Ad esempio, i dati segreti sono disponibili in parametri sicuri, funzioni list* come listKeys o argomenti script personalizzati.

Non usare i dati segreti nell'oggetto settings perché usa testo in chiaro. Per altre informazioni, vedere Microsoft.Compute virtualMachines/extensions, Estensione script personalizzata per Windows e Usare l'estensione script personalizzata di Azure versione 2 con macchine virtuali Linux.

L'esempio seguente ha esito negativo perché commandToExecute è specificato in settings e usa un parametro sicuro.

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}'
    }
  }
}

È possibile correggerlo spostando la proprietà commandToExecute nell'oggetto 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}'
    }
  }
}

Passaggi successivi

Per ulteriori informazioni su linter, vedere Usare linter di Bicep.