我需要创建一个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.0.0.0/0的入站规则。
据我所知SourceIp表示创建资源(sg)而不是资源值的调用aws客户端的IP
我不确定您是否可以使用策略在SG中执行值。
限制通过安全组进行公共访问的ssh入站规则的创建
我相信您可以使用AWS Config检查公共ssh组(然后您可以使用lambda来删除或更新sg)
虽然已经仅适用于ipv4,但已经有aws config“ restricted-ssh”托管规则,因此您可能需要创建自己的规则以确保特定的值或对ipv6的支持
[通常,您将使用自动化脚本来执行此操作,例如使用CloudFormation或Terraform,通过这些脚本,您可以传递已经存在/创建的安全组,该组将具有给定IP的22端口限制。如果没有,那么您将首先创建安全组,然后将其附加到新创建的EC2实例。
如果您手动进行操作,则在创建EC2实例后,您需要将其与安全组连接,并将IP范围从0.0.0.0/0手动更改为您的特定IP范围。