-
SSE-S3
- AWS가 처리하고 관리하고 소유한 키를 이용해서 암호화를 합니다.
- 키에 액세스할 수 없습니다.
- 객체는 AWS에 의해 서버 측에서 암호화 될 거고요, 암호화의 보안 유형은 AES-256입니다.
- SSE-S3 메커니즘을 이용해서 객체를 암호화 하도록 요청하기 위해 헤더를 "x-amz-server-side-encryption":"AES256"이라고 설정해야 합니다.
- SSE-S3는 새로운 버킷과 새로운 객체에 대해 기본값으로서 활성화되어 있습니다.
작동원리
사용자는 올바른 헤도를 써서 파일을 업로드할 거예요 그리고 그게 S3 아래의 객체가 됩니다. 그럼 S3는 S3가 보유한 키와 그 객체를 짝지어줘요 우리가 SSE-S3 메케니즘을 사용하고 있기 떄문입니다. 그런 다음에 우린 그 키와 객체를 혼합해서 암호화를 합니다. 그럼 그게 S3 버킷에 저장됩니다.
SSE-KMS
- AWS와 S3 서비스가 보유한 키에 의존하지 않고 KMS 서비스 즉 키 관리 서비스를 이용해서 직접 자신의 키를 관리하려고 합니다.
- KMS를 사용할 경우에는 사용자가 키를 통제할 수 있다는 장점있습니다.
- KMS에서 직접 키를 생성할 수있습니다.
- CloudTrail을 이용해서 키 사용을 검사할 수 있습니다 그래서 누군가가 KMS에서 키를 사용할 때마다 AWS 안에서 일어나는 모든 걸 로킹하는 서비스인 CloudTrail에 로깅됩니다.
- "x-amz-server-side-encryption":"aws:kms"라는 헤더가 있어야 합니다. 그러면 객체가 서버 측에서 암호화 됩니다.
작동 방식
객체를 업로드 합니다. 이번엔 다른 헤더를 사용하죠, 그리고 헤더 안에서 우리가 사용하려는 KMS 키를 지정합니다. 그러면 객체가 S3에 나타납니다. 그리고 이번엔 사용될 KMS 키가 AWS KMS 외부에서 오게 됩니다. 그리고 이 두 개가 혼합되고 암호화가 이루어져요, 그리고 그 파일이 결국 S3 버킷으로 가게 됩니다. 그럼 이제 S3 버킷에서 그 파일을 읽기 위해서는 객체 자체에 액세스할 수 있어야 할 뿐만 아니라 이 객체를 암호화하는 데 사용된 KMS 키에도 액세스할 수 있어야 합니다. 이렇게 보안 수준이 한층 강화됩니다.
SSE-C
- 키가 AWS 외부에서 관리되지만 여전히 서버 측 암호화입니다. 왜냐면 우리가 그 키를 AWS로 전송하기 떄문입니다.
- 하지만 S3는 제공한 암호화 키를 절대 저장하지 않을 겁니다. 사용 후에는 폐기 됩니다.
- 키를 S3로 전송하기 때문에 반드시 HTTPS를 사용해야 합니다. 모든 요청에 HTTP 헤더의 일부로서 키를 전달해야합니다.
작동 방식
사용자는 파일과 키를 업로드 할 건데요, 사용자가 AWS 외부에서 그 키를 관리합니다. 그러면 S3는 클라이언트가 제공한 키와 객체를 사용해서 약간의 암호화를 수행하고 암호화된 파일을 S3 버킷에 넣게 됩니다. 그리고 물론 사용자가 그 파일을 읽으려면 역시 파일을 암호화하기 위해 사용한 키를 제공해야 합니다.
'aws' 카테고리의 다른 글
aws S3 Glacier 볼트 잠금 (0) 2024.03.15 aws S3 암호 실습 (0) 2024.03.14 aws S3 성능 (1) 2024.03.12 aws 이벤트 실습 (0) 2024.03.12 aws S3 이벤트 (0) 2024.03.11