Reguła lintera — użyj wartości protectedSettings dla wpisów tajnych commandToExecute
Ta reguła znajduje możliwe ujawnienie wpisów tajnych we właściwości ustawień zasobu niestandardowego skryptu.
Kod reguły Linter
Użyj następującej wartości w pliku konfiguracji Bicep, aby dostosować ustawienia reguły:
protect-commandtoexecute-secrets
Rozwiązanie
W przypadku zasobów skryptu niestandardowego commandToExecute
wartość powinna zostać umieszczona pod obiektem protectedSettings
właściwości zamiast settings
obiektu właściwości, jeśli zawiera ona tajne dane, takie jak hasło. Na przykład dane tajne można znaleźć w bezpiecznych parametrach, funkcjach, list*
takich jak listKeys lub w argumentach skryptów niestandardowych.
Nie używaj danych tajnych w obiekcie, ponieważ używa on zwykłego settings
tekstu. Aby uzyskać więcej informacji, zobacz Microsoft.Compute virtualMachines/extensions, Custom Script Extension for Windows i Use the Azure Custom Script Extension Version 2 with Linux virtual machines (Używanie rozszerzenia niestandardowego skryptu platformy Azure w wersji 2 z maszynami wirtualnymi z systemem Linux).
Poniższy przykład kończy się niepowodzeniem, ponieważ commandToExecute
jest określony w obszarze settings
i używa bezpiecznego parametru.
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}'
}
}
}
Można go naprawić, przenosząc właściwość commandToExecute do protectedSettings
obiektu.
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}'
}
}
}
Następne kroki
Aby uzyskać więcej informacji na temat lintera, zobacz Use Bicep linter (Używanie lintera Bicep).