2016-08-11 14 views
0

私は現在、mets-logosという名前のバケットを持っています。現在のところ、このバケットポリシーは、誰からでもGetObjectを許可しています。AWS S3バケットポリシーの制限が一連のIPに与えられますか?

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mets-logos/*" 
     } 
    ] 
} 

私は、IPのホワイトリストのみからGetObjectsを許可したいと考えています。ここでは(まだオブジェクトを取得することができますIPの外で)私が試したものですが、それは動作しません

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mets-logos/*", 
      "Condition": { 
       "IpAddress": { 
        "aws:SourceIp": [ 
         "100.77.17.80/32", 
         "100.77.26.210/32", 
        ] 
       } 
      } 
     } 
    ] 
} 

サイドの質問:私のバケットポリシーが正しい場合、私はAWSはこの変更を反映するのを待つ必要がある、またはすべきでありませんすぐに反映されますか?このように、例外と一緒に、拒否追加

+0

範囲をブロックしようとしていますか、それらの2つのIPだけをブロックしようとしていますか? – error2007s

+0

私はそれらの2つのIPに対してのみ許可したいと思います。ほかにだれも –

答えて

1

試してみてください。

{ 
    "Version":"2012-10-17", 
    "Id":"S3PolicyId1", 
    "Statement": 
    [ 
     { 
      "Sid"  : "IPAllow", 
      "Effect" : "Deny", 
      "Principal": "*", 
      "Action" : "s3:GetObject", 
      "Resource" : "arn:aws:s3:::mets-logos/*", 
      "Condition": { 
       "IpAddress" : { 
        "aws:SourceIp": "0.0.0.0/0" 
       }, 
       "NotIpAddress": { 
        "aws:SourceIp": "100.77.17.80/32" 
       }, 
       "NotIpAddress": { 
        "aws:SourceIp": "100.77.26.210/32" 
       } 
      } 
     } 
    ] 
} 

これは、明示的にすべてのIPアドレスへのアクセスを拒否していますがGetObjectを実行するためにホワイトリストされている2つのアドレスを許可します。

IAM資格情報でS3にアクセスしているが、バケットレベルでのアクセスをさらに制御したい場合は、これがどのように役立つかがわかります。このポリシーのDenyは、既存のIAMユーザーポリシーを上書きします。


ご質問にお答えいただくために、ポリシーの変更がすぐに反映されます。

0

S3バケットへのアクセスは、S3バケットポリシーとバケットにアクセスするプリンシパルに接続されているIAMアクセスポリシーの両方によって管理されます。

したがって、IAMアクセスポリシーがS3バケットポリシーを「無効にする」可能性があります。

S3バケットポリシーでは、「IPがそうであれば許可します」と表示されます。しかし、バケツのポリシーには「誰にも許可しない」というものは何もありません。

バケットにアクセスするIAMユーザ/ロールがバケット上のs3:GetObject(または*)を許可する場合、そのポリシーはバケットにアクセスできるようにします。

IAMユーザー/ロールに「s3:GetObject」(または「s3:*」)の明示的な「許可」がない場合、ポリシーは機能します。

許可されていないバケットへのアクセスがIPアドレスに制限されるのを防ぐには、許可されたIPアドレス以外のユーザーを "拒否"するようにポリシーを変更する必要があります。バケツポリシーの明示的な「拒否」は、IAMユーザ/ロールのポリシーの「許可」を無効にします。

このポリシーをお試しください。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "DenyAllButFromAllowedIp", 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mets-logos/*", 
      "Condition": { 
       "NotIpAddress": { 
        "aws:SourceIp": [ 
         "100.77.17.80/32", 
         "100.77.26.210/32", 
        ] 
       } 
      } 
     } 
    ] 
} 
関連する問題