要编写一个 PowerShell 脚本来生成 AWS 安全组报告,你需要使用 AWS Tools for PowerShell 并使用 Get-EC2SecurityGroup cmdlet 来获取安全组的信息。以下是一个示例脚本:
# 安装 AWS Tools for PowerShell
Install-Module -Name AWSPowerShell.NetCore
# 设置 AWS 凭证
Set-AWSCredential -ProfileName "your-profile-name"
# 获取所有安全组
$securityGroups = Get-EC2SecurityGroup
# 遍历每个安全组
foreach ($securityGroup in $securityGroups) {
Write-Output "安全组名称: $($securityGroup.GroupName)"
Write-Output "描述: $($securityGroup.Description)"
Write-Output "VPC ID: $($securityGroup.VpcId)"
Write-Output "入站规则:"
# 获取入站规则
$inboundRules = $securityGroup.IpPermissions
# 遍历每个入站规则
foreach ($rule in $inboundRules) {
Write-Output "协议: $($rule.IpProtocol)"
Write-Output "端口范围: $($rule.FromPort)-$($rule.ToPort)"
# 获取来源 IP 地址/范围
$sourceRanges = $rule.IpRanges | Select-Object -ExpandProperty CidrIp
if ($sourceRanges) {
Write-Output "来源 IP 地址/范围: $($sourceRanges -join ', ')"
} else {
Write-Output "来源 IP 地址/范围: 全部"
}
Write-Output ""
}
Write-Output "出站规则:"
# 获取出站规则
$outboundRules = $securityGroup.IpPermissionsEgress
# 遍历每个出站规则
foreach ($rule in $outboundRules) {
Write-Output "协议: $($rule.IpProtocol)"
Write-Output "端口范围: $($rule.FromPort)-$($rule.ToPort)"
# 获取目标 IP 地址/范围
$destinationRanges = $rule.IpRanges | Select-Object -ExpandProperty CidrIp
if ($destinationRanges) {
Write-Output "目标 IP 地址/范围: $($destinationRanges -join ', ')"
} else {
Write-Output "目标 IP 地址/范围: 全部"
}
Write-Output ""
}
Write-Output "-------------------------"
}
你需要将 "your-profile-name" 替换为你的 AWS 配置文件中的配置文件名称。然后,你可以保存脚本为 .ps1 文件,并在 PowerShell 中运行它。它将显示每个安全组的详细信息,包括名称、描述、VPC ID 和入站/出站规则。
上一篇:AWS - 安全组
下一篇:AWS - 安全组未打开端口