Reguła lintera — użyj wartości protectedSettings dla wpisów tajnych commandToExecute

Ta reguła znajduje możliwe ujawnienie wpisów tajnych we właściwości settings zasobu niestandardowego skryptu.

Kod reguły lintera

Użyj następującej wartości w pliku konfiguracji Bicep , aby dostosować ustawienia reguły:

protect-commandtoexecute-secrets

Rozwiązanie

W przypadku zasobów skryptu niestandardowego commandToExecute wartość powinna zostać umieszczona w protectedSettings obiekcie właściwości zamiast settings obiektu właściwości, jeśli zawiera ona tajne dane, takie jak hasło. Na przykład dane tajne można znaleźć w bezpiecznych parametrach, funkcjach, list* takich jak listKeys lub w argumentach skryptów niestandardowych.

Nie używaj tajnych danych w obiekcie, ponieważ używa on zwykłego settings tekstu. Aby uzyskać więcej informacji, zobacz Microsoft.Compute virtualMachines/extensions, Custom Script Extension for Windows i Use the Azure Custom Script Extension Version 2 with Linux virtual machines (Używanie rozszerzenia niestandardowego skryptu platformy Azure w wersji 2 z maszynami wirtualnymi z systemem Linux).

Poniższy przykład kończy się niepowodzeniem, ponieważ commandToExecute jest określony w obszarze settings i używa bezpiecznego parametru.

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

Można rozwiązać ten problem, przenosząc właściwość commandToExecute do protectedSettings obiektu .

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

Następne kroki

Aby uzyskać więcej informacji na temat linter, zobacz Use Bicep linter (Używanie lintera Bicep).