Règle linter : utiliser protectedSettings pour les secrets commandToExecute
Cette règle recherche l’exposition possible de secrets dans la propriété de paramètres d’une ressource de script personnalisé.
Code de règle de linter
Utilisez la valeur suivante dans le fichier config Bicep pour personnaliser les paramètres de règle :
protect-commandtoexecute-secrets
Solution
Pour les ressources de script personnalisé, la valeur commandToExecute
doit être placée sous l’objet de propriété protectedSettings
au lieu de l’objet de propriété settings
si elle inclut des données secrètes, comme un mot de passe. Par exemple, des données secrètes se trouvent dans des paramètres sécurisés, des fonctions list*
telles que listKeys, ou dans des arguments de script personnalisé.
N’utilisez pas de données secrètes dans l’objet settings
, car il utilise du texte clair. Pour plus d’informations, voir Microsoft.Compute virtualMachines/extensions, Extension de script personnalisé pour Windows et Utiliser l’extension de script personnalisé Azure version 2 avec des machines virtuelles Linux.
L’exemple suivant échoue, car commandToExecute
est spécifié sous settings
et utilise un paramètre sécurisé.
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}'
}
}
}
Vous pouvez résoudre ce problème en déplaçant la propriété CommandToExecute vers l’objet 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}'
}
}
}
Étapes suivantes
Pour plus d’informations sur le linter, consultez Utiliser le linter Bicep.