Boto 的出口安全策略

Egress Security Policy with Boto

我正在尝试为 sg1 创建出站安全组策略,该策略将另一个安全组 sg2 作为目的地。根据 authorize_egress() documentation:

IpPermissions->IPRanges->CidrIp — 您可以指定 CIDR 范围或 源安全组 ,但不能同时指定两者。要指定单个 IPv4 地址,请使用 /32 前缀长度。

SourceSecurityGroupName — 不支持。 使用一组IP权限指定目标安全组

但是,以下代码因意外参数类型错误而失败 — 有谁知道这个 and/or 我做错了什么的语法吗?

sg1 = ec2.create_security_group(GroupName=sg1, Description=sg1, VpcId=vpc.id)

sg1_policy_egress = [{
    'IpProtocol': 'tcp', 
    'FromPort': 443, 
    'ToPort': 443,
    'IpRanges': [{
        'CidrIp': sg2
    }]
}]

sg1.authorize_egress(IpPermissions=sg1_policy_egress)

您不能在 IpRanges 列表中指定群组。您需要改用 UserIdGroupPairs 列表。我建议对 GroupId 字段使用 sg2 组 ID 值。可以使用其他方法来指定目标组,但您描述的情况不需要。

具体你想要:

sg1_policy_egress = [{
    'IpProtocol': 'tcp', 
    'FromPort': 443, 
    'ToPort': 443,
    'UserIdGroupPairs': [{
        'GroupId': sg2
    }]
}]