왜 암호화인가?
비행 중 암호화(SSL)
매우 민감한 기밀 내용인 경우 전송 중 암호화를 씁니다.
예를 들어 신용카드로 온라인 결제를 하려고 할 때 네트워크 패킷이 가는 길에 다른 사람한테 신용카드 번호가 보여서는 안될 겁니다.
온라인으로 결제할 때 초록색 자물쇠 그림이 있고 SSL이 활성화된 웹사이트임을 보장해주는 HTTPS 웹사이트를 본 적 있을 겁니다. 바로 그것이 전송 중 암호화표시입니다.
전송 중 암호화가 되면 데이터가 전송되기 전 암호화되고 서버가 데이터를 받으면 복호화합니다
물론 전송하는 이와 서버만이 암호화와 복호화를 하는 방법을 알고 있습니다
- 데이터는
전송 전 암호화
되고 수신 후 복호화
됩니다.
- 암호화에 도움이 되는
SSL 인증서(HTTPS)
- 비행 중 암호화로
MITM(중간자 공격)
이 발생하지 않도록 합니다.
Server side encryption at rest
- 데이터는 서버에서 수신 후 암호화
- 데이터는 전송되기 전에 해독됩니다.
- 키(일반적으로 데이터 키) 덕분에
암호화된 형태로 저장
됩니다.
- 즉, 데이터 키라고 불리는 키 덕분에 데이터는 암호화된 형태로 저장되고, 암호 키와 해독 키는 주로 KMS Key Management Service 같은 곳에 따로 관리되고 그 곳에 대한
액세스 권한
이 있어야 합니다.
Client side encryption
- 데이터는
클라이언트에 의해 암호화
되고 서버에 의해 해독되지 않습니다
.
- 데이터는 수신 클라이언트에 의해 해독됩니다.
- 서버는 데이터를 해독할 수 없어야 합니다.
- 봉투 암호화 활용 가능
AWS KMS (Key Management Service)
AWS Key Management Service(AWS KMS)를 사용하면 애플리케이션과 AWS 서비스 전체에서 암호화 키를 생성, 관리 및 제어할 수 있습니다.
- AWS 서비스에 대한
"암호화"
라는 말을 들을 때마다 KMS
일 가능성이 높습니다.
- AWS는 우리를 위해
암호화 키를 관리
합니다.
- 승인을 위해 IAM과 완전히 통합됨
- 데이터에 대한
액세스를 쉽게 제어
하는 방법
CloudTrail
을 사용하여 KMS 키 사용 감사 가능
- 대부분의
AWS 서비스(EBS, S3, RDS, SSM...)에 원활하게 통합
- 비밀을 일반 텍스트, 특히 코드에 절대 저장하지 마십시오!
- `API 호출(SDK, CLI)을 통해서도 KMS 키 암호화 사용 가능
- 암호화된 비밀은 코드/환경 변수에 저장 가능
KMS KeysTypes
- KMS Keys는 Customer Master Key의 새 이름입니다.
- 대칭(AES-256 키)
- 암호화 및 복호화에 사용되는
단일 암호화 키
- KMS와 통합된 AWS 서비스는 대칭 CMK를 사용합니다.
- 암호화되지 않은 KMS 키에는 절대 액세스할 수 없습니다(
사용하려면 KMS API를 호출해야 함
).
- 비대칭(RSA 및 ECC 키 쌍)
- 공개(암호화) 및 개인 키(암호 해독) 쌍
암호화/암호 해독
또는 서명/확인 작업
에 사용
- 공개 키는 다운로드할 수 있지만 암호화되지 않은 개인 키에는 액세스할 수 없습니다.
- 사용 사례:
KMS API를 호출할 수 없는 사용자가 AWS 외부에서 암호화
AWS KMS(키 관리 서비스)
- 세 가지 유형의 KMS 키:
- AWS 관리형 키: 무료(aws/service-name, 예: aws/rds 또는 aws/ebs)
- KMS에서 생성된 고객 관리형 키(CMK):
$1/월
- 가져온 고객 관리형 키(256비트 대칭 키여야 함):
$1/월
- KMS에 대한 API 호출 비용 지불($0.03 / 10000 호출)
- 자동 키 순환:
- AWS 관리형 KMS 키: 1년마다 자동
- 고객 관리형 KMS 키: (
활성화해야 함
) 1년마다 자동
- 가져온 KMS 키: 별칭을 사용한
수동 순환만 가능
Copying Snapshots across regions
- KMS는 리전에 따라 범위가 지정됩니다 이는 KMS 키로 암호화된 EBS 볼륨이 있고 리전은 eu-west-2라고 할 때 다른 리전으로 복사하려면 몇 가지 단계를 거쳐야 함을 의미합니다
- 먼저, EBS 볼륨의 스냅샷을 생성해야 합니다 암호화된 스냅샷에서 스냅샷을 생성하면 생성된 스냅샷 또한 동일한 KMS 키로 암호화됩니다 이제 다른 리전으로 스냅샷을 복사하려면 다른 KMS 키를 사용해서 스냅샷을 다시 암호화해야 하는데 이 부분은 AWS에서 자동으로 처리합니다
- 다만 동일한 KMS 키가 서로 다른 리전에 있을 수는 없습니다 이제 EBS 스냅샷을 생성했습니다 다른 KSM 키를 사용해 암호화됐고 다른 리전에 있습니다
이제 KMS로 스냅샷을 자체 EBS 볼륨으로 복원하고 KMS Key B를 ap-southeast-2로 복원합니다
KMS Key Policies
- S3 버킷 정책과 "유사한" KMS 키에 대한 액세스 제어
- 차이점: 이것이 없으면 액세스를 제어할 수 없습니다.
.
- 기본 KMS 키 정책:
- 특정 KMS 키 정책을 제공하지 않으면 생성됨
- 기본적으로 계정의 모든 사람이 키에 액세스하도록 허용하는 것입니다
루트 사용자에 대한 키에 대한 완전한 액세스
= 전체 AWS 계정
- 맞춤형 KMS 키 정책:
- KMS 키에 액세스할 수 있는 사용자, 역할 정의
- 누가 키를 관리할 수 있는지 정의
- KMS 키의
교차 계정 액세스에 유용
합니다.
계정 간 스냅샷 복사
맞춤형 KMS 키 정책을 사용합니다.
- 자신의 KMS 키(고객 관리 키)로 암호화된 스냅샷 생성
- KMS 키 정책을 첨부하여 교차 계정 액세스 권한 부여
- 암호화된 스냅샷 공유
- (대상에서) 스냅샷 사본을 생성하고 계정의 CMK로 암호화합니다.
- 스냅샷에서 볼륨 생성
KMS Multi-Region Keys
- 상호 교환하여 사용할 수 있는
서로 다른 AWS 리전의 동일한 KMS 키
- 다중 리전 키는 동일한 키 ID, 키 자료, 자동 순환...
.
한 리전에서 암호화
하고 다른 리전에서 해독
합니다.
- 다시 암호화하거나 리전 간 API 호출을 할 필요가 없습니다.
.
- KMS 다중 리전은 글로벌이 아닙니다(
기본 + 복제본
).
- 각 Multi-Region 키는
독립적으로 관리
됩니다.
.
- 사용 사례:
글로벌 클라이언트 측 암호화, 글로벌 DynamoDB 암호화, 글로벌 Aurora
- 글로벌 클라이언트 측 암호화: 한 리전에서 클라이언트 측 암호화를 하고 다른 리전에서 클라이언트 측 복호화
DynamoDB 글로벌 테이블 및 KMS 다중 리전 키 클라이언트 측 암호화
Amazon DynamoDB Encryption Client
를 사용하여 DynamoDB 테이블의 클라이언트 측 특정 속성을 암호화
할 수 있습니다.
- 전역 테이블과 결합하여 클라이언트 측 암호화 데이터를 다른 지역으로 복제
- DynamoDB 글로벌 테이블과 동일한 리전에 복제된 다중 리전 키를 사용하는 경우 이 리전의 클라이언트는 해당 리전의 KMS에 대한 대기 시간이 짧은 API 호출을 사용하여 클라이언트 측 데이터를 해독할 수 있습니다.
- 클라이언트 측 암호화를 사용하여 특정 필드를 보호하고 클라이언트가 API 키에 액세스할 수 있는 경우에만 암호 해독을 보장할 수 있습니다.
글로벌 Aurora 및 KMS 다중 지역 키 클라이언트 측 암호화
- AWS 암호화 SDK를 사용하여 Aurora 테이블에서 클라이언트 측 특정 속성을 암호화할 수 있습니다.
- Aurora Global Tables와 결합하여 클라이언트 측 암호화 데이터를 다른 지역으로 복제
- 글로벌 Aurora DB와 동일한 리전에 복제된 다중 리전 키를 사용하는 경우 이러한 리전의 클라이언트는 해당 리전의 KMS에 대한 대기 시간이 짧은 API 호출을 사용하여 클라이언트 측 데이터를 해독할 수 있습니다.
- 클라이언트 측 암호화를 사용하여 특정 필드를 보호하고 클라이언트가 API 키에 액세스할 수 있는 경우에만 암호 해독을 보장할 수 있으므로 데이터베이스 관리자로부터도 특정 필드를 보호할 수 있습니다.
S3 복제 암호화 고려 사항
- 한 버킷에서 다른 버킷으로 S3 복제를 활성화하면
암호화되지 않은 개체
및 SSE-S3로 암호화된 개체
는 기본적으로 복제
됩니다.
SSE-C(고객 제공 키)
로 암호화된 개체는 복제되지 않습니다.
.
SSE-KMS로 암호화된 객체의 경우 옵션을 활성화
해야 합니다.
- 대상 버킷 내의 객체를 암호화할 KMS 키 지정
- 대상 키에 대한 KMS 키 정책 적용
- 소스 KMS 키에 대해 kms:Decrypt 및 대상 KMS 키에 대해 kms:Encrypt가 있는 IAM 역할
- KMS 제한 오류가 발생할 수 있으며 이 경우 서비스 할당량 증가를 요청할 수 있습니다.
- 다중 리전 AWS KMS 키를 사용할 수 있지만 현재는 Amazon S3에서
독립 키로 취급
합니다(객체는 계속 해독된 다음 암호화됨).
KMS를 통해 암호화된 AMI 공유 프로세스
- AMI를 다른 계정과 공유하는 과정에 관한 것으로 AMI는 KMS 키로 암호화 되어 있습니다 AMI는 소스 계정에 있고 KMS 키로 암호화된 것이죠 어떤 방식으로 A 계정의 AMI에서 B 계정의 EC2 인스턴스를 시작할까요?
- 먼저, 시작 권한으로 AMI 속성을 수정해야 하는데 이 시작 권한은 B 계정에서 AMI를 시작하도록 허용합니다. 시작 권한을 수정하고 특정 대상인 AWS 계정 ID를 추가하는 것이죠
- 그런 다음 B 계정에서 사용하도록 KMS 키도 공유해야 하므로 일반적으로 키 정책으로 실행됩니다 이제 B 계정에서 KMS 키와 AMI를 모두 사용할 수 있는 충분한 권한을 가진 IAM 역할이나 IAM 사용자를 생성합니다
- 따라서 DescribeKey API 호출과 ReEncrypted API 호출 CreateGrant, Decrypt API 호출에 관한 KMS 측 액세스 권한이 있어야 합니다
- 모두 완료된 후에는 AMI에서 EC2 인스턴스를 시작하면 되는데 선택 사항으로 대상 계정에서 자체 계정의 볼륨을 재암호화하는 KMS 키를 이용해 전체를 재암호화할 수 있습니다
- 이제 EC2 인스턴스를 실행할 수 있습니다
- 원본 계정의 AMI는 원본 계정의
KMS 키로 암호화
됩니다.
- 지정된 대상 AWS 계정에 해당하는 실행 권한을 추가하려면 이미지 속성을 수정해야 합니다.
- AMI가 참조하는 스냅샷을 암호화하는 데 사용되는 KMS 키를 대상 계정/IAM 역할과 공유해야 합니다.
- 대상 계정의 IAM 역할/사용자는
DescribeKey, ReEncrypted, CreateGrant, Decrypt
에 대한 권한이 있어야 합니다.
- AMI에서 EC2 인스턴스를 시작할 때 선택적으로
대상 계정은 자체 계정에 새 KMS 키를 지정하여 볼륨을 다시 암호화
할 수 있습니다.
SSM Parameter Store
AWS Systems Manager의 기능인 Parameter Store는 구성 데이터 관리 및 비밀 관리를 위한 안전한 계층적 스토리지를 제공합니다.
구성 및 비밀을 위한 보안 스토리지
- KMS를 사용한 원활한 암호화 옵션
- 서버리스, 확장 가능, 내구성, SDK 사용가능
- 구성/비밀의 버전 추적
- IAM을 통한 보안
- Amazon EventBridge를 통한 알림
- CloudFormation과 통합
- 예를 들어 애플리케이션과 SSM Parameter Store가 있을 때 평문 구성을 저장한다고 해보겠습니다.
- 그러면 EC2 인스턴스 역할 같은 애플리케이션의 IAM 권한이 확인될 겁니다
- 아니면 암호화된 구성이 있다고 해봅시다 그러면 SSM Parameter Store가 KMS로 구성을 암호화할 것 입니다.
- KMS 서비스가 암호화 및 복호화에 사용된다는 뜻입니다.
- 물론 암호화와 복호화를 수행하려면 애플리케이션이 기본 KMS 키에 액세스할 수 있어야겠죠
- 이렇게 계층 구조가 있는 Parameter Store에 매개변수를 저장할 수 있습니다
SSM Parameter Store Hierarchy
- /my-department/
- my-app/
- dev/
- db-url
- db-password
- prod/
- db-url
- db-password
- other-app/
- /aws/reference/secretsmanager/secret_ID_in_Secrets_Manager
- /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2(공개)
Standard and advanced parameter tiers
Parameters Policies (for advanced parameters)
- 매개변수(만료일)에 TTL을 할당하여 암호와 같은 민감한 데이터를 강제로 업데이트하거나 삭제할 수 있습니다.
- 한 번에 여러 정책을 할당할 수 있습니다.
AWS Secrets Manager
Secrets Manager는 코드의 암호
를 포함해 하드 코딩된 자격 증명
을 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 호출로 바꿀 수 있습니다.
- 비밀을 저장하기 위한 최신 서비스
- X일마다 암호를 강제로 교체하는 기능
- 순환 시 암호 생성 자동화(Lambda 사용)
- Amazon RDS(MySQL, PostgreSQL, Aurora)와 통합
- 비밀은 KMS를 사용하여 암호화됩니다.
- 주로 RDS 통합용
AWS Secrets Manager – Multi-Region Secrets
- 여러 AWS 지역에 암호 복제
- Secrets Manager는 읽기 전용 복제본을 기본 보안 비밀과 동기화 상태로 유지합니다.
- 읽기 복제본 비밀을 독립형 비밀로 승격하는 기능
- 사용 사례:
다중 지역 앱, 재해 복구 전략, 다중 지역 DB...
AWS Certificate Manager (ACM)
AWS Certificate Manager(ACM)은 AWS 웹 사이트와 애플리케이션을 보호하는 퍼블릭 및 프라이빗 SSL/TLS X.509 인증서와 키를 만들고, 저장하고, 갱신하는 복잡성을 처리합니다.
오토 스케일링 그룹에 연결된 ALB가 있다고 해보죠
- 이때 애플리케이션 로드 밸런서(ALB)를 HTTPS 엔드 포인트로서 노출하려 합니다
- 그러려면 ALB를 AWS Certificate Manager와 통합해 ALB에서 직접 TLS 인증서를 프로비저닝 및 유지관리하도록 하면 되죠
- 그러면 사용자가 HTTPS 프로토콜을 사용하는 웹사이트 또는 API에 액세스하게 됩니다
TLS 인증서
를 쉽게 프로비저닝, 관리 및 배포
합니다.
- 웹사이트(HTTPS)에 대한
실행 중 암호화
제공
- 공개 및 비공개 TLS 인증서 모두 지원
publicTLS 인증서 무료
- 자동TLS 인증서 갱신
- 통합(loadTLS 인증서 켜짐)
ElasticLoadBalancers(CLB,ALB,NLB)
CloudFront 배포
API 게이트웨이의 API
Cannot use ACM with EC2 (can’t be extracted)
ACM – 공용 인증서 요청
- 인증서에 포함할 도메인 이름 나열
- FQDN(정규화된 도메인 이름): corp.example.com
- WildcardDomain:*.example.com
- 검증 방법 선택: DNS 검증 또는 이메일 검증
- DNS 검증은 자동화 목적으로 선호됩니다.
- 이메일 유효성 검사는 WHOIS 데이터베이스의 연락처 주소로 이메일을 보냅니다.
- DNS 유효성 검사는 CNAME 레코드를 DNS 구성에 활용합니다(예: Route 53).
- 확인하는 데 몇 시간이 소요됩니다.
- 공인 인증서는 자동 갱신을 위해 등록됩니다.
- ACM은 ACM에서 생성한 인증서를
만료 60일 전에 자동으로 갱신
합니다.
ACM – 공인 인증서 가져오기
- ACM 외부에서 인증서를 생성한 다음 가져오는 옵션
- 자동 갱신 없음, 만료 전에 새 인증서를 가져와야 함
- ACM은 만료 45일 전부터 매일 만료 이벤트를 보냅니다.
- 일수를 구성할 수 있습니다.
- EventBridge에 이벤트가 나타납니다.
- AWS Config에는 만료되는 인증서(구성 가능한 일 수)를 확인하는 acm-certificate-expiration-check라는 관리형 규칙이 있습니다.
ACM – Integration with ALB
그럼 ACM 서비스는 어떻게 ALB와 통합되는 걸까요?
- 백엔드에 오토 스케일링 그룹이 있는 ALB와 ACM으로 프로비저닝 및 유지관리되는 TLS 인증서가 있다고 해봅시다
- 여기엔 아주 좋은 특이성이 있는데요 ALB에서는 HTTP에서 HTTPS로의 리디렉션 규칙을 설정할 수 있습니다
- 사용자가 HTTP 프로토콜에서 애플리케이션 로드 밸런서에 액세스할 때 ALB는 HTTPS로 리디렉션하는 요청을 반환하는 것이죠
- 그 후 사용자는 HTTPS 프로토콜에서 애플리케이션 로드 밸런서에 액세스하며
AWS Certificate Manager(ACM)에서 나오는 TLS 인증서를 사용합니다
- 그런 다음 요청이 HTTPS 프로토콜을 통과하면 오토 스케일링 그룹으로 곧바로 전달되죠
API Gateway - Endpoint Types
- Edge-Optimized (default): 글로벌 클라이언트용
- 요청은 CloudFront Edge 위치를 통해 라우팅됩니다(지연 시간 개선).
- ACM은 us-east-1
- API 게이트웨이는 여전히 한 지역에만 상주합니다.
- Regional:
- 동일 지역 내 고객의 경우
- CloudFront와 수동으로 결합 가능(캐싱 전략 및 배포에 대한 더 많은 제어)
- Private:
- 인터페이스 VPC 엔드포인트(ENI)를 사용하는 VPC에서만 액세스할 수 있습니다.
- 리소스 정책을 사용하여 액세스 정의
ACM – Integration with API Gateway
- API Gateway에서 Custom Domain Name 생성
- Edge-Optimized (default): 글로벌 클라이언트용
- 요청은 CloudFront Edge 위치를 통해 라우팅됩니다. (대기 시간 개선)
API 게이트웨이는 여전히 한 지역
에만 있습니다.
- TLS 인증서는 us-east-1에서 CloudFront와 동일한 지역에 있어야 합니다.
- 그런 다음 CNAME을 설정하거나 Route53에서 A-별칭 레코드를 (더 나은) 설정합니다.
- Regional:
- 동일 지역 내 고객의 경우
- TLS 인증서는
API 스테이지
로써 동일한 리전
에서 API 게이트웨이로 가져와야 합니다.
- 그런 다음 CNAME을 설정하거나 Route53에서 A-별칭 레코드를 (더 나은) 설정합니다.
웹 애플리케이션 방화벽
AWS WAF – Web Application Firewall
- 일반적인 웹 익스플로잇으로부터 웹 애플리케이션을 보호합니다(계층 7).
레이어 7은 HTTP
입니다(레이어 4는 TCP/UDP임).
.
- 배포
- 애플리케이션 로드 밸런서 (ALB)
- API 게이트웨이
- 클라우드프론트
- AppSync GraphQL API
- Cognito 사용자 풀
AWS WAF – Web Application Firewall
- 웹 ACL(웹 액세스 제어 목록) 규칙 정의:
- IP 세트: 최대 10,000개의 IP 주소 – 더 많은 IP에 대해 여러 규칙 사용
- HTTP 헤더, HTTP 본문 또는 URI 문자열 일반적인 공격으로부터 보호 - SQL 인젝션 및 XSS(Cross-Site Scripting)
- 크기 제약, 지리적 일치(국가 차단)
- 속도 기반 규칙(이벤트 발생 수 계산) – DDoS 보호용
- 웹 ACL은
CloudFront를 제외하고 지역적
입니다.
- 규칙 그룹은 웹 ACL에 추가할 수 있는
재사용 가능한 규칙 집합
입니다.
WAF – 로드 밸런서와 함께 WAF를 사용하는 동안 고정 IP
- WAF는 Network Load Balancer(계층 4)를 지원하지 않습니다.
- ALB에서
고정 IP
및 WAF에 대해 Global Accelerator
를 사용할 수 있습니다.
- 예를 들어 애플리케이션에 고정 IP를 사용하면서 로드 밸런서와 함께 WAF를 사용하고 싶다고 합시다
- WAF는 네트워크 로드 밸런서(NLB)를 지원하지 않습니다. NLB는 L4에서 WAF는 L7에서만 작동하니까요
- 따라서 WAF를 제공하려면 애플리케이션 로드 밸런서가 있어야 합니다
- 하지만 아시다시피 애플리케이션 로드 밸런서는 고정 IP가 없죠 이런 문제는 AWS Global Accelerator로 고정 IP를 할당받은 다음 ALB에서 WAF를 활성화하면 해결할 수 있습니다
AWS Shield: protect from DDoS attack
- DDoS: 분산 서비스 거부 – 동시에 많은 요청
- AWS Shield Standard:
- 모든 AWS 고객에게 활성화되는 무료 서비스
- SYN/UDP 서비스 장애, 반사 공격 및 기타 계층 3/계층 4 공격과 같은 공격으로부터 보호 제공
- AWS 실드 어드밴스드:
- 선택적 DDoS 완화 서비스(조직당 월 $3,000)
- Amazon EC2, Elastic Load Balancing(ELB), Amazon CloudFront, AWS Global Accelerator 및 Route 53에 대한 보다 정교한 공격으로부터 보호
- AWS DDoS 대응 팀(DRP)에 연중무휴 액세스
- DDoS로 인한 사용량 급증 시 더 높은 수수료로부터 보호
- Shield Advanced 자동 애플리케이션 계층 DDoS 완화는 AWS WAF 규칙을 자동으로 생성, 평가 및 배포하여 계층 7 공격을 완화합니다.
AWS Firewall Manager
- AWS 조직의 모든 계정에서 규칙 관리
.
- 보안 정책: 공통 보안 규칙 집합
- WAF 규칙(Application Load Balancer, API 게이트웨이, CloudFront)
- AWS Shield Advanced(ALB, CLB, NLB, Elastic IP, CloudFront)
- EC2용 보안 그룹, 애플리케이션 로드 밸런서 및 VPC의 ENI 리소스 - AWS 네트워크 방화벽(VPC 수준)
- Amazon Route 53 Resolver DNS 방화벽
- 정책은 지역 수준에서 생성됩니다.
- 규칙은 조직의 모든 계정 및 향후 계정에서 생성되는 새 리소스에 적용됩니다(규정 준수에 적합).
WAF vs. Firewall Manager vs. Shield
WAF, Shield 및 Firewall Manager는 포괄적인 보호를 위해 함께 사용됩니다
.
- WAF에서 웹 ACL 규칙 정의
리소스를 세밀하게 보호
하려면 WAF만 선택
하는 것이 올바른 선택입니다.
- 여러 계정에서 AWS WAF를 사용하려는 경우
WAF 구성 가속화
, 새 리소스 보호 자동화
, AWS WAF
와 함께 Firewall Manager 사용
- Shield Advanced는
Shield ResponseTeam(SRT)의 전담 지원
및 고급 보고
와 같은 AWS WAF에 추가 기능을 추가합니다.
- DDoS 공격에 자주 노출되는 경우
Shield Advanced 구입을 고려
하십시오.
DDoS 복원력을 위한 AWS 모범 사례
Edge Location Mitigation (BP1, BP3)
- BP1 – 클라우드프론트
- 웹 애플리케이션 제공
- 일반적인 DDoS 공격으로부터 보호(SYN 플러드, UDP 반사...)
- BP1 – 글로벌 액셀러레이터
- 엣지로부터 애플리케이션에 액세스
- DDoS 보호를 위해 Shield와 통합
- 백엔드가 CloudFront와 호환되지 않는 경우 유용합니다.
- BP3 – 루트 53
- 엣지에 도메인 이름 변환을 글로벌로 설정
- 에지에서 도메인 이름 확인
- DDoS 보호 메커니즘
Best pratices for DDoS mitigation
- 인프라 계층 방어(BP1, BP3, BP6)
- 높은 트래픽으로부터 Amazon EC2 보호
- 여기에는 Global Accelerator, Route 53, CloudFront, Elastic Load Balancing 사용이 포함됩니다.
- Auto Scaling이 포함된 Amazon EC2(BP7)
- 플래시 크라우드 또는 DDoS 공격을 포함하여 갑작스러운 트래픽 급증 시 확장 지원
- 탄력적 로드 밸런싱(BP6)
- Elastic Load Balancing은 트래픽 증가에 따라 확장되며 많은 EC2 인스턴스에 트래픽을 분산합니다.
Application Layer Defense
- 악성 웹 요청 감지 및 필터링(BP1, BP2)
- CloudFront는 정적 콘텐츠를 캐싱하고 엣지 로케이션에서 제공하여 백엔드를 보호합니다.
- AWS WAF는 CloudFront 및 Application Load Balancer 위에 사용되어 요청 서명을 기반으로 요청을 필터링하고 차단합니다.
- WAF 속도 기반 규칙은 악의적인 행위자의 IP를 자동으로 차단할 수 있습니다.
- WAF에서 관리형 규칙을 사용하여 IP 평판을 기반으로 공격을 차단하거나 익명 IP를 차단합니다.
- CloudFront는 특정 지역을 차단할 수 있습니다.
- Shield Advanced(BP1,BP2,BP6)
- Shield Advanced 자동 애플리케이션 계층 DDoS 완화는 AWS WAF 규칙을 자동으로 생성, 평가 및 배포하여 계층 7 공격을 완화합니다.
Attack surface reduction
- AWS 리소스 난독화(BP1, BP4, BP6)
- CloudFront, API Gateway, Elastic Load Balancing을 사용하여 백엔드 리소스(Lambda 기능, EC2 인스턴스) 숨기기
- 보안 그룹 및 네트워크 ACL(BP5)
- 보안 그룹 및 NACL을 사용하여 서브넷 또는 ENI 수준에서 특정 IP를 기반으로 트래픽 필터링
- Elastic IP는 AWS Shield Advanced로 보호됩니다.
- API엔드포인트 보호(BP4)
- EC2, Lambda 등 숨기기
- 에지 최적화 모드 또는 CloudFront + 지역 모드(DDoS에 대한 추가 제어)
- WAF + API 게이트웨이: 버스트 제한, 헤더 필터링, API 키 사용
Amazon GuardDuty
이번에는 AWS 서비스인 Amazon GuardDuty를 살펴봅시다
이는 AWS 계정을 보호하는 지능형 위협 탐지 서비스입니다
백엔드에서 머신 러닝 알고리즘을 사용하여 이상 탐지를 수행하고
타사 데이터를 이용하여 계정에 대한 공격을 탐지합니다
- 지능형 위협 발견으로 AWS 계정 보호
- 기계 학습 알고리즘, 이상 탐지, 타사 데이터 사용
- 클릭 한 번으로 활성화(30일 평가판), 소프트웨어 설치 필요 없음
- 입력 데이터에는 다음이 포함됩니다.
- CloudTrail 이벤트 로그 – 비정상적인 API 호출, 무단 배포
- CloudTrail Management Events–createVPCsubnet, createtrail,...
- CloudTrail S3 Data Events–getobject, listobjects, deleteobject,...
- VPC 흐름 로그 – 비정상적인 내부 트래픽, 비정상적인 IP 주소
- DNS 로그 – DNS 쿼리 내에서 인코딩된 데이터를 전송하는 손상된 EC2 인스턴스
- Kubernetes 감사 로그 – 의심스러운 활동 및 잠재적인 EKS 클러스터 손상
- 발견 시 알림을 받을 EventBridge 규칙을 설정할 수 있습니다.
- EventBridge 규칙은 AWS Lambda 또는 SNS를 대상으로 할 수 있습니다.
- CryptoCurrency에 대한 공격으로부터 보호할 수 있습니다(전용 "발견" 있음).
Amazon Inspector
Amazon Inspector는 몇 군데에서 자동화된 보안 평가를 실행할 수 있는 서비스입니다
- 자동화된 보안 평가
- EC2 인스턴스의 경우
- AWS System Manager(SSM) 에이전트 활용
- 의도하지 않은 네트워크 접근성 분석
- 알려진 취약점에 대해 실행 중인 OS 분석
- 컨테이너 이미지의 경우 Amazon ECR로 푸시
- 람다 함수의 경우
- 배포 시 기능 평가
- 함수 코드 및 패키지 종속성에서 소프트웨어 취약성을 식별합니다.
- 보고 및 AWS Security Hub와의 통합
- 결과를 Amazon Event Bridge로 전송
What does Amazon Inspector evaluate?
- 주의 사항: EC2 인스턴스, 컨테이너 이미지 및 Lambda 기능에만 해당
- Inspector는 실행 중인 EC2 인스턴스, Amazon ECR의 컨테이너 이미지, Lambda 함수
사용된다는 점을 기억해야 합니다
AWS Macie
- Amazon Macie는 기계 학습 및 패턴 일치를 사용하여 AWS에서 중요한 데이터를 검색하고 보호하는 완전 관리형
데이터 보안 및 데이터 개인 정보 보호 서비스
입니다.
- Macie는 PII(개인 식별 정보)와 같은 중요한 데이터를 식별하고 경고하도록 도와줍니다.
AWS Certified Solutions Architect Associate 시험합격!