일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Go
- 운영체제
- Docker
- airflow.cfg
- 정리
- linux
- http
- 데이터 웨어하우스
- 데이터 파이프라인
- 데이터 엔지니어링
- S3
- 데이터엔지니어링
- HADOOP
- TIL
- PYTHON
- 컴퓨터네트워크
- Django
- 데이터베이스
- 데브코스
- 가상환경
- 자료구조
- airflow
- dockerfile
- 종류
- redshift
- sql
- 컴퓨터 네트워크
- 파이썬
- TCP
- Today
- Total
홍카나의 공부방
[AWS] S3 객체 암호화 본문
Server-Side Encryption (SSE)
- SSE-S3, SSE-KMS, SSE-C가 있다.
- 어떤 성황에 어떤 암호화 방식을 사용하는지 이해해야 한다.
SSE-S3
- AWS가 암호화 키를 관리하고, 사용자는 접근할 수 없다.
- 암호화 타입은 AES-256이다.
- HTTP(S) 요청시 헤더에 "x-amz-server-side-encryption":"AES256"을 설정해야 한다.
- 기본적으로는 새로운 버켓과 새로운 객체에 암호화가 활성된다.
자세한 SSE-S3 내용에 대해서는 다음 공식 문서를 참고한다.
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/UsingServerSideEncryption.html
SSE-KMS
- AWS KMS에서 직접 키를 관리하는 방식이다.
- 유저가 직접 키를 관리할 수 있고, CloudTrail을 이용한 logging도 가능하다.
- HTTP(S) 요청시 헤더에 "x-amz-server-side-encryption":"aws:kms"을 설정해야 한다.
- KMS key에도 엑세스할 수 있어야 버킷 안의 객체를 읽을 수 있게 된다.
- KMS 방식으로 암호화된 객체를 복호화하기 위해서는 Decrypt API를 사용하게 되는데,
이러면 KMS에 API 호출을 하게 된다.
SSE-C
- 키를 AWS로 보내는 방식인데, S3는 해당 키를 저장하지 않고 사용후 폐기한다.
- S3로 키를 보내기 때문에 HTTPS 사용이필수다.
- HTTP 헤더 안에 암호화 키를 덩달아 제공하는 방식이다.
Client-Side Encryption
- 클라이언트 라이브러리 등을 활용하여 클라이언트가 직접 데이터를 암호화한 다음에 S3에 전달하는 것이다.
- 클라이언트가 키와 암호화 사이클을 완벽하게 관리하는 방식이다.
SSL/TLS(Encryption in transit)
- aws s3에는 전송 중 암호화가 제공되는 HTTPS endpoint가 있다.
- 전송 중 암호화를 강제하기 위해서는 버킷 정책을 사용한다.
- 버킷 정책에 "aws:SecureTransport" : "False"를 condition으로 두고, GetObject를 Deny하는 식으로 구현 가능하다.
- 버킷 정책은 항상 기본 암호화 설정값보다 우선 순위가 높다는 것을 기억하자.
* CORS에 대해서도 알아두면 좋다.
https://docs.tosspayments.com/resources/glossary/cors
'Cloud Engineering > AWS' 카테고리의 다른 글
[AWS] Security Group과 NACL 비교 (1) | 2024.02.28 |
---|---|
[AWS] Lambda 기초 (0) | 2024.02.28 |
[AWS] Route 53 CNAME vs Alias (0) | 2024.02.19 |
[AWS] Amazon Aurora 정리 (0) | 2024.02.12 |
[AWS] EBS와 EFS의 차이점 (0) | 2024.02.07 |