ec2服务策略,以限制创建入站ssh公共访问权限

时间:2020-04-16 05:38:59

标签: json amazon-web-services amazon-ec2 aws-security-group aws-policies

我需要创建一个AWS服务控制策略,以限制通过安全组进行公共访问的ssh入站规则的创建。
我已经尝试过使用此JSON脚本,但是我搞砸了。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "ec2:RevokeSecurityGroupIngress",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:UpdateSecurityGroupRuleDescriptionsIngress"
            ],
            "Resource": "arn:aws:ec2:*:352571213128:security-group/*",
            "Condition": {
                "ForAnyValue:NotIpAddress": {
                    "aws:SourceIp": [
                        "192.0.2.0/24",
                        "203.0.113.0/24"
                    ]
                }
            }
        }
    ]
}

仍然可以创建0.0.0.0/0的入站规则。 需要:我只需要ssh协议。

2 个答案:

答案 0 :(得分:1)

可以创建

0.0.0.0/0的入站规则。

据我所知,SourceIp表示创建资源(sg)的调用aws客户端的IP,而不是资源中的值

我不确定您可以使用策略在SG中实施值。

通过安全组限制具有公共访问权限的ssh入站规则的创建

我相信您可以使用AWS Config检查公共ssh组(然后您可以使用lambda来删除或更新sg)

虽然仅适用于ipv4,但已经存在aws config“ restricted-ssh”托管规则,因此您可能需要创建自己的规则以确保特定值或ipv6支持

答案 1 :(得分:1)

通常,您将使用自动化脚本来执行此操作,例如使用CloudFormation或Terraform,通过这些脚本,您可以传递已经存在/创建的安全组,该组将具有给定IP的22端口限制。如果没有,那么您将首先创建安全组,然后将其附加到新创建的EC2实例。

如果您是手动执行此操作,则在创建EC2实例后,您将需要与其进行安全组连接,并手动将IP范围从0.0.0.0/0更改为您的特定IP范围。