【IP制限】VPN EndpointとグローバルIPからS3バケットへのアクセスを許可するバケットポリシー
本記事では、以下パターンでのS3バケットへのアクセスを許可するバケットポリシーついて、具体例付きで解説します。
・Client VPN接続時
・特定のIP利用時

前提
リソースの名称は下記とする。
・S3バケット:test-bucket
・IAMユーザ:test-user
・VPN Endpointの存在するサブネット:192.168.100.0/27
・グローバルIP:120.154.177.253
※グローバルIPは下記から検索可能
説明
以下では2つのブロックにポリシーは分けている。
①では、特定のIAMユーザ以外からのアクセスを拒否している。
②では、VPN EndpointとグローバルIPからのアクセス以外を拒否している。
グローバルIPについて記載することで、マネジメントコンソールからの制限も可能になる。
※グローバルIPは可変の場合があるため、その場合はVPNを繋ぎ、CLIからグローバルIPを変更する。
実際のバケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOtherThanAuthenticatedUser",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
],
"Condition": {
"ArnNotLike": {
"aws:PrincipalArn": [
"arn:aws:iam::<AccountID>:user/test-user",
]
}
}
},
{
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::<AccountID>:user/test-user"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
],
"Condition": {
"NotIpAddress": {
"aws:VpcSourceIp": "192.168.100.0/27", //VPN Endpoitのみ許可
"aws:SourceIp": "120.154.177.253" //グローバルIPのみ許可
}
}
}
]
}