Правило анализатора кода — используйте protectedSettings для секретов commandToExecute
Это правило находит возможное раскрытие секретов в свойстве параметров ресурса пользовательского скрипта.
Код правила анализатора кода
Для настройки параметров правил укажите в файле конфигурации Bicep следующее значение:
protect-commandtoexecute-secrets
Решение
Для пользовательских ресурсов скрипта значение commandToExecute
должно быть помещено под объектом свойства protectedSettings
, а не объектом свойства settings
, если оно включает секретные данные, такие как пароль. Например, секретные данные можно найти в параметрах безопасности, таких функциях, как list*
, или аргументах пользовательских скриптов.
Не используйте секретные данные в объекте settings
, так как он использует открытый текст. Дополнительные сведения см. в статьях Microsoft.Compute virtualMachines/extensions, Расширение пользовательских скриптов для Windows и Использование расширения пользовательских скриптов Azure версии 2 с виртуальными машинами Linux.
Следующий пример завершается сбоем, так как commandToExecute
указывается в разделе settings
и использует безопасный параметр.
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 в объект 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}'
}
}
}
Следующие шаги
Дополнительные сведения об анализаторе кода Bicep см. в разделе Использование анализатора кода Bicep.