- AWS에서 가장 중요한 구성 요소 중 하나
- "무한히 확장 가능한" 스토리지
- 크기를 사전에 프로비저닝 할 필요가 없으며 무한히 확장 가능하다.
Bucket
- S3는 객체를 저장하게 해주는 시스템이자 서비스이다.
- 파일이 버킷(디렉토리)에 있고 각 버킷은 고유한 이름을 갖는다.
- 이미 사용 중인 버킷의 이름은 만들 수 없다.
- 버킷은 region 수준에서 정의된다.
- S3는 전역 서비스이지만 버킷은 리전 리소스이다.
- 명명 규칙
- 버킷 이름은 3자(최소)에서 63자(최대) 사이여야 한다.
- 버킷 이름은 소문자, 숫자, 점(.) 및 하이픈(-)으로만 구성될 수 있다.
- 버킷 이름은 문자 또는 숫자로 시작하고 끝나야 한다.
- 버킷 이름은 IP 주소 형식(예: 192.168.5.4)을 사용하면 안된다.
- 버킷 이름은 접두사 xn--로 시작해서는 안된다.
- 버킷 이름은 접미사 -s3alias로 끝나서는 안된다. 이 접미사는 액세스 포인트 별칭 이름 용도로 예약되어 있다.
- Amazon S3 Transfer Acceleration에 사용되는 버킷은 이름에 점(.)을 사용할 수 없다.
Object
- 객체(파일)은 Key를 가지고 있다.
- Key
- 파일의 전체 경로
- 접두어(파일 경로)와 객체 이름으로 구성된다.
- bucket 내에는 "directory" 개념이 없다.
- 오직 키의 이름만 길고 '/'를 사용할 뿐이다.
- Value
- 최대 크기는 5TB(5000GB)이다.
- 한 번에 5GB 이상 업로드할 수 없다.
- 만약 5TB를 업로드 하려면 객체를 5GB 미만으로 나누어서 각각 업로드 해야 한다.(multi-part upload)
- Metadata
- key / value 페어의 리스트
- 시스템이나 사용자 메타데이터에서 사용
- 객체에 정보와 태그를 추가할 때 사용한다.
- Tags
- key / value 페어의 유니코드 키 (최대 10개)
- 보안, 라이프사이클에 유용하다.
- Version ID
- versioning이 활성화 되어 있을 경우
Versioning
- Amazon S3의 파일에 버전을 줄 수 있음
- 이 기능은 bucket level에서 활성화 해야 함
- 같은 키로 파일을 다시 업로드 하는 경우 기존 파일을 덮어쓰는 것이 아닌 해당 파일의 새로운 버전을 생성하는 것
- Amazon S3에서 버킷을 버저닝하여 모든 파일 버전을 어느 정도 유지하는 것이 가장 좋은 방법이다.
- 원치 않는 삭제로부터 보호받을 수 있기 때문이다.
- 필요하다면 이전 버전으로 손쉽게 되돌릴 수도 있다.
- 버저닝을 활성화하기 전에 버전 관리되지 않은 파일은 null 버전이 된다.
- 버킷에서 버저닝을 중당하면 이전 버전을 삭제하는 것이 아닌 이후의 파일이 버전을 할당받지 못하는 것이다.
Object Encryption
- 방법
- SSE-S3
- AWS가 처리 및 관리하는 키를 사용해 S3 객체를 암호화한다.
- SSE-KMS
- AWS Key Management Service를 사용해서 암호화 키를 관리한다.
- SSE-C
- 사용자가 만든 암호화 키를 관리할 때 쓰이는 방식이다.
- Client Side Encryption
- SSE-S3
SSE-S3
- Amazon S3에서 처리하고 관리하는 키를 암호화에 사용하는 방식
- 객체는 서버 측에서 암호화된다.
- SSE가 Server Side Encryption의 줄임말이다.
- 암호화 유형이 AES-256 알고리즘이다.
- 객체를 업로드하고 SSE S3 암호화를 설정하려면 "x-amz-server-side-encryption":"AES256" 으로 헤더를 설정한다.
- x-amz는 x Amazon이며 x Amazon 서버 측 암호화 AES-256으로 해석할 수 있다.
- 인스턴스에서 데이터 키를 소유 및 관리한다.
SSE-KMS
- 암호화 키는 KMS 서비스에서 처리 및 관리한다.
- 누가 어떤 키에 접근할 수 있을지 제어 가능하고 감사 추적을 할 수 있기 때문이다.
- 객체는 서버 측에서 암호화된다.
- 객체를 업로드하고 SSE KMS 암호화를 설정하려면 "x-amz-server-side-encryption":"aws:kms" 으로 헤더를 설정한다.
- Amazon S3는 미리 정의해둔 KMS Customer Master key(CMK)를 사용해 암호화를 한다.
SSE-C
- 서버 측 암호화 방식이고 AWS가 외부에서 고객이 관리하는 키를 사용한다.
- Amazon S3는 고객이 제공한 암호화 키를 저장하지 않는다.
- 데이터를 AWS로 전송할 때에는 HTTPS를 사용해야 한다.
- 암호화 키가 HTTP의 헤더에 제공되어야 하는데, 모든 HTTP 요청마다 매번 제공되어야 한다.
- 사용 후 폐기하기 때문이다.
Client Side Encryption
- 클라이언트 라이브러리를 사용할 수 있다.
- Amazon S3 Encryption Client 등으로 암호화를 수행한다.
- 클라이언트는 데이터를 S3로 보내기 전에 암호화 해야한다.
- 클라이언트에서 암호화 되었다면 복호화 또한 클라이언트에서 해야한다.
- 키와 암호화 주기(encryption cycle) 전부를 클라이언트가 관리한다.
Transit Encryption (SSL / TLS)
- Amazon S3에서 노출 되는 것
- HTTP endpoint
- 암호화 되지 않음
- HTTPS endpoint
- 전송 중 암호화 됨
- HTTP endpoint
- 원하는 endpoint를 사용해도 되지만, HTTPS를 추천한다.
- 대부분 클라이언트는 HTTPS endpoint를 기본으로 사용한다.
- SSE-C를 사용할 경우 HTTPS는 의무적으로 사용해야 한다.
- Encryption in flight(전송 중 암호화)는 SSL / TLS 라고도 불린다.
S3 Security
- User Based(사용자 기반 보안)
- IAM 정책 : 어떤 API 호출이 허용될지 결정한다.
- Resource Based (리소스 기반 보안)
- S3 Bucket Policies
- S3 콘솔에서 설정 가능한 버킷 전반의 규칙이다.
- S3 버킷에서 보안 주체가 무엇을 할 수 있는지 혹은 할 수 없는지를 결정하는 정책이다.
- S3 버킷으로의 교차 계정(cross account) 액세스가 활성화된다.
- Object Access Control List(ACL)
- 세분화되어 있다.
- Bucket Access Control List(ACL)
- 일반적이지 않다.
- S3 Bucket Policies
- IAM 보안 주체는 다음과 같은 경우 S3 객체에 액세스할 수 있다.
- 사용자 IAM 권한이 허용하거나 혹은 리소스 정책이 허용한다.
- 버킷 정책이 사용자 액세스를 명시적으로 거부한다면 액세스가 불가능해진다.
S3 Bucket Policies
- JSON 기반 정책이다.
- Resources : Bucket, Object
- Actions : API의 Allow 혹은 Deny 설정
- Effect : Allow / Deny
- Principal : 해당 S3 Bucket의 정책을 적용할 계정 혹은 유저
- S3 Bucket을 사용하는 사례
- 퍼블릭 액세스 권한을 승인
- 업로드 시점에 객체를 암호화 시킬 경우
- 교차 계정 S3 버킷 정책을 사용해서 다른 계정에 액세스 권한을 주는 경우
Block Public Access Bucket setting
- 객체가 퍼블릭화 되는 것을 차단하는 설정이다.
- 계정에 제한이 있을 경우에 사용된다.
- 종류
- 새 액세스 제어 목록 (ACLs)
- 모든 액세스 제어 목록 (ACLs)
- 새 퍼블릭 또는 액세스 포인트 정책
- 객체와 버킷이 외부로 공개되지 않도록 차단할 수 있다.
- 퍼블릭 버킷이나 액세스 포인트 정책을 통해 버킷과 객체를 향한 퍼블릭 및 교차 계정 액세스를 막을 수 있다.
'프로그래밍 > AWS Solutions Architect' 카테고리의 다른 글
AWS SAP - IAM (0) | 2024.02.27 |
---|---|
AWS SAA - Amazon Route 53 (0) | 2022.05.18 |
AWS SAA - Amazon ElastiCache (0) | 2022.05.17 |
AWS SAA - Amazon Aurora (0) | 2022.05.17 |
AWS SAA - Amazon RDS (0) | 2022.05.15 |