Aturan linter - gunakan protectedSettings untuk rahasia commandToExecute

Aturan ini menemukan kemungkinan paparan rahasia dalam properti pengaturan sumber daya skrip kustom.

Kode aturan Linter

Gunakan nilai berikut pada file konfigurasi Bicep untuk menyesuaikan pengaturan aturan:

protect-commandtoexecute-secrets

Solusi

Untuk sumber daya skrip kustom, nilai commandToExecute harus diletakkan pada objek properti protectedSettings alih-alih objek properti settings apabila mencakup data rahasia seperti kata sandi. Misalnya, data rahasia dapat ditemukan pada parameter aman, fungsi list* seperti listKeys, atau dalam argumen skrip kustom.

Jangan gunakan data rahasia dalam objek settings karena menggunakan teks yang jelas. Untuk informasi selengkapnya, lihat Microsoft.Compute virtualMachines/extensions, Ekstensi Skrip Kustom untuk Windows, dan Menggunakan Ekstensi Skrip Kustom Azure Versi 2 dengan mesin virtual Linux.

Contoh berikut gagal karena commandToExecute ditentukan pada settings dan menggunakan parameter aman.

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

Anda dapat memperbaikinya dengan memindahkan properti commandToExecute ke objek protectedSettings.

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

Langkah berikutnya

Untuk informasi selengkapnya tentang linter, lihat Menggunakan linter Bicep.