Udostępnij za pośrednictwem


Reguła linter — użyj wartości chronionej Ustawienia dla wpisów tajnych commandToExecute

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

Kod reguły Linter

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 pod obiektem protectedSettings 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 danych tajnych 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 go naprawić, 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 lintera, zobacz Use Bicep linter (Używanie lintera Bicep).