Share
Sign In

Security & Encryption

System Manager(SSM) Parameter Store - 아무거나 다 저장
Secrets Manager - 암호 + Key Rotation
ACM - 인증서 발급
KMS - 대칭키, 비대칭키 저장소
CloudHSM - KMS보다 보안이 많이 강화됨
Shield - DDos 공격 (Standard) + AWS 서비스에 대한 공격 (Advanced)
WAF - SQL Injection 등의 공격 + 주로 CloudFront, ALB, API Gateway에 붙어있음
GuardDuty - CloudTrail , VPC Flow Logs, DNS 로그를 자동 분석
Inspector - EC2 자동 보안 평가 서비스
Macie - S3에서 개인 정보 보유 여부를 평가하고 보안을 감시함
암호화란?
암호화 사용 방법
Encryption in flight (SSL)
전송할 때 암호화하는 방법. SSL 인증서를 통해 HTTPS 통신을 한다. 이렇게 하면 MITM(man in the middle attack - 중간에서 가로채기) 공격을 방지할 수 있다.
Server side encryption at rest
서버는 파일 받고는 암호화해서 저장한다. 사용자가 파일을 요청할 때는 복호화해서 보내준다.
Client side encryption
내가 파일을 보낼 때부터 암호화하는 방법이다. 서버는 그냥 저장만 할 뿐 어떤 데이터인지는 알지 못한다.
1. KMS (Key Management Service)
💡
시험에서 encryption이란 말이 나오면 이 서비스를 떠올리자
AWS 서비스 전반에 걸쳐 암호화 키를 저장하는 서비스이다. 암호화 키를 제공하진 않고 KMS에 데이터를 던져주면, 암호화된 데이터를 뱉는 느낌?
대칭키 (AES-256)과 비대칭키 (RSA & ECC)를 모두 지원한다.
키 순환이 가능하며 CloudTrail로 감사를 할 수 있다.
KMS Key의 종류에는 3가지가 있다.
생성 주체
키 정책
CloudTrail
키 순환 (디폴트)
Customer Managed Keys
유저
수정 가능
감사 가능
선택 (매 1년)
AWS Managed Keys
AWS
확인만 가능
감사 가능
필수 (매 3년)
AWS Owned Keys
AWS
확인 불가
감사 불가
다양
요청당 최대 4KB 데이터만 암호화 가능하다.
유저에게는 Key 정책을, API 요청에는 IAM 정책을 붙여준다.
키 정책
S3 버킷 정책과 비슷하다. 하지만 S3 버킷 정책과는 다르게 무조건 키 정책으로 유저의 접근을 제어해야 한다.
기본 키 정책
커스텀 키 정책 - KMS Key에 접근 가능한 유저와 역할을 지정할 수 있다. 여러 계정에 키를 줄 때 유용하다.
키 순환
자동 - 유저가 관리하는 CMK는 매 1년 마다 자동으로 키를 교체할 수 있다. 이전 키는 저장되어서 옛날 데이터를 복호화할 때 사용하며, CMK ID는 교체해도 동일하다.
수동 - 원하는 날마다 바꾸게 할 수도 있다. CMK ID는 달라지지만 alias를 사용해서 일관성을 유지한다.
(SAP) 키 구성 요소 (Key Material)
키를 만들기 위해 중요한 값이다. 키 생성시에만 설정할 수 있고, 3가지 소스에서 가져온다.
KMS (AWS_KMS)
External (EXTERNAL) - 유저가 구성 요소를 관리해야 하며, 대칭키만 되며, 수동 키 순환만 된다.
Custom Key Store (AWS_CLOUDHSM) - 좀 더 높은 보안 수준을 지켜야 할 때 사용한다.
(SAP) 멀티 리전 키
키 정보를 똑같이 복사해서 사용하고 리전별로 각자 독립적으로 관리된다. Primay와 Replicas로 구별되며, 한 리전에서 암호화하고, 다른 리전에서 복호화하는 식으로 작동한다. 이러면 cross-region API call을 할 필요가 없다.
2. SSM Parameter Store
KMS가 키를 저장했다면, SSM Parameter Store는 키를 이용해 다양한 설정값과 암호값(Configuration)을 암호화해 저장하는 완전 관리형 서비스이다.
IAM 권한을 통해 관리한다.
/aws/reference/manager/rsd_id 처럼 경로를 통해 호출한다.
CloudFormation과 통합될 수 있으며, CloudWatch Events로 알림을 보낼 수도 있다.
Standard/Advanced 버전이 있으며, Advanced 버전은 파라미터 정책을 지원한다.
파라미터 정책 - TTL(만료 시간)을 지정해 패스워드를 강제로 갱신/삭제할 수 있다.
3. Secrets Manager
SSM이 이것저것 다 저장했다면 Secrets Manager는 암호값만 저장한다.
매 X일 마다 키 교체를 강제한다.
X일 마다 이벤트가 invoke된다.
Lambda는 이 invoke를 통해 자동으로 암호를 생성하고 적용할 수 있다.
Amazon RDS, Redshift, DocumentDB와 통합할 수 있다.
KMS 키로 암호화된다.
4. AWS Certificate Manager (ACM)
SSL/TLS certificate을 생성/관리해준다.
AWS에서 생성하거나 외부 SSL을 가져올 수 있다. 갱신도 똑같다.
ELB, CloudFront, API Gateway에서 사용이 가능하다.
직접 CA를 발급하고 해당 CA를 쓸 수도 있다.
리전별로 다 다른 SSL 인증서를 발급해야 한다. (No cross-region)
5. Shield
AWS Shield Standard - 공짜고, DDos 공격을 방어한다.
AWS Shield Advanced - 유료고, AWS 서비스에 대한 공격을 방어한다.
6. CloudHSM
KMS가 AWS에서 관리하는 거라면, CloudHSM은 하드웨어를 구매해 회사 자체에서 키를 관리한다.
FIPS 140-2 Level 3 (KMS는 Level 2)
SSL로 AWS와 연결한다.
SSE-C 암호화에 적합하다.
7. WAF (Web Application Firewall)
ALB, API Gateway와 CloudFront에 붙여 웹 어플리케이션(L7)에 대한 공격을 막는 서비스이다. Web Access Control List를 정의해서 특정 IP를 차단할 수 있다.
SQL Injection, XSS 공격을 감지해 보호한다.
지역별로 차단을 할 수 있다.
속도 기반 규칙(특정 IP가 얼마나 자주 접근)으로 DDos 공격을 차단할 수 있다.
8. Firewall Manager
AWS Organization의 모든 계정을 규칙을 통해 관리할 수 있다.
WAF Rule
AWS Shield Advanced
EC2 Security Group
VPC ENI resources
DDos 공격을 방어하는 간단한 아키텍처
기타
9. GuardDuty
머신 러닝으로 CloudTrail Logs, VPC Flow Logs, DNS Logs 자료들을 분석해 위협을 찾아낸다. 찾아내면 CloudWatch Event로 알릴 수 있다. 암호화폐 공격을 막을 수 있다.
10. Inspector
EC2 보안 평가를 하는 서비스. 운영체제에 알려진 취약점과 의도되지 않은 네트워크 접근을 분석한다. Inspector Agent가 EC2에 설치되어야 하며 SNS를 통해 알릴 수 있다.
11. Macie
머신 러닝을 통해 S3가 PII (개인식별정보) 같은 민감한 정보를 가지고 있는지 찾는 서비스이다.
12. AWS 공유 책임 모델
AWS는 클라우드의 보안을 책임지고, 고객은 클라우드 안의 보안을 책임진다.
RDS로 예를 들어보자.
AWS는 아래를 책임져야 한다.
SSH 접근 방지
DB, OS 패치 관리
하드웨어 관리
고객은 아래를 책임져야 한다.
DB의 SG를 설정해 트래픽 차단
DB 유저 권한 관리
DB에 외부 접근 차단