-
Notifications
You must be signed in to change notification settings - Fork 4
S3でプロキシサーバーからのアクセスのみを許可してみる
mechamogera edited this page Sep 26, 2012
·
4 revisions
- S3バケットへIP(クライアント)制限をしたいが、クライアントのIPが毎回変わると難しい
- このため、HTTPプロキシサーバーをEC2インスタンス上に用意し、そのプロキシサーバーからのアクセスを許可することでクライアントの制限を実現してみる
- クライアント <=> EC2プロキシサーバー <=> S3
- HTTPプロキシサーバー準備
- EC2インスタンスでhttp proxyサーバーを利用するのようにしてEC2インスンタンス環境構築
- EIPを割り当てる
- S3ポリシー設定
- 対象のバケットのポリシーを以下のようにする
- Principal(s):*
- Effect:Allow
- Action:s3:GetObject
- Resource:arn:aws:s3:::[対象バケット名]/*
- Conditions - IpAddress:aws:SourceIp: "[HTTPプロキシサーバーのEIP]/32"
- S3サンプルファイル配置
- Everyoneに対するPermissionがないファイルを準備する
- クライアントから直接S3のファイルをGET => 403 AccessDenied
$ curl https://[バケット名].s3.amazonaws.com/[ファイル名]
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>98678AA78F44750F</RequestId><HostId>AGzLkoXU2ow2uQY8QhxOgOVPYvj0NfpjnJLcRXhsyHVxzq4UFUGr+4eW80GsjU5j</HostId></Error>
- プロキシを設定してS3のファイルをGET => OK
$ curl --proxy-digest --proxy-user [プロキシユーザー]:[プロキシパスワード] --proxy [HTTPプロキシサーバー名]:8080 https://[バケット名].s3.amazonaws.com/[ファイル名]
# => ファイルの中身が出力
- ブラウザでアクセスを確認した際、HTTPSプロキシを設定しておらず、httpsでs3のファイルにアクセスしようとして403になっていた
- iphoneのwifiではプロキシを設定できるが3G回線ではできない
- 3G回線向けに圧縮プロキシが提供されてないのってどうして?…ということで、いろいろ試してみた2 - odawaraの「はてな de メモ」とか参照
- VPCとvyattaでiPhoneからWebProxyを使ってみるをやってみた