AWS S3でIP制限をかける

はじめに

あるあるネタ過ぎてブログに書くのも躊躇しましたが、自分用メモとして。

開発用のAWSのbucketは基本的に要認証にしています、一部のリソースのみ特定のIPからのアクセスは認証無しでもアクセスできるようにしたかった。

ポリシーの生成

AWSにはポリシーと言われる特定のサービスに対して特定の権限を付与するJSON形式で記述できるものがある

詳しくはこちら

で今回もそれを使って特定のIPのみアクセスできるようにする。

手で書ける人はいいが、普段からポリシーを書いてるわけではないので

AWS Policy Generator

で作成したものに許可するIPアドレスを追加することにした。

img

  • Select Type or Policy
    • どのサービスに対するポリシーを付与するかを選択
    • 今回はS3 Bucket Policyを選択
  • Effect
    • 許可するか拒否するか
    • 今回は特定のIPだけ許可するようにしたいのでAllow
  • Principal
    • どのAWSユーザーで行うかを設定
  • AWS Service
    • どのサービスか
    • 今回は Select Type or Policy でS3を設定していたのでAmazon S3に自動でなった
  • Actions
    • サービスに関して許可する権限を設定する
    • 今回は閲覧だけできればいいのでGetObjectを設定
  • Amazon Resource Name
    • どのバケットを対象にするか
    • バケットの特定のディレクトリ以下のファイルだったのでそのようにパスを指定

上記を設定してAdd Policyを選択すると

img

こんな感じに。

Generate Policyをすると

{
  "Id": "Policy123456789",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt123456789",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::some.hoge.bucket",
      "Principal": "*"
    }
  ]
}

ここに以下のように許可するIPを追加する

"Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "123.45.678.90",
                        "231.45.678.90"
                    ]
                }
            }

ポリシーを設定する

ポリシーが生成できたら

S3の設定からポリシーを設定する

img

参考URL


Amazon Web Services実践入門 (WEB+DB PRESS plus)
舘岡 守 今井 智明 永淵 恭子 間瀬 哲也 三浦 悟 柳瀬 任章
技術評論社
売り上げランキング: 7,735