我需要创建一个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协议。
答案 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范围。