일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AWS Security Hub
- DaemonSet
- Terraform
- Python
- taint
- k8s
- mariaDB
- ReplicaSet
- AWS
- Amazon VPC
- Heartbleed
- deployment
- ansible
- Amazon Route 53
- staticmethod
- AWS EC2
- SSL 인증서
- docker
- classmethod
- Amazon DynamoDB
- ConfigMap
- Industry Week 2023
- Amazon RDS
- Terraform state
- Cognito
- Backend
- Kubernetis
- DevOps
- CI CD
- Amazon GuardDuty
- Today
- Total
Nubes et Stella
[AWS] Amazon S3 본문
01. Amazon S3란?
Amazon S3(Simple Storage Service)는 개인, 애플리케이션, 다수의 AWS서비스의 데이터를 보관하며, 아래의 워크로드를 위한 서비스이다.
- 백업 저장소, 로그 저장, 재해 복구 이미지 관리
- 분석을 위한 빅데이터 저장
- 정적 웹사이트 호스팅
S3파일은 "버킷"으로 구성되며, AWS 계정당 기본으로 만들 수 있는 버킷은 100개다.(할당량 증가 요청 가능)
S3의 버킷과 그 내용은 한 리전에서만 존재할 수 있으며, 주소는 전체 글로벌 시스템내에서 유일해야한다.
(프로세스 단순화 측면)
리전 ap-northeast-2에 위치한 버킷 bucketname의 파일 filename에 HTTP로 접근하기 위한 URL은 아래와 같다.
"https://bucketname.s3.ap-northeast-2.amazonaws.com/filename"
- 대용량 작업을 위한 S3
버킷안에 들어가는 S3의 단일 객체 크기는 5TB를 넘길수 없으며, 한 번에 업로드할 수 있는 용량 크기는 최대 5GB이다. 만약에 100MB보다 큰 객체는 "멀티 파트 업로드"를 사용해서 데이터의 손실을 방지하는 것이 좋다.
** 멀티 파트 업로드
큰 객체를 여러 작은 부분으로 나누어서 S3에 전송한다. 각 부분의 전송이 실패할 경우 해당 부분만 재전송하여 다른 부분에 영향을 끼치지 않는다.
02. S3 데이터 암호화
웹사이트와 같이 퍼블릭에서 액세스하는 용도가 아니라면 S3에 저장할 데이터는 암호화해야 한다. (데이터는 소중하니까!!) S3의 암호화 방식은 크게 "서버측 암호화", "클라이언트 측 암호화"로 나뉜다.
- 서버 측 암호화
서버 측 암호화는 데이터를 받는 애플리케이션 또는 서비스에 의해 해당 대상에서 데이터를 암호화하는 것을 의미한다. 여기서 서버 측이라는 말은 S3플랫폼을 의미하며, S3에 저장되며 암호화 한다는 뜻이다.
SSE-S3 | S3에 지원하는 기본적인 서버 측 암호화이며, 암호화 방식을 따로 설정하지 않을 경우 이 암호화가 적용된다. 각 객체가 AES-256 함수로 데이터가 암호화 된다. 또한 키 자체를 한번 더 암호화한다. |
SSE-KMS | S3에 AWS-KMS 서비스를 더해 좀 더 완벽하게 키 제어 및 관리를 할 수 있다. KMS 자체 키를 가져와서 사용할 수도 있다. 또한 고객 관리형 키를 생성하고 관리하거나 사용자, 서비스 및 리전에 고유한 AWS 관리형 키를 사용할 수 있다. |
DSSE-KMS | KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)를 사용하면 Amazon S3에 객체를 업로드할 때 객체에 두 계층의 암호화가 적용됩니다. DSSE-KMS를 사용하면 데이터에 다중 계층 암호화를 적용하고 암호화 키를 완전하게 제어할 것을 요구하는 규정 준수 표준을 보다 쉽게 충족할 수 있다. |
SSE-C | 고객이 S3에 제공한 자체 키로 객체를 암호화 한다. |
- 클라이언트 측 암호화
S3에 데이터를 전송하기 전에 암호화할 수 있다. 업로드 전에 고유키를 가지고 객체를 암호화한다. 또한 S3암호화 클라이언트에서 제공된 클라이언트 측 마스터 키를 사용할 수도 있다.
암호화 절차를 단순화 하기 위해 서버 측 암호화만 많이 쓰지만, 규정/법규의 제한으로 2가지 암호화 방식을 모두 사용할 수도 있다.
03. S3 스토리지 클래스
S3에서 객체를 저장할 때 여러 S3스토리지 클래스 중에서 선택할 수 있으며, "내구성", "가용성, "비용"에 따라 선택한다.
참고 : https://aws.amazon.com/ko/s3/storage-classes/?nc=sn&loc=3
객체 스토리지 클래스 – Amazon S3
aws.amazon.com
- Amazon S3 Standard
S3 Standard는 자주 액세스하는 데이터를 위해 높은 내구성, 가용성 및 성능을 갖춘 객체 스토리지를 제공한다.
또한 Standard 클래스는 짧은 지연시간과 더불어 높은 데이터 처리량을 제공하기 때문에 다양한 업무에서 사용가능하다.
- Amazon S3 Intelligent-Tiering
Amazon S3 Intelligent-Tiering(S3 Intelligent-Tiering)은 액세스 빈도에 따라 가장 비용 효율적인 액세스 티어로 데이터를 자동으로 이동하여 스토리지 비용을 자동으로 절감해주는 클라우드 클래스이다. 데이터 변환을 위한 월별 객체 모니터링 및 자동화 요금만 지불하면 이용 가능한 S3 Intelligent-Tiering은 액세스 패턴을 모니터링하여 액세스하지 않은 객체를 저렴한 액세스 계층으로 자동으로 옮깁니다.
- Amazon S3 Standard-Infrequent Access
S3 Standard-IA는 자주 액세스하지 않지만 필요할 때 빠르게 액세스해야 하는 데이터에 적합하다. 기본적인 성능은 Standard와 동일하게 짧은 지연시간과 높은 처리량을 제공한다.
대신 상대적으로 가용성이 떨어지며 비용이 상대적으로 더 저렴하다. 때문에 백업용이나 재해복그용으로 적합하다.
- Amazon S3 One Zone-Infrequent Access
S3 One Zone-IA는 바로 위의 S3 Standard-IA와 모든 퍼포먼스가 동일하다. 다른점은 최소 3개의 가용 영역(AZ)에 데이터를 저장하는 다른 S3 스토리지 클래스와는 달리, S3 One Zone-IA는 단일 AZ에 데이터를 저장하며 비용이 S3 Standard-IA보다 20% 적게 발생한다.
04. S3 수명 주기
- 버전 관리
대부분의 파일 시스템은 기존 파일과 같은 위치에 같은 이름으로 파일을 저장하면 기존 객체를 덮어쓴다. 이러한 상황은 항상 최신 버전을 유지할 수 있지만 기존 버전의 데이터가 삭제된다. 실수를 할 경우 치명적인 상황이 발생하는 것이다.
S3 역시 동일한 방식으로 작동한다. 하지만 "버전 관리"를 활성화 하면 기존 데이터를 보존할 수 있다. 문제는 아카이브가 많이 늘어날 수 있어 조심해야한다. 이를 대비하기 위해 "수명 주기 관리"가 필요해진다.
- 수명 주기 관리
버킷에서 수명 주기 관리를 설정하면 지정한 기간이 경과했을 때 자동으로 객체를 다른 스토리지 클래스로 이동하게 된다. 예를 들어 첫 30일 동안 S3 Standard 클래스에서 보관되고, 30일이 지나면 더 저렴한 One Zone IA로 옮겨진다. 이후 365일이 지나면 영구 삭제되는 식으로 설정이 가능하는 것이다.
이 기능은 S3의 비용관리 측면에서 매우 중요한 기능이라고 생각된다.
05. S3 객체 잠금 모드
S3에서 객체 잠금 모드는 크게 아래 2가지를 지원한다.
- 거버넌스 모드(Governance mode)
거버넌스 모드에서 특별한 권한이 없는 한 사용자는 객체 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다.
거버넌스 모드를 사용하면 대부분의 사용자가 객체를 삭제하지 못하도록 보호하지만, 필요에 따라 일부 사용자에게 보관 설정을 변경하거나 객체를 삭제할 수 있는 권한을 부여할 수 있다.
("s3:BypassGovernanceRetention” 권한을 소유한 사용자는 가능)
- 규정 준수 모드(Compliance mode)
규정 준수 모드를 사용한다면 Root 를 포함한 어떤 AWS 사용자도 Retention 기간 내에는 Object 를 삭제할 수 없다. 때문에 가장 강력하게 S3데이터를 보호하고 싶으면 규정 준수 모드로 설정하면 된다.
(테스트가 필요하다면 거버넌스 모드에서 선 테스트 후 규정 준수 모드로 변환한다.)
06. Amazon S3 실습
참고 : https://s3.console.aws.amazon.com/s3/get-started?region=us-east-1
https://s3.console.aws.amazon.com/s3/get-started?region=us-east-1
s3.console.aws.amazon.com
- S3 콘솔 페이지에서 "버킷 만들기" 진행
- "버킷 이름"을 설정하고 "리전"을 선택한다.
- 객체 소유권 설정을 통해 타 AWS계정의 접근을 활성/비활성 한다.
: 보안을 중요시해야 한다면 비활성이 권장된다.
- 생성하려는 버킷에 대한 퍼블릭 액세스를 설정한다.
: 외부의 접근에 대한 가능/불가능을 설정한다.
- 버킷 버전 관리
: 버전 관리 기능 활성화 여부를 설정한다.
- 버킷에 대한 태그를 설정한다.
- 버킷에 암호화를 추가한다.
: 서버측 암호화를 설정하며, 기본으로 SS3-S3 암호화 설정이 들어간다.
- S3 버킷에 객체 잠금 여부를 설정한다.
'AWS > Storage' 카테고리의 다른 글
[AWS] Amazon EBS (0) | 2023.10.09 |
---|