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

* "それは壊れます" * * 'aws:sourceVpc'は現在の使用方法がほとんどありません。実際には、私が知っている[1つだけ](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であるためです。

基本的には、どちらか一方しか存在しないが、あなたのVPCの内部に存在するという仮定で、 "IfExists"に頼っているという問題があります。

要求はアマゾンVPCエンドポイントを使用してホストから来る場合、 :要求は(例えばS3へと)Endpointを経由して来た場合にのみ、このためspecial caseありaws:SourceIpキーは使用できません。代わりに VPC固有のキーを使用する必要があります。詳細については、「VPCエンドポイント - Amazon VPCユーザーガイド」の「エンドポイントの使用の制御」を参照してください。

Amazonは、特別なケースでのみ、 "IsExists"を動作させる "aws:SourceIp"を削除します。

関連する問題