Regra do Linter – utilizar protectedSettings para os segredos commandToExecute
Esta regra encontra uma possível exposição de segredos na propriedade definições de um recurso de script personalizado.
Código de regra do Linter
Utilize o seguinte valor no ficheiro de configuração do Bicep para personalizar as definições de regras:
protect-commandtoexecute-secrets
Solução
Para recursos de script personalizados, o commandToExecute
valor deve ser colocado sob o protectedSettings
objeto de propriedade em vez do objeto de settings
propriedade se incluir dados secretos, como uma palavra-passe. Por exemplo, os dados secretos podem ser encontrados em parâmetros seguros, list*
funções como listKeys ou em argumentos de scripts personalizados.
Não utilize dados secretos no settings
objeto porque este utiliza texto claro. Para obter mais informações, veja Microsoft.Compute virtualMachines/extensions, Custom Script Extension for Windows e Use the Azure Custom Script Extension Version Version 2 with Linux virtual machines (Utilizar a Extensão de Script Personalizado do Azure Versão 2 com máquinas virtuais do Linux).
O exemplo seguinte falha porque commandToExecute
é especificado em settings
e utiliza um parâmetro seguro.
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}'
}
}
}
Pode corrigi-lo ao mover a propriedade commandToExecute para o protectedSettings
objeto.
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}'
}
}
}
Passos seguintes
Para obter mais informações sobre o linter, consulte Utilizar linter Bicep.