Object라고 불리는 파일을 저장하는 공간
JSON Based입니다.
4개 선택하는 거 그거입니다. Company의 데이터 leak을 방지하기 위해 등장했습니다.
Bucket 레벨에서 가능합니다. 같은 Key값으로 파일을 Overwrite하면 자동으로 Versioning됩니다.
CRR(Cross Region Replication): 서로 다른 리전으로 버켓을 Replication하는 방법
SRR(Same Region Replication): 같은 리전 내에서 Replication 하는 방법
CRR은 lower latency, 계정 간 replication에서 사용
SRR은 log수집이나 test와 production 사이에 실시간 복제에 사용
Replication을 객체 생성 이후에 만들었다면 이전에 있던 객체는 복제가 되지 않습니다. 이 객체에 대해서는 batch replication이라는 별도 작업으로 진행해야 합니다.
추가적으로 암호화를 진행하기 전에 Bucket Policy 설정이 적용되는데, 암호화를 강제할 수 있습니다. 이는 Default Encryption이 적용되기 전에 먼저 evaluate 됩니다.
AWS가 직접 관리하고 소유한 Key로 Object가 암호화됩니다.
AES-256 기반의 암호화 알고리즘을 사용합니다.
"x-amz-server-side-encryption":"AES256"이란 헤더가 존재해야 합니다.
Key Management Service를 이용하여 키를 직접 관리하고, CloudTrail을 이용하여 감시합니다.
"x-amz-server-side-encryption":"aws:kms"란 헤더가 존재해야 합니다.
KMS limit이 존재하고, API Call을 통해 Key를 upload/download해야 하므로 quota(limit)이 존재합니다.
DSSE-KMS는 SSE-KMS에서 암호화를 한번 더 진행하는 방식입니다.
Customer가 직접 키를 AWS밖에서 관리합니다.
HTTPS방식으로만 Key를 업로드할 수 있습니다.
위의 3가지 방식은 Server-Side Encryption인데에 비해, 이 방식은 Client가 암호화까지 진행하고, 암호화된 Object를 S3로 제공하는 방식입니다.
전송 과정 중의 암호화에 대해서 S3는 HTTP/HTTPS 엔드포인트를 모두 제공합니다. SSE-C는 반드시 HTTPS로 전송해야 하지만, 나머지는 권장사항입니다.
Client가 HTTP 요청을 S3로 보낼 때 aws:SecureTransport:true Condition이 존재하면 block됩니다.
Origin(protocol + domain + port)이 다른 서버로 요청을 보내려면 CORS 헤더 설정이 되어야 합니다.
1. Client가 서버로 OPTIONS메서드의 preflight를 보냅니다. 이때 헤더의 Origin에는 요청 origin이 담깁니다.
2. 웹서버에서 승인하면 Access-Control-Allow-Origin
헤더에 origin의 주소가 담기고, 허용할 메서드는 Access-Control-Allow-Methods
에 담깁니다.
3. 허용된 메서드에 대해서는 요청을 주고받을 수 있습니다.
MFA는 Permanent Delete나 Suspend Versioning을 진행할 때 사용할 수 있습니다.
MFA 삭제를 진행하고자 할 때는 아래의 유의사항이 존재합니다.
S3로의 Access를 모니터링/감시하고자 할 때 사용할 수 있습니다.
S3 Bucket이 Private하다면 내부의 Object도 공개적으로 접근할 수는 없습니다. 대신에, AWS가 제공하는 Pre-Signed URL을 통해 임시 URL을 발급받아 접근할 수 있습니다.
GET/PUT 요청에 대해 기존 User가 가지고 있던 권한 그대로 pre-signed url을 사용하는 사용자가 이용할 수 있습니다.