AWS KMS (Key Management Service)
- AWS 서비스에서 '암호화'라고 하면 대부분 KMS 암호화를 의미할 가능성이 높음
- 암호화 키 관리
- CloudTail을 통해 키를 사용하기 위한 API 호출 추적 가능
- API call을 통해 KMS 키 암호화 사용 가능 (SDK, CLI 등)
- KMS 키
- Symmetric (AES-256)
- 암호화/복호화에 하나의 키가 사용
- 대부분의 AWS Service는 대칭키 사용
- 키 자체에 액세스 불가능 (API call을 통해서만)
- Asymmetric (RSA & ECC)
- 암호화에 사용되는 공개키 & 복호화에 사용되는 개인키
- 암/복호화 및 서명/검증 작업에 사용
- 공개키는 KMS에서 다운로드 가능 / 개인키 액세스 불가능 (API call을 통해서만)
- 사용사례 : KMS 키에 액세스할 수 없거나 액세스 권한이 없는 사용자가 클라우드 외부에서 공개키를 통해 암호화 수행
- AWS 계정에서 개인키로 복호화
- Symmetric (AES-256)
- KMS 키는 리전별로 범위가 지정됨
- 키에 대한 정책 설정 (Key Policies)
- 정책 설정이 없으면 아무도 해당 키에 접근 불가능
- 기본 정책 : 특정한 사용자 지정 KMS 키 정책이 제공되지 않는 경우 생성 / 기본적으로 계정 내 모든 사람이 키에 액세스 허용
- 사용자 지정 정책 : 키에 액세스 가능한 사용자, 역할 정의 / 키를 관리하는 사람 정의, 교차 계정 액세스 설정 시 유용
- 4KB 넘어가는 데이터에 대해서는 Envelope Encryption 사용 (GenerateDataKey API)
SSM Parameter Store
- 구성 / 보안 암호를 안전하게 보관하기 위한 장소
- 필요 시 KMS 암호화 가능
- 서버리스 / 확장성 / 내구성 / SDK 사용 쉬움
- 구성 업데이트 시 버전 생성되어 버저닝 가능
- IAM 적용 가능
- EventBridge로 알림 설정
- CloudFormation과 통합 (매개변수 사용)
- 계층별로 데이터 관리 가능 (IAM 접근 권한 범위 지정 가능)
- 파라미터 정책 설정 가능 (고급 플랜에서만)
- 파라미터 만료 날짜 설정 가능
- EventBridge를 통해 n일 뒤 알림 발송 가능 (pw 변경 알림 등에 사용)
SSM Parameter Store vs Secrets Manager
- Secrets Manager
- 더 비쌈
- 람다 함수를 통해 암호 순환 자동화 가능
- 람다 함수는 RDS, Redshifts, DocumentDB로부터 제공됨 (시간 절약 가능)
- KMS 암호화 필수
- CloudFormation과 통합 가능
- Parameter Store
- 비용 저렴
- 단순한 API
- 암호 순환은 없음 (CloudWatch 이벤트에 의해 트리거되는 람다 함수를 통해 직접 가능)
- KMS 암호화 선택
- CloudFormation과 통합 가능
- Parameter Store API를 통해 Secrets Manager 암호 풀링 가능
Reference