본문 바로가기

카테고리 없음

S3의 다양한 기능들

S3 버전 관리

 

  -객체(파일)이 여러 버전을 가질 수 있음

  -동일한 파일이름을 업로드하면 여러 버전으로 저장됨(예 : 버전1,버전2)

  -실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능 

  -실수로 객체를 삭제하는 것을 방지하기 위해 MFA Delete 옵션을 추가함

  -객체를 하나의 파일이 아닌 여러 버전으로 보존할 수 있음

  -버전관리 기능을 활성화 해야함

 

 

자신이 만든 버킷에 속성에 들어가

활성화 해준다

이렇게 중복되는 객체를 넣으면 전 버전과 지금 버전을 하나씩 생겨

파일 단위가 아닌 버전의 단위로 저장할 수 있다.

 

그리고 버전을 다 삭제하지 않으면 이전 객체 버전이 있기에 다 삭제되지 않는다. (중복 객체의 여러 버전이 존재할 경우)

 

s3 객체 암호화

 

클라이언트가 SSL/TLS 암호화가 된 객체를 s3에 올리는 것이다.

 

- 데이터를 전송 중에 그리고 스토리지에 저장되는 동안 보호하기 위해 암호화 사용한다.

- 서버측 암호화(SSE - Server Side Encryption) 데이터가 서버에 저장되기 전에 객체를 암호화

     SSE-S3: S3에서 관리하는 암호화

     SSE-KMS: KMS 관리하는 암호화 키

     SSE-C: 고객(사용자)가 관리하는 암호화

               데이터 전송 시 반드시 HTTPS를 사용해야 함

 

-클라이언트 측 암호화: 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

 

-전송 중 암호화: 전송 보안 프로토콜 SSL/TLS를 이용해 데이터를 암호화 HTTPS 보안 프로토콜을 사용하여 전송

 

 

이런 식으로 SSE인 서버 측 암호화 중에 KMS로 객체의 암호화를 진행할 수 있다.

 

 

그리고 모든 객체가 upload 될 때마다 암호화를 진행하고 싶다면 

버킷 > 속성 > 기본 암호화 

로들어가 설정해주면 된다.

 

버킷 정책

 

버킷 정책은 총 3가지가 있다 .

 

- 버킷 정책(정책을 통해서 하는 일) 

    - s3 버킷 액세스 제어 정책 

    - JSON 형식

    - 조건에 따라 버킷에 액세스를 부여하고 제한하는 기능

    - 다른 AWS 계정에서 버킷 액세스 권한을 부여 가능

 

- 퍼블릭 액세스 차단(처음 버킷 설정할 때 다 차단하는 그거)

    - 버킷에서 객체에 대한 퍼블릭 액세스를 차단하거나 허용

 

- ACL(액세스 제어 목록 access control list)

    - AWS 계정에 버킷 객체에 읽기/쓰기 권한을 부여하는 기능

    - 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL을 적용할 수 있다.

 

퍼블릭 엑세스 차단

public 접근을 허용해 줄 때 퍼블릭 액세스 차단을 설정해 준다

 

버킷 정책

버킷에 권한을 주는 버킷 정책이다

ACL(access control list) 객체의 읽기 쓰기 권한을 부여하는 기능이다.

 

정적 웹사이트 호스팅

s3에서 정적 웹사이트 호스팅 가능하다.

정적인 웹사이트: 언제 접속해도 같은 내용을 보여주는 사이트

 

실습)

속성> 정적 웹 사이트 호스팅

인덱스 문서를 자신이 보여주고 싶은 객체의 이름으로 적어준다.

 

그리고 퍼블릭 엑세스를 허용해 준다.

 

이제 버킷 정책만 설정해주면 된다.

이런식으로 모든에게 get 권한을 내 s3 객체를 대상으로 허용해 준다.

 

그럼 완료!

 

CORS(Cross-Origin Resource Sharing)

Origin= s3 버킷의 주소 (예)http://webiset~)

CORS는 다른 오리진에 버킷에 대한 액세스를 공유하는 것입니다

  

1. 클라이언트가 웹사이트(s3)를 접속했습니다 (index.html에 버킷 b에 대한 board.html 액세스가 있다면? board.html은 다른 오리진 안에 있다)

2. 그러면 오리진에서 CORS Header 값을 가진 값을 클라이언트에게 리턴을 해준다. 그럼 클라이언트는 이걸 가지고 

board.html을 가진 오리진에 접근할 수 있다

 

액세스 로깅

-s3 버킷의 모든 활동(접속,읽기,쓰기,변경 등)을 파일로 만들어 s3 버킷이 저장하는 기능

-감사 목적으로 활용할 수 있음

-Amazon Athena 같은 분석 도구로 사용 가능

-s3 버킷의 모든 활동을 로그 파일로 만들어서 저장해 주는 것이 액세스 로깅인데 이 파일을 같은 곳에 놔버리면 계속해서 생기니 다른 오리진에 넣어두는 것이 좋다.

 

 

일단 여기 버킷에서 활동하는 것을 토대로 할 것이다

 

여긴 버킷에 로그를 담을 공간이다

그리고 hostinglimtest 에 들어가 서버 액세스 로깅 편집에 들어가서

이런식으로 자신이 로그를 담을 s3를 선택해 주면 된다

 

 

S3 Replication (복제 규칙)

s3 버킷 간에 객체를 자동으로 복제하는 기능

 

2가지 복제 유형 

 

 - 교차 리전 복제(CRR, Cross Region Replication)

         서로 다른 AWS 리전의 S3 버킷으로 객체를 복사

         사용 사례: 

         지리적으로 가까운 액세스가 필요한 경우 

         재해 복구

  - 동일 리전 복제(SRR, Same Region Replication)

         같은 AWS 리전의 S3 버킷으로 객체를 복사

         사용 사례:

         동일한 데이터를 사용하는 프로덕션과 테스트 계정 간의 복제 법적 준수사항으로 같은 리전 안에 데이터 복사본           을 만들어 놓아야 하는 경우

 

버킷 복제를 위해서는 원본과 대상 모두 버전관리가 활성화 되어 있어야 함

다른 AWS 계정의 버킷으로도 복제가 가능함

복제 기능을 활성화 이후 버킷에 새로 저장된 오브젝트만 복제(활성화 이전에 저장된 오브젝트는 복제 안 함) 

 

 

실습)

 

1.자신이 사용할 버킷에 버킷 버전관리를 활성화한 뒤에 만든다.

2.복제본을 가지고 있을 s3를 만들어준다 (리전을 다르게 해주고 이것도 마찬가지로 버킷 버전관리를 활성화해준다.)

 

   

1번 버킷에 관리 > 복제 규칙 생성

모든 객체를 적용할 수 있게 하고 

 

복제할 대상도 정해주면 된다.

복제할 대상은 2번 버킷을 지정해 주고 

 

객체를 올려주고 1분 정도 기다려주면 그 객체가 복사되었다는 것을 알 수 있다.

 

CRR(Cross Region Replication) 또는 SRR(Same Region Replication) 을 사용하려면 

 

버전 관리를 두 버킷 다 on > 버킷에 관리에서 복제 규칙에 들어가서 복제할 대상을 선택해주면 된다.