Home » Server » AWSのS3でコンテンツにIP制限をかける方法

Check     このエントリーをはてなブックマークに追加

Amazon Simple Storage Service(S3)に置いているコンテンツにIP制限をかける方法。

S3のBucket(バケット)単位やファイル単位で、Permissionsの「bucket policy」という機能を利用すれば簡単にコントロールが可能だ。

S3のBucketの「Properties」→「Permissions」→「Add bucket policy」を選択すると、テキストエリアだけのWindowが立ち上がるので、そこにルールを記述したJSONを貼りつければよい。

詳しくみていくと、例えば「192.168.1.13」からのIPのみ許可したい場合は下記のようなJSONとなる。

JAVASCRIPT:
  1. {
  2.     "Version": "2008-10-17",
  3.     "Id": "Policy11223344",
  4.     "Statement": [
  5.         {
  6.             "Sid": "Stmt11223344",
  7.             "Effect": "Deny",
  8.             "Principal": {
  9.                 "AWS": "*"
  10.             },
  11.             "Action": "s3:*",
  12.             "Resource": "arn:aws:s3:::<bucket-name>/*",
  13.             "Condition": {
  14.                 "NotIpAddress": {
  15.                     "aws:SourceIp": "192.168.1.13/32"
  16.                 }
  17.             }
  18.         }
  19.     ]
  20. }

「bucket-name」の部分は制限を掛けたいBucketの名前に置き換える。その後に続く「/*」の部分を指定したファイルを指定できる。

また、複数IPを指定したい場合は、"NotIpAddress"の要素を配列にしてあげればよい。

JAVASCRIPT:
  1. "Condition": {
  2.     "NotIpAddress": {
  3.         "aws:SourceIp":
  4.             ["192.168.1.13/32","192.168.1.14/32"]
  5.     }
  6. }

これらを応用すれば、特定のIPを制限したりなどの指定も可能でしょう。

下記のPolicy GeneratorでWeb上でJSONファイルを作成することも可能。

AWS Policy Generator

IP制限以外にも、UA,Referer判定などいろんなことができそう。

Using Bucket Policies

Check     このエントリーをはてなブックマークに追加
タグ: ,