S3 Access point

은채의 성장통·2025년 2월 10일
0

AWS

목록 보기
55/79

S3 Access Points 및 Lambda 객체 처리

S3 버킷 안에 많은 데이터가 존재할 때 이를 효율적으로 액세스하고 관리하기 위해 S3 Access Points(액세스 포인트)를 활용할 수 있다. 액세스 포인트를 사용하면 특정 목적에 맞는 접근 정책을 설정하여 보안성과 유연성을 높일 수 있다.


📌 S3 Access Points 개념

S3 액세스 포인트는 개별적인 정책을 적용할 수 있는 별도의 엔드포인트 역할을 한다. 이를 통해 여러 애플리케이션 또는 사용자가 대규모 데이터 세트에 쉽게 접근할 수 있다.

액세스 포인트의 특징

  • 각각의 보안 정책 적용: 기존의 S3 버킷 정책과 분리하여 개별적인 IAM 정책을 적용할 수 있다.
  • 읽기 전용 정책 설정 가능: 특정 애플리케이션이나 사용자에게 읽기 권한만 부여할 수 있다.
  • DNS 이름 사용 가능: 액세스 포인트는 DNS 이름을 가지며, 이를 통해 S3 버킷에 쉽게 연결할 수 있다.
  • VPC와 연동 가능: VPC 엔드포인트와 결합하여 프라이빗 네트워크 내에서 S3 버킷을 안전하게 접근할 수 있다.

🔹 VPC와 연계한 보안 접근

VPC 엔드포인트를 활용하면 인터넷을 거치지 않고 내부 네트워크를 통해 안전하게 S3에 접근할 수 있다.

  • VPC 엔드포인트 정책: 특정 IAM 역할이나 서비스만이 액세스 포인트를 사용할 수 있도록 제어 가능하다.
  • 액세스 포인트 정책: VPC에서 오는 요청만 허용하도록 구성할 수 있다.
  • 버킷 정책: 특정 액세스 포인트에서만 버킷을 사용할 수 있도록 설정할 수 있다.

📌 S3 Object Lambda (객체 람다)와 Access Points

S3 Object Lambda를 활용하면 버킷에서 객체를 가져오기 전에 자동으로 데이터를 수정할 수 있다. 이를 통해 사전 데이터 변환이 가능하며, 클라이언트가 원본 데이터를 변경 없이 사용할 수 있도록 할 수 있다.

Object Lambda의 작동 방식

  1. 클라이언트가 S3 Object Lambda Access Point를 통해 객체를 요청한다.
  2. 요청이 들어오면 지정된 Lambda 함수가 실행된다.
  3. Lambda 함수가 원본 객체를 변형하거나 가공한 후 응답을 반환한다.
  4. 클라이언트는 원본 객체 대신 변경된 객체를 수신한다.

🔹 사용 예시

  • 이미지 변환: 원본 이미지가 S3에 저장되어 있고, 요청할 때마다 특정 크기로 자동 변환하여 반환.
  • 데이터 필터링: JSON 파일에서 특정 키워드만 포함된 데이터를 추출하여 제공.
  • 보안 강화: 민감한 정보를 마스킹하거나 제거한 데이터를 반환.

🔹 S3 Object Lambda 사용 시 액세스 포인트 필요

S3 Object Lambda를 사용할 때는 반드시 S3 Access Point를 설정해야 한다. 액세스 포인트를 사용하면 요청을 특정 정책을 가진 Lambda 함수로 리디렉션할 수 있으며, 이를 통해 원본 데이터를 변경 없이 다양한 변형을 제공할 수 있다.


📌 정리 및 활용 방안

S3 Access Points와 S3 Object Lambda를 함께 사용하면 데이터 접근성과 보안성을 동시에 높일 수 있다.

  • Access Points: 대규모 데이터 접근을 간소화하고 개별적인 보안 정책을 적용 가능.
  • Object Lambda: 클라이언트 요청에 따라 실시간으로 데이터를 변형하여 제공.
  • VPC와 연계: 안전한 내부 네트워크에서 S3 데이터를 효율적으로 관리.

이러한 기능들을 활용하면 클라우드 환경에서 대규모 데이터 세트를 보다 정교하게 관리하고, 성능 및 보안성을 강화할 수 있다.

AWS S3 Access Point 및 Object Lambda 활용 가이드

AWS S3 버킷 안에 대량의 데이터가 존재할 경우, 이를 효율적으로 관리하고 접근을 제어하는 것이 점점 어려워진다. S3 Access PointObject Lambda를 활용하면 개별적인 접근 포인트를 생성하여 더 체계적으로 보안 및 접근을 관리할 수 있다.

이 글에서는 S3 Access Point의 개념과 활용 방법, VPC와 연계한 보안 설정, 그리고 Object Lambda를 이용한 데이터 변환에 대해 설명한다.


1. S3 Access Point란?

