2016-07-06 3 views
1

IAM 정책을 사용하여 모든 AWS 리소스에 대한 액세스를 공용 IP 또는 VPC로 제한하려고합니다. 설명서에 따르면 이것이 제대로 작동해야하며 IP 경우에는 정상적으로 작동하는 것으로 보입니다. 그러나 VPC에 대한 조건을 추가하자마자 중단됩니다.공용 IP 또는 VPC로 AWS 액세스 제한

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

어떤 문서를 읽습니까? – error2007s

+0

문제의 원인이되는 정책에 구문 오류가 있습니다. – error2007s

+0

* "it breaks"를 정의하십시오. *'aws : sourceVpc'는 현재 거의 사용되지 않습니다. 실제로, 내가 알고있는 [단 하나] (http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html). –

답변

0

"거부"정책에서 조건 중 하나라도 충족되면 요청이 거부됩니다.

VPC 외부에서 오는 요청의 경우 "aws : SourceIp"가 있고 "aws : sourceVpc"는 존재하지 않으므로 "aws : SourceIp"조건 만 평가합니다.

VPC 내부에서 들어오는 요청의 경우 "aws : SourceIp"가 있고 "aws : sourceVpc"가 있으므로 둘 다 평가됩니다. VPC 내부에 있으므로 조건에 액세스 할 수 있지만 소스 IP는 AWS 인스턴스의 IP이므로 액세스가 거부됩니다.

기본적으로 문제는 "IfExists"에 하나 또는 다른 하나만 있지만 둘 다 존재한다는 가정하에 문제가 발생한다는 것입니다.

요청이 아마존 VPC 엔드 포인트를 사용하는 호스트에서 오는 경우, : 요청 (예 : S3에로)는 Endpoint을 통해 오는 경우에만, 이것에 대한 special case있다 aws : SourceIp 키를 사용할 수 없습니다. 대신 VPC 관련 키를 사용해야합니다. 자세한 내용은 VPC 끝점 - Amazon VPC 사용 설명서의 끝점 사용 제어

Amazon에서는 "IsExists"가 작동하도록 "aws : SourceIp"를 제거합니다.