이 글은 24년 하반기 AWS Certified Solutions Architect - Associate(이하 AWS SAA-C03) 자격증 취득을 위해서 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate
암호화
전송 중 암호화(TLS/SSL)
- 데이터가 전송되기 전에 암호화되고, 전송 후에 복호화
- TLS 인증서.. HTTPS 프로토콜 사용로 중간자 공격 방어
서버 측 암호화
- 서버가 받은 뒤 암호화 시켜서 안전하게 저장
- 해독은 클라이언트에게 돌려주기 전에 해독
- 데이터 키를 어딘가에 저장해두고, 서버가 이 키에 접근할 수 있어야함
클라이언트 측 암호화
- 클라이언트 측에서 암호/복호화가 일어나며, 서버는 복호화할 수 없어야함
- 서버를 신뢰할 수 없을 때 사용
KMS
KMS란
- 키 관리 서비스로 대신 암호화 키를 관리한다는 개념
- 승인에 관해 IAM과 완벽히 통합
`- CloudTrail을 통해 키를 쓰는 API 호출을 감시할 수 있음
- AWS SDK, CLI로 API 호출을 해서 암호화한 뒤에 코드 내 환경 변수를 암호화 시킬 수 있음
- KMS 키는 리전에 한정됨.. 옮기고 싶으면 스냅샷 찍어서 다른 리전으로 옮기기
- 리전으로 옮길 때 재 암호화는 AWS가 해줌
종류
대칭 키 AES-256
- KMS가 통합된 모든 AWS 서비스는 대칭 키를 사용
- 키 자체에는 절대 액세스 못함... API 호출로 그 키를 사용할 뿐
비대칭 키 RSA & ECC
- 암호화할 때 공개 키, 복화화할 때 프라이빗 키
- 암호/복호화 또는 서명/확인 형태의 작업에 사용
- KMS로 부터 공개 키는 다운로드 가능, 프라이빗 키 액세스 못함
- 사례 : AWS 외부에서 API 호출 못하는 경우.. 공개키로 암호화하고, 내부에서 API 호출로 복호화
KMS 키 타입
AWS 소유한 키 (무료) : SSE-S3, SSE-SQS, SSE-DDB
AWS 관리형 키 (무료) : aws/서비스명.. ex) aws/rds, aws/ebs...
고객 관리형 키 (1$/month)
고객 관리형 키 imported (1$/month) + KMS API 호출 비용 (0.03$ / 10000 call)
자동 순환 키
AWS 관리형 키 : 1년마다 순환
고객 관리형 키 : 자동 순환을 활성화해야함 (1년 단위).. import 한 키라면 수작업으로 순환
KMS 키 정책
- KMS 키 정책이 없다면, 아무도 키에 접근할 수 없음
기본정책
- 특정한 커스텀 KMS 키 정책을 제공하지 않을 때 생성
- 계정에 있는 모든 사람이 키에 액세스 하도록 허용
커스텀 KMS 키 정책
- 액세스 할 수 있는 사용자와 역할을 정의
- 키를 관리할 수 있는 사람을 정의
- 교차 계정 액세스를 하려는 경우 유용
ㄴ 사례 : 스냅샷을 계정간 복제할 때 사용.. 암호화된걸 KMS키까지 같이 넘겨줘야하기 때문
KMS 다중 리전 키
- 한 리전에 기본 키를 갖고, 다른 리전으로 복제되는 형태
- 키 구성요소가 복제됨... Key ID 동일.. 서로 교차해서 사용 가능(A리전에서 암호화 후 B리전에서 복호화)
- 자동으로 교체 후에도 복제됨
- KMS 다중 리전 키는 글로벌이 아님.. 기본 키가 있고 복제본이 있는거임
- 각 다중 리전 키는 자체 키 정책 등으로 독립적으로 관리됨.. 특정 사례 빼고는 권장되지 않음
- 사례 : 전역 클라이언트 측 암호화, DDB 전역 테이블, Global Aurora에서 암호화
DDB/Aurora 사례
- 테이블만 암호화하는게 아닌, 테이블의 속성을 암호화하여 특정 클라이언트만 사용할 수 있게 가능
- 클라이언트 측에서 KMS API 호출로 미리 암호화하고 저장하는데, 이러면 DB 관리자도 값을 볼 수 없음
- DDB가 Global 테이블이면 다른 리전에도 복제되고 이때 복호화하려면 KMS 키도 리전 복제되야함
- Aurora는 대부분 동일하고 특정 열만 암호화도 가능
S3 암호화된 복제
- 한 버킷에서 다른 버킷으로 복제 시 기본적으로 암호화되지 않은 객체와 SSE-S3로 암호화된 객체가 기본으로 복제됨
- 고객 제공 키인 SSE-C로 암호화된 객체도 복제 가능
- SSE-KMS로 암호화된 객체는 기본적으로 복제되지 않지만, 복제시 옵션 활성화로 어떤 KMS 키로 암호화했는지 지정을 해줘야함
- KMS 키 정책을 대상 키에 적용해야하고
- S3 복제 서비스를 허용하는 IAM 역할을 생성해서 소스 버킷의 데이터를 먼저 복호화한 뒤, 대상 KMS 키로 대상 버킷의 데이터를 다시 암호화함
- 많은 암호/복호화가 발생하기에 KMS 스로틀릉 오류가 발생할 수 있는데, 이런 경우 서비스 할당량 요청을 해야함
- 이때 다중 리전 키를 쓰더라도, S3에서는 독립적인 키로 인식해서 복제 간 동일하게 암호/복호화 과정이 일어나게됨
`사례 : 암호화된 AMI 공유 프로세스
1. 계정 A에 있는 AMI(KMS로 암호화되어 있음)에서 B계정에 EC2 인스턴스 실행하려는 경우
2. 시작 권한으로 AMI 속성 수정, B계정에서 AMI 시작하도록 허용
3. KMS 키를 공유해서 쓸수있도록 IAM 역할을 만들어야함
4. 계정 B에서 KMS와 AMI를 모두 쓸 수 있는, IAM 역할이나 사용자를 만듬
5. EC2를 AMI로 실행할 때, 계정 B에서 새로운 KMS 키로 볼륨 전체 재암호화 가능
SSM 매개변수 저장소
- 구성 및 암호를 위한 보안 스토리지
- 구성을 암호화할지 선택 가능.. KMS 서비스 이용 가능
- 서버리스로 확장성과 내구성이 있음, SDK 사용도 용이함
- 매개변수 업데이트시 구성과 암호의 버전 추적 가능
- IAM을 통한 보안 제공, EventBridge로 알람 설정 가능
- CloudFormation과 통합되어 스택의 입력 매개변수로 활용 가능
- 계층적 구조에 저장 가능.. 매개변수 구조화 가능... 구조화를 통해 IAM 정책 간소화
ㄴ ex) /my-app/dev/db-url , /my-app/dev/db-password
- 티어 : Standard(무료, 10000개, 용량 4kb), Advanced (유료, 100000개, 용량 8kb)
- 고급 티어에서는 매개변수 정책 설정 가능
1. ex) TTL할당으로 pw 삭제/변경 강제
2. 한번에 여러 정책 할당 가능
AWS Secrets Manager
- 암호를 저장하는 최신 서비스... X일마다 강제로 암호를 교체하는 기능 있음
- 교체할 암호를 강제 생성 및 자동화 가능... 람다 사용
- RDS 등 AWS 서비스와도 통합이 잘 됨... 자동으로 DB 암호 변경
- KMS로 암호화
다중 리전 암호
- 복수 리전에 암호를 복제... 기본 암호화 동기화된 읽기 전용 복제본을 유지
- 한 리전에서 장애시 복제본을 독립 실행형 암호로 승격 가능
SSM 매개변수 저장소와 차이
- 교체, 관리 및 DB와의 긴밀한 통합 지원
- 0.05$/10,000call
AWS Certificate Manager
- ACM은 TLS인증서를 AWS에서 프로비저닝, 관리 및 배포
- 퍼블릭(무료), 프라이빗 TLS 인증서 모두 지원
- 자동 갱신 가능
- ELB, CloudFront, API Gateway와 통합 가능...단, EC2와는 통합 불가(퍼블릭 인증서는 추출이 불가능)
과정
1. 인증서에 포함할 도메인 이름 나열.. FQDN(test.example.com), 와일드카드(*.example.com)
2. 유효성 검증 방법 선택.. DNS | Email 검증 방법... 자동 갱신하려면 DNS가 좋음
3. DNS 검증 사용시 DNS 레코드에 CNAME 추가
4. 유효성 검증 완료시 인증서 발급 + 퍼블릭 인증서도 자동 갱신 목록에 추가... 만료 60일전 갱신
인증서 만료
ACM은 외부 인증서도 import 해올 수 있는데 이러면 자동 갱신은 안됨...
단, 만료 45일 전부터 EventBridge에 만료 이벤트 쏴줌... 람다 함수 등으로 연결해서 체크
아니면, AWS Config와 연결해서 acm-certificate-expiration-check라는 관리형 규칙으로 체크
통합 과정
ALB
- ALB에서는 HTTP에서 HTTPS로 리디렉션 규칙 생성 가능
- HTTP로 요청시 HTTPS로 리디렉션..HTTPS로 다시 요청하면 ACM에서 나오는 TLS 인증서 사용
API Gateway
엔드포인트 유형
1. 엣지 최적화
- 글로벌 서비스일 때...CloudFront 엣지 로케이션으로 요청을 라우팅.. 지연 시간 단축
- 하나의 리전에만 있는 API Gateway로 보내짐
2. 리전
- 클라이언트가 API Gateway와 같은 리전에 있을 때
- 자체 CloudFront와 연결해서 캐싱 및 배포 전략 제어 가능
3. 프라이빗
- VPC ENI로 VPC 내부에서만 액세스
- 액세스를 정의하는 리소스 정책 필요
ACM과 통합시
- 엣지 최적화와 리전 유형에서 적합
1. 사용자 지정 도메인 이름 이라는 리소스 생성
2-1. ( 엣지 최적화 엔드포인트 ) 요청이 CloudFront에서 라우팅.. 그런 다음 TLS 인증서가 CloudFront 배포에 연결됨... 따라서 CloudFront와 같은 리전인 us-east-1에 인증서가 구성되어야함
2-2. ( 리전 엔드포인트 ) : API Gateway와 리전이 같은 클라이언트를 위한 엔드포인트... API Gateway만 있기에 API Gateway와 같은 리전에 인증서 구성
WAF & Shield
Web Application Firewall
- 7계층(HTTP)에서 일어나는 일반적인 웹 취약점 공격으로부터 보호
`- 타겟 : ALB, API Gateway, CloudFront, AppSync GraphQL API, Cognito User Pool... NLB에는 못함
Web ACL 규칙 정의
- IP 주소를 기반으로 필터링.. IP 세트 정의 가능(한 IP 세트 당 10,000개 IP)
- HTTP 헤더, 본문에 기반해 필터링
- URI 문자열을 조건으로 두어, SQL 주입, XSS
- 용량 제한(ex 요청 최대 2MB)
- 지역 일치(특정 국가 허용/차단)
- 속도 기반 규칙 : IP당 요청 수 확인 (DDoS 차단)
- Web ACL은 리전에 적용되고, CloudFront만 글로벌로 정의됨
- 규칙 그룹 : 여러 웹 ACL에 추가할 수 있는 재사용 가능한 규칙 모음
- 사례
ex) 고정 IP를 쓰는 로드밸런서에 WAF를 쓰고 싶을 때...
- NLB는 L4이기에 L7에 적용되는 WAF를 못 씀
- ALB는 고정 IP를 못씀
- Global Accelerator로 고정 IP를 할당받고, ALB에서 WAF를 활성화하면 해결 가능
Shield
- 디도스로부터 보호
- AWS Shield Standard(무료) : SYN/UDP Floods, 반사 공격, L3/L4 공격으로부터 보호
- AWS Shield Advanced : 보다 정교한 디도스 공격 방어 (3,000$/month), EC2, ELB, CloudFront, Global Accelerator, Route53... 24/7 디도스 대응팀(DRP) 지원, 자동 애플리케이션 계층(L7) 디도스 완화... 자동으로 WAF 규칙을 생성, 평가, 배포
Firewall Manager
- 여러 계정 규칙 동시 관리
- 보안 정책 설정 : 보안 규칙의 집합... 모든 방화벽 한번에 관리
- WAF rules : ALB, API Gateway, CloudFront
- Shield Advanced : ALB, CLB, NLB, Elastic IP, CloudFront
- SG : EC2, ALB, VPC의 ENI 리소스
- VPC 수준의 네트워크 방화벽
- Route53 DNS 방화벽
- 정책은 리전 수준에서 관리... 조직에 등록된 모든 계정에 적용
- ex) 조직에서 ALB에 대한 WAF 규칙 생성 후, 새 ALB를 생성하는 경우, Firewall Manager에서 새 ALB에도 같은 규칙을 적용해줌
`WAF vs Firewall Manager vs Shield
WAF : 리소스별 보호를 구성하는데 적절
Firewall Manager : 여러 계정에서 WAF를 사용하고, WAF 구성 가속, 새 리소스 보호 자동화
Shield Advanced : 디도스 공격으로부터 보호, DRP 팀 지원, WAF 규칙 자동 생성, 고급 보고서
GuardDuty
- 지능형 위협 탐지... 머신 러닝 알고리즘으로 이상 탐지
Input Data
CloudTrail Event Logs : 사용하지 않는 API, 인가받지않은 행위
- 관리형 이벤트 : VPC 생성 이벤트 등
- S3 데이터 이벤트 : getObject, listObject 등
VPC Flow Logs : 비정상적인 인터넷 트래픽 검색
DNS Logs : DNS 쿼리 안에서 인코딩된 데이터를 전송하는 인스턴스 검색
Optional : EKS 감사로그, RDS 로그인 이벤트 등
- EventBridge 규칙과 연결해서 자동 알림도 가능
`- 암호화폐 공격을 방어하기 위한 아주 좋은 도구, 전문적인 탐지 기능 제공
Inspector
- 자동화된 보안 평가를 실행... CBE와 비교
- 작업 완료하면 AWS 보안 허브에 보고
- 결과 및 이벤트를 EventBridge로 보냄
- 실행 중인 EC2, ECR, lambda에 사용됨... 필요할 때 인프라만 지속적으로 스캔
- 실행될 때마다, 우선 순위를 정하기 위해 위험 점수가 모든 취약성과 다시 연관됨
대상
EC2 인스턴스
- 시스템 관리자 에이전트 활용(SSM agent)
- 의도되지 않은 네트워크 접근 가능성 분석
- 실행 중인 OS에서 알려진 취약점 확인
ECR 푸시할 때
- 컨테이너의 알려진 취약점 확인
람다 함수
- 람다 함수 배포시 함수 코드 및 패키지 종속성에서 SW 취약점 분석
Macie
- 완벽히 관리되는 데이터 보안 및 데이터 프라이버스 서비스
- ML과 패턴 매칭으로 민간데이터(PII, 개인 식별 정보) 발견 및 경보
- ex) S3 내에 개인 민감정보 탐지
'인프라 > AWS' 카테고리의 다른 글
[AWS] AWS 기술 정리 19편 재해복구, 마이그레이션 - (AWS SAA, Udemy 강의 정리) (0) | 2024.10.20 |
---|---|
[AWS] AWS 기술 정리 18편 네트워킹, VPC - (AWS SAA, Udemy 강의 정리) (1) | 2024.10.18 |
[AWS] AWS 기술 정리 16편 Organizations, IAM 고급 - (AWS SAA, Udemy 강의 정리) (0) | 2024.10.14 |
[AWS] AWS 기술 정리 15편 모니터링 및 감사 - (AWS SAA, Udemy 강의 정리) (0) | 2024.10.13 |
[AWS] AWS 기술 정리 14편 머신러닝 - (AWS SAA, Udemy 강의 정리) (1) | 2024.10.13 |