[오브젝트 스토리지 활용] Bucket Policy로 IP 접근 제어하기

| 2020년 10월 14일 | 0 Comments

해당 메뉴얼은 Bucket Policy를 설정하여 버킷에 대해  특정 ip의 접근을 허용 · 제한하는 방법을 설명합니다. 

  

 

특정 IP만 접근 허용하기 


버킷에 대한 접근정책을  전체공개 (Public)  으로 설정 후 ,  Bucket Policy를 설정하여  특정 ip만 해당 버킷에 접근할 수 있도록 할 수 있습니다. 

 

 

1.  버킷 생성 ( 접근정책 – 전체공개)

 

 

 

웹콘솔에서 해당 버킷의 오브젝트 목록 확인 

 

 

 

2.  링크를 통해 접근 확인 

 

웹콘솔의 상세정보 메뉴를 통해  해당 오브젝트의 링크를 확인 후 접속합니다. 

 

 

 

 

 

이미지가 정상적으로 호출됩니다. ( 모든 ip에서 접근 가능 )

 

 

 

 

3.  Bucket Policy 설정 

해당 버킷에 특정 ip 주소만 접근을 허용하기 위해 Bucket Policy를 설정합니다.  

 

 

# Windows s3 browser 

s3 browser 접속 

 

 

s3 browser 접속 후 해당 버킷 클릭 – 상단 메뉴 중  Buckets – Edit bucket policy 클릭 

 

 

아래 링크를 참고하여 bucket policy 작성  ( Limiting Access to Specific IP Addresses 부분 참고 )

참고 링크 : https://docs.amazonaws.cn/en_us/AmazonS3/latest/dev/example-bucket-policies.html

