gony-dev 님의 블로그

Section 11. Amazon S3 본문

AWS

Section 11. Amazon S3

minarinamu 2024. 9. 26. 19:59

S3 - Security

  1. User-Based
    1. IAM 정책 | IAM 정책은 어떤 사용자가 어떤 API를 호출할 수 있도록 허용할 것인지 적용한다.
  2. Resource-Based
    1. Bucket 정책(Most used) | S3 콘솔에서 버킷에 대한 권한을 설정하는 것이다. 특정 계정에 액세스 권한을 위임
    2. Object Access Control List(ACL) | 세밀한 보안 체계로 비활성화가 가능하다.
    3. Bucket Access Control List(ACL) | 버킷 단위로도 액세스 제한을 설정할 수 있다. 비활성화 가능
  3. 사용자가 상황별 S3 객체에 접근할 수 있는지:
    1. IAM 권한에 접근이 허용되어 있거나 자원 정책에 해당 자원 접근이 허용되어 있거나 명시적 거부 액션이 없다면 IAM 사용자는 허용된 API를 호출하여 S3 객체에 접근할 수 있다.
  4. 암호화 | 암호화 키를 이용하여 객체를 암호화한다.

S3 Bucket Policies

  • JSON 형식
    • Resources | 버킷과 객체를 정의 
    • Effect | 허용과 거부 선택
    • Actions | 허용하거나 거부할 대상 API 명시
    • Principal | 정책을 적용할 사용자나 계정을 명시
  • S3 Bucket 정책
    • 버킷에 공개 접근하는 권한 부여
    • 암호화를 강제
    • 다른 계정에 접근 권한 부여

EC2 인스턴스와 S3의 연결 방안

  • 간단하다. EC2 Instance 역할을 생성하고, IAM 권한을 제대로 설정해 주면 EC2 Instance는 S3 버킷에 접근할 수 있다.

  • Block Public Access
    • 이 설정은 AWS에서 기업의 데이터 유출을 막기 위한 보호막 같은 개념이다.
    • 이 설정이 활성화 되어 있다면 버킷은 공개되지 않는다.

S3 - Static Website Hosting

  • S3는 정적 웹사이트를 호스팅할 수 있고, 인터넷에서 접근 가능하게 할 수 있다.
  • 웹사이트 주소는 어느 리전에서 생성하느냐에 따라 달라진다.
  • S3 버킷에 퍼블릭 액세스 읽기 권한이 없다면 접근이 불가하다.

S3 - Versioning

  • Amazon S3에 버전은 버킷 단위에서 설정을 해주어야 한다.
  • 버킷에 버전 관리 기능을 사용하는 이유는 의도하지 않은 삭제에 대응할 수 있게 해준다. 그리고 이전 버전으로 쉽게 롤백이 가능하다.
  • 주의해야 할 점은 버전 관리 기능을 활성화하기 전에 있던 파일들은 버전 값이 null 된다.
    • 또한 버전 관리 기능을 잠시 멈추면 이전 버전을 삭제하지 않는다.

versioning 원리

S3 - Replication(CRR & SRR)

  • 두 버킷 사이 비동기 복제를 설정하고 싶을 때
    • 그러기 위해 소스 버킷과 대상 버킷 양쪽에 버전 관리를 활성화해야 한다.
    • CRR를 한다면 두 버킷이 각각 다른 리전에 있는 것이고 SRR를 한다면 같은 리전에 있는 것이다.
    • 복제는 비동기로 진행되고 복제 작업은 백그라운드로 진행한다.
  • 두 방법의 차이
    1. CRR | 컴플라이언스, 저지연 액세스, 계정 간 복제
    2. SRR | 로그 집계, 운영 계정과 테스트 계정 사이에서 라이브 복제를 할 때 유용하다.
  • 주의할 점
    • 복제 기능을 활성화한 후에는 생성한 객체만 복제가 된다.
    • 기존에 있던 객체를 복제하려면 S3 배치 복제 기능을 사용해야 한다.
    • 삭제 작업을 복구할 때는 소스 버킷에 있는 삭제 마커를 대상 버킷으로 복제할 수 있다.
      • 이 때 삭제된 게 버전아이디라면 복제되지 않는다.
    • 복제 체이닝은 지원되지 않는다.
      • 이는 버킷 1에 있는 객체가 버킷 2로 복제되고, 버킷 2에 있는 객체가 버킷 3로 복제되었을 때, 버킷 1에 있는 객체가 버킷 3로 복제되지 않는다는 것이다!

S3 Storage Classes

  • 각 종류를 알아두어야 한다.
  • 스토리지 클래스는 수동으로 바꾸거나 S3 수명주기 설정으로 객체가 자동으로 이 클래스들 중 하나가 되게 할 수 있다.
  • Durability and Availibility
    1. 내구성이란 S3가 얼마나 자주 객체를 잃는지 의미한다.
    2. 만일 Amazon S3에 객체를 천 만개 저장한다면 잃는 객체는 만년마다 하나일 거라 예상될 정도로 내구성이 좋다.
    3. 가용성은 서비스가 얼마나 사용 가능한지 의미한다.
    4. 1년에 약 53분정도만 못 쓸 정도로 가용성이 좋다.
    1. General Purpose
      • 99.99% 가용성
      • 주로 승인된 데이터를 사용
      • 저지연과 높은 처리량
      • 시설 실패를 동시에 두 건까지 견딜 수 있다.
    2. Infrequent Access
      1. 덜 자주 사용하는 데이터
      2. 비용이 적고 조회 시 비용 발생
      3. Standard-Infrequent Access
        1. 99.9% 가용성
        2. 장애 복구, 백업에 사용
      4. One Zone-Infrequent Access
        1. 99.99999% 가용성
        2. 데이터 손실이 발생한다.
        3. 온프레미스 데이터나 재생성할 수 있는 백업 사본 만들기
    3. Glacier Storage Classes
      1. 저비용으로 백업과 아카이브에 사용
      2. Glacier Instant Retrieval
        1. 밀리초 단위로 검색
        2. 최소 스토리지 기간 90일
      3. Glacier Flexible Retrieval
        1. Expedited은 1~5분, Standard는 3~5시간, Bulk는 5~12시간이 걸리는 데이터 검색 옵션이 있다. Bulk만 무료
      4. Glacier Deep Archive
        1. Standard는 12시간, Bulksms 48시간이라는 데이터 검색 시간이 있다.
        2. 가격이 제일 적고 최소 스토리지 기간은 180일
    4. Intelligent-Tiering
      1. 액세스 패턴에 따라 객체를 액세스 간에 이동시킬 수 있게 한다.
      2. 월별 객체 모니터링 비용과 자동 이동 비용이 발생한다.
      3. 검색 비용은 별도로 발생하지 않는다.

'AWS' 카테고리의 다른 글

Section 7. ELB+ASG  (0) 2024.10.02
Section 12. AWS CLI, SDK, IAM 역할 및 정책  (1) 2024.09.26
Section 10. VPC(Basic)  (0) 2024.09.26
Section 9. Route 53  (0) 2024.09.26
Section 8. RDS+Aurora+ElasticCache  (0) 2024.09.26