Linter kuralı - commandToExecute gizli dizileri için protectedSettings kullanma

Bu kural, özel betik kaynağının settings özelliğinde gizli dizilerin olası kullanıma açık olduğunu bulur.

Linter kural kodu

Kural ayarlarını özelleştirmek için Bicep yapılandırma dosyasında aşağıdaki değeri kullanın:

protect-commandtoexecute-secrets

Çözüm

Özel betik kaynakları için, commandToExecute parola gibi gizli veriler içeriyorsa, değer özellik nesnesi yerine özellik nesnesinin settings altına protectedSettings yerleştirilmelidir. Örneğin, gizli veriler güvenli parametrelerde, list* listKeys gibi işlevlerde veya özel betik bağımsız değişkenlerinde bulunabilir.

Nesnede settings gizli veri kullanmayın çünkü düz metin kullanır. Daha fazla bilgi için bkz . Microsoft.Compute virtualMachines/extensions, Windows için Özel Betik Uzantısı ve Linux sanal makineleriyle Azure Özel Betik Uzantısı Sürüm 2'yi kullanma.

Aşağıdaki örnek, altında settings belirtildiğinden ve güvenli bir parametre kullandığından commandToExecute başarısız olur.

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

commandToExecute özelliğini nesnesine protectedSettings taşıyarak sorunu düzeltebilirsiniz.

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

Sonraki adımlar

Lint hakkında daha fazla bilgi için bkz . Bicep linter'i kullanma.