S3를 정적 웹사이트 제공하는 서비스로 사용할 때 IP를 접근 제한하는 방법이다.
해당 웹사이트를 예컨대 회사 내부용으로만 쓴다던지 할 경우 특정 IP를 넣어서 접근을 제한할 수 있다.
1. IP 접근 허용 정책
S3의 버킷 정책에 다음과 같이 정책을 넣는다.
이 경우 1.1.1.1과 8.8.8.8, 10.10.10.0/24 IP에서만 접근이 가능하게 된다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::homepage-test/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"1.1.1.1",
"8.8.8.8",
"10.10.10.0/24"
]
}
}
}
]
}
S3 버킷 정책은 묵시적인 거부 정책이기 때문에 허용 IP만 넣어줘도 그 IP외에 다른 IP로 부터의 접근을 차단된다.
만약 명시적으로 거부 정책을 넣고 싶다면 다음과 같은 식으로 버킷 정책을 넣는다.
2. 해당 IP가 아니면 차단
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::homepage-test/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"1.1.1.1",
"8.8.8.8",
"10.10.10.0/24"
]
}
}
},
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::homepage-test/*"
}
]
}