Regra de Linter - use protectedSettings para segredos commandToExecute
Esta regra encontra a possível exposição de segredos na propriedade de configurações de um recurso de script personalizado.
Código de regra linter
Use o seguinte valor no arquivo de configuração Bicep para personalizar as configurações de regra:
protect-commandtoexecute-secrets
Solução
Para recursos de script personalizados, o valor commandToExecute
deve ser colocado sob o objeto de propriedade protectedSettings
em vez do objeto de propriedade settings
se ele incluir dados secretos, como uma senha. Por exemplo, os dados secretos podem ser encontrados em parâmetros seguros, em funções list*
, como listKeys, ou em argumentos de scripts personalizados.
Não use dados com segredo no objeto settings
porque eles usam texto não criptografado. Para obter mais informações, consulte Microsoft.Compute virtualMachines/extensions, Custom Script Extension for Windows e Usar a versão 2 da extensão de script personalizado do Azure com máquinas virtuais do Linux.
O exemplo a seguir falha porque commandToExecute
é especificado em settings
e usa um parâmetro seguro.
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}'
}
}
}
Você pode corrigi-lo movendo a propriedade commandToExecute para o objeto 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}'
}
}
}
Próximas etapas
Para saber mais sobre o linter, confira Usar o linter do Bicep.