본문 바로가기

퍼블릭 클라우드

AWS S3 버킷의 액세스를 IP 주소로 제한하는 방법

728x90

AWS S3 버킷의 액세스를 IP 주소로 제한하는 방법

AWS S3 버킷의 액세스를 IP 주소로 특정 IP 주소만 S3 버킷에 접근할 수 있으며, 다른 IP 주소로부터의 액세스는 차단됩니다.

 

참고: 이 방법은 AWS 계정의 액세스 제어를 설정하므로 꼭 필요한 경우에만 사용해야 하며, 신중하게 구성해야 합니다.

AWS Management Console을 통한 방법

1. AWS Management Console에 로그인합니다.

 

2. S3 콘솔로 이동합니다.

 

3. 액세스를 제한하려는 버킷을 선택합니다.

 

4. "속성" 탭을 선택합니다.

 

5. "Bucket Policy" 옵션을 선택합니다.

 

6. 다음과 같은 형식의 정책을 추가합니다. 여기서 111.111.111.111은 허용하려는 IP 주소입니다.

s1
s2

  • 버킷 정책
    • IP 주소와 버킷 이름(bucketname)을 자신의 것으로 교체하여 다음 정책을 입력합니다.
{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::bucketname/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "1.1.1.1/32"
                },
                "IpAddress": {
                    "aws:SourceIp": [
                        "192.168.1.1",
                        "192.168.1.2/32",
                        "192.168.2.0/24"
                    ]
                }
            }
        }
    ]
}
728x90

AWS CLI(Command Line Interface)을 통한 방법

1. AWS CLI를 설치하고 구성합니다.

 

2. 다음 명령을 사용하여 버킷에 액세스 정책을 추가합니다.

aws s3api put-bucket-policy --bucket your-bucket-name --policy '{
    "Version": "2012-10-17",
    "Id": "IPAccessPolicy",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::your-bucket-name/*",
                "arn:aws:s3:::your-bucket-name"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "111.111.111.111"
                }
            }
        }
    ]
}'

여기서 your-bucket-name은 해당 S3 버킷의 이름이며, 111.111.111.111은 허용하려는 IP 주소입니다.

파일 업로드 테스트

[성공]

$ curl -X PUT -T test.txt -H 'Host: bucketname.s3.amazonaws.com' \
-H 'Content-Type: application/octet-stream' \
https://bucketname.s3.ap-northeast-2.amazonaws.com/test.txt

[실패-Access Denied]

$ curl -X PUT -T test.txt -H 'Host: bucketname.s3.amazonaws.com' \
-H 'Content-Type: application/octet-stream' \
https://bucketname.s3.ap-northeast-2.amazonaws.com/test.txt
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>498CJNSET2MMD3SQ</RequestId><HostId>8svxsbydrQ88ZtCUBM2Ra45DRLm9OObSrjsJtTcCsAUq3/fg78Ia5TGDd73rZZuUvQiNbNXoIXE=</HostId></Error>

 

 

참고URL

- https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/example-bucket-policies.html

 

728x90