Search
Duplicate
📒

[AWS - SAA] 19-1. AWS 암호화 ⭐

상태
완료
수업
AWS - Solutions Architect
주제
AWS
4 more properties
참고

암호화(Encryption)

전송 중 암호화(SSL)

NOTE
데이터가 전송되기 전 암호화되고 서버가 데이터를 받으면 복호화하는 방식!
암호화 하고 복호화 하고.. 이렇게 해야 신용카드로 결제할 때 신용카드 번호가 노출안됨
클라이언트와 서버만이 암호화-복호화 방법을 알고 있음
SSL 인증서가 암호화를 해주고 다른 방법은 HTTPS가 있음
Amazon 서비스를 다룰 때 HTTPS 엔드포인트가 있다면 전송중 암호화가 됐음을 보장
기본적으로 전송 중 암호화를 활성화 하면 중간자의 공격으로 부터 보호받을 수 있음!
MITM(중간자 공격)이 발생하지 않도록 한다!

서버 측 저장 데이터 암호화

NOTE
데이터가 서버에 수신된 후 암호화하는 방식!
서버로 들어온다음 암호화/복호화를 거친다!
데이터 키로 데이터는 암호화된 형태로 저장된다.
암호화와 복호화에 필요한 키는 주로 KMS같은곳에 따로 관리
서버 자체가 암호화와 복호화를 관리하고 데이터 키를 통해 접근

클라이언트 측 암호화

NOTE
데이터는 사용자가 암호화하고 서버는 그 데이터를 복호화할수 없고 데이터를 받는 사용자에 의해 복호화가 가능!
클라이언트가 다한다
서버는 최선의 방법으로도 데이터를 복호화 할 수 없음

AWS KMS(Key Management Service)

NOTE
AWS 서비스로 암호화하는 방식!
KMS는 권한 부여를 위해 IAM과 완전히 통합되고 KMS로 암호화한 데이터에 관한 액세스를 쉽게 제어할 수 있게 함
CloudTrail을 통해서 키를 사용하기 위해 호출한 모든 API를 감시할 수 있다는 장점
대부분의 AWS 서비스에 KMS를 원활하게 사용할 수 있음
EBS, S3, RDS, SSM 등..
KMS 사용을 위해 API 호출이나 CLI, SDK 사용가능
실시간으로 인증서를 암호화하고 복호화할 수 있음!

KMS키 유형

NOTE
대칭키와 비대칭키..
대칭 키(AES-256)
데이터 암호화와 복호화에 사용되는 단일 암호화 키만 존재
KMS와 통합된 모든 AWS 서비스는 대칭 키를 사용
KMS 대칭키를 사용하려면 KMS API를 호출해야함
비대칭 키(RSA & ECC Key pairs)
데이터 암호화에 사용하는 퍼블릭 키와 데이터 복호화에 사용하는 프라이빗 키, 두키의 쌍
암호화 및 복호화 서명 및 확인에 사용
KMS에서 퍼블릭 키를 다운로드 할 수 있지만 프라이빗 키에는 액세스 할 수 없음
프라이빗 키에 액세스하려면 API 호출로만 가능

KMS키 정책

NOTE
KMS키에 KMS키 정책이 없다면 누구도 액세스 할 수 없다!
기본 KMS키 정책
사용자 지정 KMS키 정책을 제공하지 않으면 생성됨
기본적으로 계정의 모든 사람이 키에 액세스 하도록 허용
사용자 지정 KMS키 정책(CMK)
KMS키에 액세스 할 수 있는 사용자 또는 역할을 정의
키를 관리할 수 있는 사람을 정의
KMS키에 관한 교차 계정 액세스 시 유용

KMS 다중지역

NOTE
다른 지역에 원본의 복제본을 준다.
다른 AWS리전에서 사용할 수 있는 KMS키 세트로 서로 교체해서 사용할 수 있다.
한 리전에서 암호화하고 다른 리전에서 복호화 가능!
다음 리전으로 복제할 때 교차 리전 API호출을 실행할 때 데이터를 재 암호화하지 않아도 된다.
KMS 다중 지역키는 전역으로 사용할 수 없다, 기본 키가 있고 복제본이 있는 개념

KMS 키 정책

NOTE
KMS는 리전에 따라 범위가 지정된다.
기본키 KMS 키 정책
특정 KMS 키 정책을 제공하지 않으면 생성된다.
기본적으로 계정의 모든 사람이 키에 액세스하는걸 허용한다.
맞춤형 KMS 키 정책
KMS키에 엑세스할 수 있는 사용자 정의
누가 키를 관리하는가에 대한 정의
KMS키의 교차 계정 접근에 유용하다!

S3 복제 암호화 시 고려사항

NOTE
한 버킷에서 다른 버킷으로 S3 복제를 활성화하면 암호화되지 않은 개체 및 SSE-S3로 암호화된 객체는 기본적으로 복제된다.
SSE-C(고객 제공 키)로 암호화된 개체는 복제되지 않는다.
SSE-KMS로 암호화된 객체의 경우 옵션을 활성화 해야 한다.
대상 버킷 내의 객체를 암호화할 KMS키 지정
대상 키에 대한 KMS키 정책 사용
대상 KMS키로 대상 버킷 데이터를 다시 암호화하면 복제가 활성화 된다.
다중 리전 AWS KMS키를 사용할 수 있지만 현재는 S3에서 독립키로 취급한다.

SSM Parameter Sotre

NOTE
구성 및 암호를 위한 보안 스토리지!
IAM을 활용해서 비밀정보 얻음
구성을 암호화할지 선택할 수 있어서 KMS 서비스를 이용해 암호를 만들 수 있음
서버리스 서비스이며 확장성과 내구성이 뛰어나며 SDK 사용이 용이
매개변수를 업데이트할 때 구성과 암호의 버전을 추적할 수 있음
IAM을 통해 보안이 제공
KMS 서비스로 암호화 및 복호화에 사용가능
EventBridge로 알람을 받을 수 있다.
실제 자바에서 사용하는 예시

AWS Secrets Manager

NOTE
암호를 저장하는 최신 서비스로 SSM Parameter Store와 다른 서비스!
다중 지역을 지원해 가용성도 높음!
AWS Secrets Manager는 X일마다 강제로 암호를 교체하는 기능이 있다! (암호 관리 수월)
교체할 암호를 강제 생성 및 자동화하는 Lambda함수를 정의해야 한다.
암호는 KMS 서비스를 통해 암호화된다
RDS, Aurora의 통합 또는 암호에 대한 이야기가 나오면 AWS Secret Manager를 생각하자!