目的
EC2, S3にIP制限をかけたい。
構成
LB => EC2 => S3
設定方法
EC2 Server
[admin /etc/httpd/conf]$ vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/********"
Options FollowSymLinks
ServerName ********
RewriteEngine on
<Directory "/var/www/html/********">
Options FollowSymLinks
AllowOverride None
Order deny,allow
SetEnvIf X-Forwarded-For "***\.***\.***\.***" allow_ip
SetEnvIf User-Agent "ELB-HealthChecker/1\.0" allow_ip
Deny from all
Allow from env=allow_ip
</Directory>
・
・
・
・ Options FollowSymLinks : シンボリックリンク
・ AllowOverride None : 設定上書きを不許可
・ Order deny,allow : 全てのホストからのアクセスを許可する。
・ SetEnvIf X-Forwarded-For 許可IPアドレス
・ SetEnvIf User-Agent 許可エージェント
・ Deny from all : 全てのアクセスを拒否
・ Allow from env=allow_ip : 指定IPアドレスを許可
S3 バケットポリシー
{
"Version": "2012-10-17",
"Id": "******任意*****",
"Statement": [
{
"Sid": "******任意*****",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::*****FilePath******",
"Condition": {
"IpAddress": {
"aws:SourceIp": "0.0.0.0/0"
},
"NotIpAddress": {
"aws:SourceIp": "*******許可IPアドレス******"
}
}
}
]
}
・Id: ポリシーのIDを指定。(任意の英数字を入力)APIユーザー内で重複不可。
・Statement:ポリシーの主要素。必須。下記の複数の要素を持つ。
・Sid : StatementID(任意の英数字を入力)APIユーザー内で重複不可。
・Action: 適用する作業内容を記述する。
・Effect: Allow … 指定した内容に対しアクセスを許可する。
Deny … 指定した内容に対しアクセスを拒否する。
・Resource: arn:aws:s3:::/* を記述する。
・Condition: ポリシーの条件を指定します。
・IpAddress … 指定したIPアドレスがEffectの範囲対象となる。
・NotIpAddress … 指定したIPアドレスがEffectの範囲外となる。
・aws:SourceIp(IPアドレスの制御)
・aws:SecureTransport(SSL利用許可/拒否の制御値は“true”/“false”で指定)
・Principal:アドレスを許可するユーザーやアカウントを記述する。
結果
上記設定によって、IP制限をかけられる。