There are 4 methods of encrypting objects in S3
- SS3-S3 : encrypts S3 objects usung keys handled & managed by AWS
- SSE-KMS : leverage AWS key Management Service to manage encryption keys
- SSE-C : when you want to manage your own encryption keys
- Client Side Encryption
It's important to understand which ones are adapted to which situation for the exam.
S3에 객체를 업로드 할 경우, 객체들은 AWS 내의 서버가 되므로 객체로 접근할 때 보호하려 할 것이다.
누군가가 Amazon 서버에 들어오거나, 회사에서 설정한 보안 기준을 준수하기 등이 예시이다.
SSE-S3는 AWS가 다루고 관리하는 키를 사용해 S3 객체를 암호화하는 방법
SSE-KMS는 AWS 키 관리 서비스를 사용해 암호화 키를 관리하는 방법
SSE-C는 사용자가 만든 암호화 키를 관리할 때 쓰이는 방식
클라이언트 측 암호화가 있다.
특정 상황에서 어떤 방법을 적용해야 할지 아는 것이 중요하다.
SSE-S3
- SSE-S3 : encyption using keys handled & managed by Amazon S3
- Object is encrypted server side
- AES-256 encryption type
- Must ste header : "X-amz-server-side-encryption":'AES256"
Amazon S3에서 처리하고 관리하는 키를 암호화에 사용하는 방식이다.
객체는 서버 측에서 암호화 된다.
암호화 유형은 AES-256 알고리즘이다.
"X-amz-server-side-encryption":'AES256" 헤더가 설정된다.
SSE-KMS
SSE-KMS : encryption using keys handled & managed by KMS
KMS Advantages : user control + audit trail
Object is encrypted server side
Must ser header : "x-amz-server-side-encryption": "aws:kms"
KMS는 키 관리 서비스를 의미하며 암호화 서비스들 중 하나이다.
- 암호화 키는 KMS 서비스에서 처리 및 관리한다.
- SSE-S3 대신 KMS를 사용하는 이유가 무엇일까?
- 누가 어떤 키에 접근할 수 있을지 제어 가능 + 감사 추적을 할 수 있다.
- 객체는 서버 측에서 암호화 된다.
- 헤더는 "x-amz-server-side-encryption": "aws:kms" 로 지정해야 한다
원리는 SSE-S3와 동일하며 키만 다르다. KMS Customer Master Key(미리 지정해둔) 키를 사용한다.
SSE-C
SSE-C : server-side encryption using data keys fully managed by the customer outside of AWS
-Amazon S3 does not store the encryption key you provide
-HTTPS must be used
-Encryption key must provieded in HTTP headers, for every HTTP request made
SSE-C는 서버측 암호화 방식, AWS가 외부에서 customer가 관리하는 키를 사용한다.
- S3는 고객이 제공한 암호화 키를 저장하지 않는다. (사용 후 키를 폐기한다.)
- 데이터를 AWS로 전송할 때는 HTTPS를 사용해여 한다. (전송 중 암호화)
- 암호화 키가 HTTP 헤더에 제공되어야 함. 모든 HTTP 요청마다 매번 제공되어야 함. (사용 후 폐기되어서)
클라이언트 측이 데이터 키를 제공해야 해서 관리하는 것이 더 많아짐.
Client Side Encryption
Client library such as th Amazon S3 Encryption Client
Clients must encrypt data themselves before sending to S3
Clinets must decrypt data themselves when retrieving from S3
Customer fully manages the keys and encryption cycle
- S3에 객체를 업로드 하기 전, 클라이언트가 객체를 암호화를 한다.
- 클라이언트 라이브러리를 사용할 수 있는데 Amazon S3 Encryption Client 등으로 클라이언트 측 암호화를 수행할 수 있다.
- 클라이언트는 데이터를 S3에 보내기 전에 암호화 해야 한다.
- 또한 데이터를 해독할 채임도 클라이언트의 책임이다.
- 클라이언트 측 암호화에서는 키와 암호화 cycle 전체를 클라이언트가 전부 관리해야 한다.
Encryption in transit (SSL/TLS)
Amazon S3 exposes:
HTTP endpoint : non encrypted
HTTPS endpoint : encryption in flight
You're free to use the endpoint you want, but HTTPS is recommended
Most clients would use the HTTPS endpoint by default
HTTPS is mandatory for SSE-C
Encryption in flight is also called SSL / TLS
- 전송 중 암호화
- SSL 및 TLS 연결이 해당된다.
- S3가 이 서비스를 주도한다.
- 암호화되지 않은 HTTP 엔드포인트를 노출
- 암호화된 HTTPS 엔드포인트를 노출해 전송 중 암호화 서비스를 제공한다.
이때 SSL과 TLS 인증서의 도움을 받게 된다.
- 사용자는 원하는 엔드포인트를 사용해도 된다. 하지만 대부분 사용자들은 HTTPS를 기본적으로 사용한다.
- SSE-C 서버 측 암호화를 사용해 클라이언트가 키를 제공하는 경우에는 HTTPS 사용이 의무이다.
- 전송 중 암호화는 SSL/TLS라고도 불린다.
'Cloud > AWS' 카테고리의 다른 글
S3 CORS (교차 오리진 리소스 공유) (0) | 2022.11.13 |
---|---|
S3 Websites (S3 웹사이트) (0) | 2022.11.13 |
S3 Security & bucket Policies (S3보안 및 버킷정책) (0) | 2022.11.13 |
Amazon S3 - Versioning (버전 관리) (0) | 2022.11.13 |
AWS : S3 overview - buckets (S3 buckets 개요) (0) | 2022.11.13 |