1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| function Invoke-ServerlessHealthCheck { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string]$ResourceGroup )
$context = Get-AzContext $functions = Get-AzFunctionApp -ResourceGroupName $ResourceGroup
$report = [PSCustomObject]@{ Timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' FunctionApps = @() SecurityFindings = @() }
$functions | ForEach-Object { $config = Get-AzFunctionAppSetting -Name $_.Name -ResourceGroupName $ResourceGroup $appReport = [PSCustomObject]@{ AppName = $_.Name RuntimeVersion = $_.Config.NetFrameworkVersion HTTPSOnly = $_.Config.HttpsOnly MinTLSVersion = $config['minTlsVersion'] } $report.FunctionApps += $appReport
if ($appReport.MinTLSVersion -lt '1.2') { $report.SecurityFindings += [PSCustomObject]@{ Severity = 'High' Description = "函数应用 $($_.Name) 使用不安全的TLS版本: $($appReport.MinTLSVersion)" Recommendation = '在应用设置中将minTlsVersion更新为1.2' } } }
$report | Export-Clixml -Path "$env:TEMP/ServerlessSecurityReport_$(Get-Date -Format yyyyMMdd).xml" return $report }
|