본문 바로가기
AWS 관련

[Day 303] S3 bucket - Instance 접근 제한(VPC 기반)

by minimalist_2022 2021. 6. 8.

목표

  • link-replica 버킷은 특정 인스턴스(A 서버)에서 Read-Only로만 접근 가능. 그 외 모든 inbound는 차단
  • link-replica 버킷은 특정 IP에서만 버킷 정책 변경, 객체 삭제 가능. 그 외 모든 IP에서는 불가

AWS 구조

 

설정 방법

1. S3 Bucket 생성

2. S3 bucket과 동일한 리전 선택> VPC> 엔드포인트> 엔드포인트 생성> AWS 서비스> s3 Gateway 선택> 그 외 기본값 설정 후 생성

3. VPC> 보안그룹> 보안 그룹 생성> 아웃바운드 규칙> 대상에서 기본값인 0.0.0.0/0을 삭제하고 pl로 시작하는 AWS s3 서비스에 대한 접두사 목록 ID 추가(둘 중 하나가 s3 서비스)한 후 저장(보안그룹 이름 : S3-AccessOnly)

 

4. EC2> 해당 인스턴스 선택> 작업> 보안> 보안그룹 변경> 아웃바운드 규칙 편집> default SG를 삭제하고 'S3-AccessOnly' 추가> 저장5. EC2 실행> S3 연결 및 인터넷 접속 불가 확인

5. S3> link-replica 버킷 선택> 권한> 버킷 정책> 편집> 아래와 같이 입력

- SourceVpc : A서버 Security Group에 설정되어 있는 vpc ID 입력

{
    "Version": "2012-10-17",
    "Id": "Policy1622628198663",
    "Statement": [
        {
            "Sid": "Stmt1622628006817",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::link-replica",
                "arn:aws:s3:::link-replica/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpc": "vpc-8250f4e0"
                }
            }
        },
        {
            "Sid": "Stmt1622628093734",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::link-replica",
                "arn:aws:s3:::link-replica/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpc": "vpc-8250f4e0"
                }
            }
        },
        {
            "Sid": "Stmt1622628197712",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::link-replica",
                "arn:aws:s3:::link-replica/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "1.1.1.1"
                    ]
                }
            }
        }
    ]
}

 


* 참고 :  https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/vpce-gateway.html

 

게이트웨이 VPC 엔드포인트 - Amazon Virtual Private Cloud

[Policy] 탭에는 엔드포인트 정책만 표시됩니다. 엔드포인트 작업 권한이 있는 IAM 사용자의 IAM 정책 관련 정보는 표시되지 않습니다. 또한 S3 버킷 정책과 같은 서비스별 정책도 표시되지 않습니다

docs.aws.amazon.com

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

 

버킷 정책 예제 - Amazon Simple Storage Service

이 정책을 사용하기 전에 이 예제의 IP 주소 범위를 사용 사례에 적합한 값으로 바꾸십시오. 그렇지 않으면 버킷에 액세스할 수 없습니다.

docs.aws.amazon.com