AWS S3 버킷 정책 예제

s3 버킷 정책이란?
aws s3에 버킷을 만들고 하나의 이미지 파일을 업로드 후 해당 이미지의 주소를 호출해 보면 아래 이미지와 같이 Access Denied오류를 발생시키면서 엑세스 되지 않는다.

이런 현상을 해결하기 위해 생성한 s3버킷에 버킷 정책 이라는 것을 생성해야 합니다.

s3 버킷 정책이란 사용자가 s3 버킷에 엑세스 할 수 있는 정책 옵션중 하나 이며 json 문법을 사용하여 버킷에 대한 엑세스를 제어 합니다.
s3가 무엇인지? 버킷이 무엇인지?에 대한 궁금증은 다음 링크를 참고하시길 바랍니다.
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/Welcome.html

다음으로 aws s3의 버킷정책에 대해서 다음 2가지 사례를 예제로 알아봅니다.

— 사례 —
1. 모든사용자에 대한 읽기 허용.
2. 특정 IP또는 IP대역에 대한 허용.

awss3buckettest버킷에 모든사용자가 읽기 권한(GetObject) 가진다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::awss3buckettest/*"
        }
    ]
}

위 설정은 불특정 사용자가 웹브라우저로 awss3buckettest 버킷에 올린 특정 Object를 호출 할 수 있다고 이해하면 됩니다.

특정 IP에만 읽기 권한 부여

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowIPs",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::awss3buckettest/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIP": "192.168.0.0/24"
                },
                "NotIpAddress": {
                    "aws:SourceIP": "192.168.0.100/32"
                }
            }
        }
    ]
}

위 설정은 192.168.0.0/24 대역에서 awss3buckettest 버킷에 GetObject 접근을 허용한다. 하지만 그 외 IP대역과 192.168.0.100 IP 주소 에서의 접근은 허용하지 않는다. 접근시 다음과 같은 오류메시지를 뿌린다.

s3 버킷정책에서 여러가지 조건을 지정하는 방법은 다음 링크를 참조합니다.
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/amazon-s3-policy-keys.html

댓글 남기기