如何使用 AWS Powershell 工具获取入口规则中允许的安全组 ID?

How do I use the AWS Powershell Tools to get ID's of security groups allowed in ingress rules?

在 AWS Web 控制台中,查看安全组的入站规则可以在源列中显示另一个安全组 ID,而不是 ip 地址。 我需要通过引用其他安全组作为源的 powershell 查看安全组入口规则。

Get-EC2SecurityGroup 似乎没有包含有关其他传入安全组的信息。

要获取有关 AWS 中单个 EC2 安全组的信息,可以使用以下 Powershell 命令:

Get-EC2SecurityGroup -GroupId sg-121kRandStringf912j

结果如下所示:

Description         : My Security Group Description
GroupId             : sg-121kRandStringf912j
GroupName           : SSHIn
IpPermissions       : {Amazon.EC2.Model.IpPermission}
IpPermissionsEgress : {Amazon.EC2.Model.IpPermission}
OwnerId             : 123456789012
Tags                : {Name, aws:cloudformation:stack-name, aws:cloudformation:logical-id, aws:cloudformation:stack-id}
VpcId               : vpc-01q23RandString09ab817

仔细检查使用 IP 地址的规则的 IPPermissions 属性 看起来与此类似:

FromPort         : 22
IpProtocol       : tcp
IpRanges         : {192.168.1.0/32, 192.168.2.0/32}
Ipv6Ranges       : {}
PrefixListIds    : {}
ToPort           : 22
UserIdGroupPairs : {}

注意上面的输出,列出了 IP 范围。

当入口规则允许整个安全组进入时,我希望找到类似的输出。我希望找到与此类似的信息:

FromPort         : 22
IpProtocol       : tcp
IpRanges         : {sg-1q9b2RandomString93q47}
Ipv6Ranges       : {}
PrefixListIds    : {}
ToPort           : 22
UserIdGroupPairs : {}

相反,主 SecurityGroup 对象中的所有其他属性都相似,但在检查 IPPermissions 属性 时,存在该端口的规则,而 IpRanges 属性 为空并且没有' 包含安全组 ID 的任何其他属性。

FromPort         : 22
IpProtocol       : tcp
IpRanges         : {}
Ipv6Ranges       : {}
PrefixListIds    : {}
ToPort           : 22
UserIdGroupPairs : {}

如何使用 Powershell 查找允许其他安全组入站的规则?

您应该会在 UserIdGroupPairs 中看到配置的安全组列表,每个安全组都有 DescriptionGroupIdUserId。那就是awsclireturns。我会检查您是否在请求中提供了正确的安全组 ID。