AWS Developer Associate (6) - S3

Jongwon·2024년 2월 26일
0

AWS Developer Associate

목록 보기
5/6

S3 Bucket

Object라고 불리는 파일을 저장하는 공간

  • Globally Unique한 이름을 가져야 함(계정 상관없이)
  • Region Level에서 생성됨
  • 대문자, _ 는 불가, IP가 존재하지 않음
  • Access Point를 지정하여 특정 User는 특정 Object만 접근하도록 Policy를 설정할 수 있음
  • Access Point는 각각이 고유한 DNS name을 가짐

S3 Object

  • 고유의 Key값(전체 경로를 나타내는)을 가짐
  • 최대 5TB 저장 가능
  • 5GB 이상의 Object에 대해서는 multi-part 업로드를 해야함
  • Metadata, Tag, Version ID를 가질 수 있음
  • S3 Object Lambda를 통해 Bucket에서 가져온 정보를 가공하여 Application에 제공가능(워터마킹, 데이터 가공 등)

S3 Security

  • User Based : IAM 정책
  • Resource Based: Bucket 정책, Object ACL, Bucket ACL
  • Encrypt : Key로 암호화

S3 Bucket Policies

JSON Based입니다.

  • Resources: Buckets과 Object 대상들
  • Actions : 허용하거나 Deny할 API들
  • Principal: 정책을 적용할 User나 Account

Block Public Access

4개 선택하는 거 그거입니다. Company의 데이터 leak을 방지하기 위해 등장했습니다.

S3 Versioning

Bucket 레벨에서 가능합니다. 같은 Key값으로 파일을 Overwrite하면 자동으로 Versioning됩니다.

  • 특정 버전이 아닌 객체를 삭제한다면, Delete Marker가 생깁니다. 이것은 Permanent Delete가 아닌, 숨겨지는 방식입니다.

S3 Replication

CRR(Cross Region Replication): 서로 다른 리전으로 버켓을 Replication하는 방법
SRR(Same Region Replication): 같은 리전 내에서 Replication 하는 방법

  • Bucket은 다른 AWS 계정으로 복제될 수 있습니다.
  • Asynchronous한 방식입니다.
  • IAM 권한을 가지고 있어야 합니다.
  • delete marker는 복제되지만(설정으로) version delete는 복제되지 않습니다.
  • 복제품의 복제품은 존재하지 않습니다.

CRR은 lower latency, 계정 간 replication에서 사용
SRR은 log수집이나 test와 production 사이에 실시간 복제에 사용

S3 Batch Replication

Replication을 객체 생성 이후에 만들었다면 이전에 있던 객체는 복제가 되지 않습니다. 이 객체에 대해서는 batch replication이라는 별도 작업으로 진행해야 합니다.

S3 종류

  • Standard(General Purpose)
  • Infrequent Access
    - Standard
    • One Zone
  • Glacier Storage(Backup용)
    - Instant Retrieval
    • Flexible Retrieval
    • Deep Archieve
  • Intelligent Tiering(Auto Tiering)

S3 Encryption

추가적으로 암호화를 진행하기 전에 Bucket Policy 설정이 적용되는데, 암호화를 강제할 수 있습니다. 이는 Default Encryption이 적용되기 전에 먼저 evaluate 됩니다.

SSE S3

AWS가 직접 관리하고 소유한 Key로 Object가 암호화됩니다.
AES-256 기반의 암호화 알고리즘을 사용합니다.
"x-amz-server-side-encryption":"AES256"이란 헤더가 존재해야 합니다.

SSE-KMS

Key Management Service를 이용하여 키를 직접 관리하고, CloudTrail을 이용하여 감시합니다.
"x-amz-server-side-encryption":"aws:kms"란 헤더가 존재해야 합니다.
KMS limit이 존재하고, API Call을 통해 Key를 upload/download해야 하므로 quota(limit)이 존재합니다.

DSSE-KMS는 SSE-KMS에서 암호화를 한번 더 진행하는 방식입니다.

SSE-C

Customer가 직접 키를 AWS밖에서 관리합니다.
HTTPS방식으로만 Key를 업로드할 수 있습니다.

Client-Side Encryption

위의 3가지 방식은 Server-Side Encryption인데에 비해, 이 방식은 Client가 암호화까지 진행하고, 암호화된 Object를 S3로 제공하는 방식입니다.

SSL/TLS

전송 과정 중의 암호화에 대해서 S3는 HTTP/HTTPS 엔드포인트를 모두 제공합니다. SSE-C는 반드시 HTTPS로 전송해야 하지만, 나머지는 권장사항입니다.

Client가 HTTP 요청을 S3로 보낼 때 aws:SecureTransport:true Condition이 존재하면 block됩니다.

CORS 설정

Origin(protocol + domain + port)이 다른 서버로 요청을 보내려면 CORS 헤더 설정이 되어야 합니다.
1. Client가 서버로 OPTIONS메서드의 preflight를 보냅니다. 이때 헤더의 Origin에는 요청 origin이 담깁니다.
2. 웹서버에서 승인하면 Access-Control-Allow-Origin헤더에 origin의 주소가 담기고, 허용할 메서드는 Access-Control-Allow-Methods에 담깁니다.
3. 허용된 메서드에 대해서는 요청을 주고받을 수 있습니다.

MFA 설정

MFA는 Permanent Delete나 Suspend Versioning을 진행할 때 사용할 수 있습니다.

MFA 삭제를 진행하고자 할 때는 아래의 유의사항이 존재합니다.

  • Version 설정이 되어 있어야 합니다.
  • Bucket Owner(Root Account)에서만 MFA Delete기능을 활성화/비활성화 할 수 있습니다.
  • AWS CLI에서만 진행할 수 있습니다.

Access Logs

S3로의 Access를 모니터링/감시하고자 할 때 사용할 수 있습니다.

  • Data Analysis Tool을 이용하여 분석할 수 있습니다.
  • Logging Bucket은 같은 AWS 리전 내에 존재해야 합니다.
  • Logging Bucket을 모니터링하면 안됩니다.

Pre Signed URL

S3 Bucket이 Private하다면 내부의 Object도 공개적으로 접근할 수는 없습니다. 대신에, AWS가 제공하는 Pre-Signed URL을 통해 임시 URL을 발급받아 접근할 수 있습니다.

GET/PUT 요청에 대해 기존 User가 가지고 있던 권한 그대로 pre-signed url을 사용하는 사용자가 이용할 수 있습니다.

생성 가능 위치

  • S3 Console
  • AWS CLI
  • AWS SDK
profile
Backend Engineer

0개의 댓글

관련 채용 정보