Dela via


Linter-regel – använd protectedSettings för commandToExecute-hemligheter

Den här regeln hittar eventuell exponering av hemligheter i egenskap för inställningar för en anpassad skriptresurs.

Linterregelkod

Använd följande värde i Bicep-konfigurationsfilen för att anpassa regelinställningar:

protect-commandtoexecute-secrets

Lösning

För anpassade skriptresurser commandToExecute bör värdet placeras under protectedSettings egenskapsobjektet i stället för egenskapsobjektet settings om det innehåller hemliga data, till exempel ett lösenord. Till exempel kan hemliga data hittas i säkra parametrar, list* funktioner som listKeys eller i anpassade skriptargument.

Använd inte hemliga data i settings objektet eftersom det använder klartext. Mer information finns i Microsoft.Compute virtualMachines/extensions, Custom Script Extension for Windows och Use the Azure Custom Script Extension Version 2 with Linux virtual machines (Använda Azure Custom Script Extension Version 2 med virtuella Linux-datorer).

Följande exempel misslyckas eftersom commandToExecute anges under settings och använder en säker parameter.

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

Du kan åtgärda det genom att flytta egenskapen commandToExecute till objektet 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}'
    }
  }
}

Nästa steg

Mer information om linter finns i Använda Bicep-linter.