AWS 보안
<암호화 매커니즘 개요>
1.전송중 암호화 : 전송 전에 암호화되고 서버에서는 수신 후에 암호화를 해독한다. 그 방법은 본인과 서버만 알고 있다.
ex) SSL 인증서로 암호화함 (HTTPS)
- 중간자 공격으로부터 안전
2. 서버측면 암호화 : 서버에서 데이터를 디스크에 저장할 때 암호화된 형식으로 저장함. 데이터는 클라이언트로 다시 전송되기전에 해독됨. 암호화 키와 해독 키는 KMS로 어디선가 관리해야하며 서버는 해당 KMS와 통신하는 권한이 있어야 함.
3. 클라이언트측면 암호화 : 클라이언트에서 암호화. 서버는 절대로 데이터를 해독할 수 없고 데이터는 수신하는 클라이언트에서 해독됨. 데이터는 서버에 저장되지만 서버는 데이터의 의미를 모름. 봉투 암호화 사용됨.
<KMS - 키 관리 서비스>
KMS를 통해 데이터에 액세스하는 대상을 쉽게 제어할 수 있음.
KMS는 IAM과 완전히 통합되어 권한을 관리하기 떄문에 이 규칙들을 관리함에 있어 아주 간단하고 중앙화된다.
KMS는 AWS의 중심이고 거의 모든 것들과 통합될 수 있다.
볼륨들을 암호화는 EBS, 서버측에서 오브젝트를 암호화하는 S3, 데이터를 암호화해주는 RedShift, RDS, SSM 파라미터 스토어
CLI 나 AWS SDK와도 함께 사용가능하다.
1.CMK (Customer Master Key - 고객 마스터 키)
- 대칭키 : 데이터를 암호화하거나 해독할 때 단일 암호화 키를 쓰면 이 키들이 제공된다. 그래서 대칭 키라는 이름으로 불린다 . 봉투암호화에도 사용되고, KMS API를 사용해야함
CloudTrail을 통해 키 사용량을 감사할 수 있다.
- 비대칭키 :RSA , ECC KeyPair. 공용키로 암호화하고 비밀키로 해독함. KMS에서 서명/검증 작업에 사용됨.
공용키는 다운로드 할 수 있지만, 비밀키는 접근 불가함. AWS 외부에서 KMS API 를 호출할 수 없는 사용자들이 사용함
중요한 정보는 코드에 넣지 말고, 암호화한 상태로 환경변수나 코드에 넣어야함..
KMS는 호출 당 4KB의 데이터만 암호화 가능하다.
- KMS 접근 권한을 누군가에게 주려면? 키정책이 사용자를 키에 접근하도록 허용하는지 확인해야함 && IAM 정책도 API 호출을 허용해야 함.
- KMS키는 특정 리전에 묶임 : 리전 A에서 생성된 KMS키를 리전 B로 옮길수 없음
KMS와 KMS 키로 암호화된 EBS 볼륨이 있음. 이 것을 리전2로 옮기려면? -> 볼륨에 대한 스냅샷을 만들고 복사한 다음 리전2의 KMS 키로 재암호화해야함