S3 Access Point는 S3 버킷의 데이터에 접근할 수 있는 별도의 엔드포인트(Endpoint)를 생성하는 기능이다. 대규모 데이터가 존재하는 S3 버킷에서 보다 세밀한 권한 관리 및 네트워크 제어가 가능하다.

(1) S3 Access Point의 주요 기능

각 Access Point마다 개별적인 정책을 적용 가능

IAM 정책과 연계하여 접근 제어를 세분화

DNS 이름을 통해 개별 엔드포인트를 생성 가능

VPC와 연계하여 Private 네트워크 내에서 S3 접근 가능

(2) 기존 방식 vs Access Point 방식 비교

기존 S3 정책 방식S3 Access Point 방식
S3 버킷 정책을 직접 수정해야 함Access Point마다 개별 보안 정책을 설정
IAM 사용자, 역할(Role) 기반의 접근 제어특정 Access Point를 대상으로 IAM 정책을 설정 가능
VPC와 연계 시 VPC 엔드포인트 정책을 버킷에 적용해야 함Access Point를 VPC 오리진(Origin)과 연결 가능

🔹 Access Point를 활용하면 S3 버킷을 직접 제어하는 대신, 더 유연하고 보안성이 높은 접근 제어가 가능하다.


2. S3 Access Point 생성 및 설정

(1) Access Point 생성 방법

AWS CLI 또는 콘솔을 통해 S3 Access Point를 생성할 수 있다.

📌 AWS CLI를 사용한 Access Point 생성

aws s3control create-access-point \
    --account-id <AWS_ACCOUNT_ID> \
    --name my-access-point \
    --bucket my-data-bucket

📌 참고: <AWS_ACCOUNT_ID>는 AWS 계정 ID, my-access-point는 Access Point의 이름, my-data-bucket은 대상 S3 버킷이다.

(2) Access Point를 읽기 전용(Read-Only)으로 설정

Access Point에 읽기 전용 정책을 설정하여 보안을 강화할 수 있다.

📌 Access Point 정책 예제 (읽기 전용)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point/object/*"
    }
  ]
}

위 정책을 적용하면, Access Point를 통해 S3 객체를 읽을 수 있지만 수정 및 삭제는 불가능하다.


3. VPC와 연계한 Access Point 보안 설정

S3 Access Point는 VPC 오리진(VPC Origin)과 연계하여 Private 네트워크에서만 접근 가능하도록 설정할 수 있다. 이를 활용하면 VPC 내부에서 S3 버킷에 안전하게 접근할 수 있다.

📌 VPC 오리진을 사용한 Access Point 생성 (CLI 명령어)

aws s3control create-access-point \
    --account-id 123456789012 \
    --name my-vpc-access-point \
    --bucket my-data-bucket \
    --vpc-configuration "VpcId=vpc-0abcdef1234567890"

📌 위 설정을 적용하면, 특정 VPC(vpc-0abcdef1234567890)에서만 S3 Access Point에 접근할 수 있다.

VPC Endpoint 정책을 설정하면, 지정된 VPC 내의 리소스만 S3 Access Point를 통해 데이터를 읽을 수 있다.


4. S3 Object Lambda를 활용한 데이터 변환

S3 Object Lambda를 사용하면 S3 버킷의 객체를 읽기 전에 변환할 수 있는 기능을 제공한다. 즉, S3 Access Point를 활용하여 데이터를 동적으로 수정하고, 사용자에게 변환된 데이터를 제공할 수 있다.

(1) Object Lambda의 주요 기능

객체를 읽기 전에 변환 가능 (예: 이미지 크기 조정, 데이터 필터링)

기존 S3 데이터를 수정하지 않고도 다양한 형식으로 제공 가능

Access Point를 통해 보안 정책과 함께 사용할 수 있음

(2) Object Lambda를 활용한 데이터 변환 예제

예를 들어, JSON 데이터에서 특정 필드를 필터링하여 제공할 수 있다.

import json

def lambda_handler(event, context):
    s3_object = event["getObjectContext"]["inputS3Url"]

    # S3 객체를 다운로드
    response = requests.get(s3_object)
    data = json.loads(response.text)

    # 특정 필드 제거
    filtered_data = {key: data[key] for key in data if key != "private_field"}

    return {
        "statusCode": 200,
        "body": json.dumps(filtered_data)
    }

위 코드는 특정 필드를 제거한 데이터를 반환하는 Object Lambda 함수의 예제이다.


5. 결론 및 정리

개념설명
S3 Access Point개별 엔드포인트를 생성하여 접근 관리 가능
IAM 권한 설정Access Point마다 개별적인 IAM 정책 적용 가능
VPC 오리진과 연계Private 네트워크 내부에서만 S3 접근 가능
VPC 엔드포인트VPC에서 Access Point를 통해 S3에 접근
Object LambdaS3 데이터를 변환하여 반환 가능

S3 Access Point와 Object Lambda를 활용하면 대규모 데이터가 존재하는 버킷에서도 보안성과 관리 효율성을 극대화할 수 있다.

profile
인생 별거 없어

0개의 댓글