我对PowerShell和AWS CLI并不陌生,已经寻找并寻找发布了此内容的其他人...
我想做的就是正确使用代码来创建每个AWS安全组的报告,以显示入站规则。
这样的东西我会成像输出。
SecurityGroupName GroupID, Type, Protcol, PortRange, Source, Description
SSH & HTTP gs-1111 SSH TCP 22 0.0.0.0/0 Inbound SSH & HTTP
SSH & HTTP gs-1111 HTTP TCP 80 1.2.34 Inbound SSH & HTTP
HTTPS gs-2222 HTTPS TCP 443 0.0.0.0/0
'
但是我不知道。
我可以使用$GroupID=Get-EC2SecurityGroup -Region us-east-1 |Select-Object -ExpandProperty GroupID
ForEach ($item in $GroupID) {
(Get-EC2SecurityGroup -Region us-east-1 -GroupId $item).IpPermissions | Select-Object IPProtocol,IpRange, FromPort,ToPort}
要获得基本规则,但似乎无法结合您需要的所有属性。这是我缺乏能力的地方真正困扰的地方。任何帮助都会很棒!
首先,您需要创建一个包含所有对象的新Powershell array。稍后,运行特定区域中的所有安全组并将相关数据添加到hash-table object。然后,只需将对象添加到我们先前创建的数组中即可。
代码段:
$region = 'YOUR_REGION'
$allSG = @()
Get-EC2SecurityGroup -Region $region | % {
$obj = @{
Description = $_.IpPermission.Ipv4Ranges.Description
GroupId = $_.GroupId
SecurityGroupName = $_.GroupName
Source = $_.IpPermission.Ipv4Ranges.CidrIp
FromPort = $_.IpPermission.FromPort
ToPort = $_.IpPermission.ToPort
Protocol = $_.IpPermission.IpProtocol
}
$object = new-object psobject -Property $obj
$allSG += $object
}
输出:
见解: