AWS访问受公共IP或VPC限制

时间:2016-07-06 18:46:47

标签: amazon-web-services amazon-s3 amazon-iam amazon-vpc

我尝试使用IAM策略将所有AWS资源的访问权限限制为公共IP或VPC。文档表明这应该工作,它似乎适用于IP案例。但是,只要我为VPC添加条件,它就会中断。

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddressIfExists": {
                "aws:SourceIp": "a.b.c.d/32"
            },
            "StringNotEqualsIfExists": {
                "aws:sourceVpc": "vpc-1234wxyz"
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在" Deny"声明,如果满足任何条件,请求将被拒绝。

对于来自您外部VPC的请求," aws:SourceIp"存在和" aws:sourceVpc"不存在,所以它只评估你的" aws:SourceIp"条件。

对于来自您的VPC内部的请求," aws:SourceIp"存在和" aws:sourceVpc"存在,所以它评估两者。由于您在VPC内部且条件允许访问,但由于您的源IP是您的AWS实例的IP,该条件拒绝访问。

基本上,问题是你依赖" IfExists"假设只有一个或另一个存在,但你的VPC内部都存在。只有当请求来自special case(例如S3)时,才会有Endpoint

  

注意

     

如果请求来自使用Amazon VPC端点的主机,   那么aws:SourceIp键不可用。你应该改为使用   特定于VPC的密钥。有关更多信息,请参阅VPC端点 -   在Amazon VPC用户指南中控制端点的使用。

只有在这种特殊情况下,亚马逊才会删除" aws:SourceIp"这将使你的" IsExists"工作