{
  “Version”: “2012-10-17”,
  “Id”: “S3PolicyId1”,
  “Statement”: [
    {
      “Sid”: “IPAllow”,
      “Effect”: “Deny”,
      “Principal”: “*”,
      “Action”: “s3:*”,
      “Resource”: [
         “arn:aws:s3:::<버킷명>”,
         “arn:aws:s3:::<버킷명>/*”
      ],
      “Condition”: {
         “NotIpAddress”: {
          “aws:SourceIp”: “<허용 IP>”
        }
      }
    }
  ]
}

 

 

S3 browser Bucket Policy 입력 예시

 

# iwin_test 자리에 해당 버킷명 입력 

# 115.68.0.1 자리에 접근을 허용할 IP 입력 ( 네트워크 대역으로 입력 가능 [ex] 115.68.0.0/16  )  

## 입력한 ip를 제외한 모든 ip에서 전체권한이 deny 됨으로 ip 입력시 신중하게 입력합니다. 

 

 

# Linux aws_cli    

policy.json 파일을 생성

{
  “Version”: “2012-10-17”,
  “Id”: “S3PolicyId1”,
  “Statement”: [
    {
      “Sid”: “IPAllow”,
      “Effect”: “Deny”,
      “Principal”: “*”,
      “Action”: “s3:*”,
      “Resource”: [
         “arn:aws:s3:::<버킷명>“,
         “arn:aws:s3:::<버킷명>/*”
      ],
      “Condition”: {
         “NotIpAddress”: {
          “aws:SourceIp”: “<허용 IP>
        }
      }
    }
  ]
}

 

put-bucket-policy 를 통해 Bucket Policy 설정

aws s3api put-bucket-policy  –endpoint EndPoint –profile produser –bucket Bucket_Name –policy file://policy.json

ex) aws s3api put-bucket-policy  –endpoint https://kr.object.iwinv.kr –profile produser –bucket iwinv_test –policy file://policy.json

 

get-bucket-policy 명령어로 Bucket Policy 확인 

aws s3api get-bucket-policy  –endpoint EndPoint –profile produser –bucket Bucket_Name

ex) aws s3api get-bucket-policy  –endpoint https://kr.object.iwinv.kr –profile produser –bucket iwinv_test

 

output 

{
“Policy”: “{\n \”Version\”: \”2012-10-17\”,\n \”Id\”: \”S3PolicyId1\”,\n \”Statement\”: [\n {\n \”Sid\”: \”IPAllow\”,\n \”Effect\”:

\”Deny\”,\n \”Principal\”: \”*\”,\n \”Action\”: \”s3:*\”,\n \”Resource\”: [\n \”arn:aws:s3:::iwinv_test\”,\n \”arn:aws:s3:::iwinv_test/*\”\n ],\n

\”Condition\”: {\n \”NotIpAddress\”: {\n \”aws:SourceIp\”: \”115.68.0.1\”\n }\n }\n }\n ]\n}\n”
}

 

 

delete-bucket-policy 명령어로 Bucket Policy 삭제 가능

aws s3api delete-bucket-policy  –endpoint EndPoint –profile produser –bucket Bucket_Name

ex) aws s3api delete-bucket-policy  –endpoint https://kr.object.iwinv.kr –profile produser –bucket iwinv_test

 

 

4.  접근 확인 

 

bucket policy에서 허용한 ip로 위에서 확인했던 링크 접속시  ( 정상적으로 접근 가능 ) 

 

 

 

반면 , 허용ip 이외 ip로 링크 접속시  AccessDenied 되어있음을 확인 할 수 있습니다.   

 

 

 

 

s3brower 사용시 해당 ip가 아닌곳에서 버킷 조회시 해당 문구 발생하며 조회 불가 

 

 

 

 

 

특정 IP 접근 제한하기


버킷에 대한 접근정책을  전체공개 (Public) 으로 설정 후 ,  Bucket Policy를 설정하여  특정 ip의 버킷 접근을 차단합니다. 

 

 

1.  버킷 생성 ( 접근정책 – 전체공개)

 

 

웹콘솔에서 해당 버킷의 오브젝트 목록 확인 

 

 

 

2.  링크를 통해 접근 확인 

 

웹콘솔의 상세정보 메뉴를 통해  해당 오브젝트의 링크를 확인 후 접속합니다. 

 

 

 

 

이미지가 정상적으로 호출됩니다. ( 모든 ip에서 접근 가능 )

 

 

 

 

 

3.  Bucket Policy 설정 

해당 버킷에 특정 ip 주소의 접근을 차단하기 위해 Bucket Policy를 설정합니다. 

 

 

# Windows s3 browser

s3 browser 접속 

 

 

s3 browser 접속 후 해당 버킷 클릭 – 상단 메뉴 중  Buckets – Edit Bucket Policy 클릭 

 

아래 링크를 참고하여 bucket policy 작성  ( Limiting Access to Specific IP Addresses 부분 참고 )

참고 링크 : https://docs.amazonaws.cn/en_us/AmazonS3/latest/dev/example-bucket-policies.html 

{
  “Version”: “2012-10-17”,
  “Id”: “S3PolicyId1”,
  “Statement”: [
    {
      “Sid”: “IPAllow”,
      “Effect”: “Deny”,
      “Principal”: “*”,
      “Action”: “s3:*”,
      “Resource”: [
         “arn:aws:s3:::<버킷명>“,
         “arn:aws:s3:::<버킷명>/*”
      ],
      “Condition”: {
         “IpAddress”: {
          “aws:SourceIp”: “<차단 IP>
        }
      }
    }
  ]
}

 

 

 

S3 browser Buckey Policy 입력 예시 

 

 

# iwin_test 자리에 해당버킷명 입력 

# 115.6.0.1  자리에 접근을 차단할 IP 입력 ( 네트워크 대역으로 입력 가능 [ex] 115.68.0.0/16  )  

## 입력한 ip에서  전체권한이 deny됨으로 ip 입력시 신중하게 입력합니다. 

 

 

 

# Linux aws_cli    

policy.json 파일을 생성

{
  “Version”: “2012-10-17”,
  “Id”: “S3PolicyId1”,
  “Statement”: [
    {
      “Sid”: “IPAllow”,
      “Effect”: “Deny”,
      “Principal”: “*”,
      “Action”: “s3:*”,
      “Resource”: [
         “arn:aws:s3:::<버킷명>”,
         “arn:aws:s3:::<버킷명>/*”
      ],
      “Condition”: {
         “IpAddress”: {
          “aws:SourceIp”: “<차단 IP>”
        }
      }
    }
  ]
}

 

 

put-bucket-policy 를 통해 Bucket Policy 설정

aws s3api put-bucket-policy  –endpoint EndPoint –profile produser –bucket Bucket_Name –policy file://policy.json

ex) aws s3api put-bucket-policy  –endpoint https://kr.object.iwinv.kr –profile produser –bucket iwinv_test –policy file://policy.json

 

get-bucket-policy 명령어로 Bucket Policy 확인 

aws s3api get-bucket-policy  –endpoint EndPoint –profile produser –bucket Bucket_Name

ex) aws s3api get-bucket-policy  –endpoint https://kr.object.iwinv.kr –profile produser –bucket iwinv_test

 

output 

{
“Policy”: “{\n \”Version\”: \”2012-10-17\”,\n \”Id\”: \”S3PolicyId1\”,\n \”Statement\”: [\n {\n \”Sid\”: \”IPAllow\”,\n \”Effect\”:

\”Deny\”,\n \”Principal\”: \”*\”,\n \”Action\”: \”s3:*\”,\n \”Resource\”: [\n \”arn:aws:s3:::iwinv_test\”,\n \”arn:aws:s3:::iwinv_test/*\”\n ],\n

\”Condition\”: {\n \”IpAddress\”: {\n \”aws:SourceIp\”: \”115.68.0.1\”\n }\n }\n }\n ]\n}\n”
}

 

 

delete-bucket-policy 명령어로 Bucket Policy 삭제 가능

aws s3api delete-bucket-policy  –endpoint EndPoint –profile produser –bucket Bucket_Name

ex) aws s3api delete-bucket-policy  –endpoint https://kr.object.iwinv.kr –profile produser –bucket iwinv_test

 

 

 

4.  접근 확인 

 

 

 

bucket policy에서  차단한 ip로 위에서 확인했던 링크 접속시  ( AccessDenied ) 

 

 

 

 

반면 , 차단한 ip 이외 ip로 링크 접속시  ( 정상적으로 접근 가능 ) 

 

 

Category: 가상화/클라우드

Avatar

About the Author ()