[SAA] AWS Security & Encryption

Blue·2024년 3월 4일
0

SAA

목록 보기
24/25

Why encryption? Encryption in flight(TLS/SSL)

보내기 전에 암호화 하고 받은 후에 해독하는것이다.

TLS 인증서가 암호화를 돕는다.

데이터를 네트워크를 통해 전송,공공 네트워크 이고 데이터가 여러 다른 서버를 통해 지나간다. 중간자 공격 원하지 않을때 쓴다.

Server-side encryption at rest

암호화가 서버가 받은 후에 일어난다. 안전하게 저장하고
복호화는 고객에게 되돌려 보내기 전에 진행한다.

Client-side encryption

Client 측에서 암호화 or 해독한다.
Server는 이 데이터를 해독할수 없어야한다. 서버 신뢰를 못하는것.

AWS KMS(Key Management Service)

Key 관리 서비스 이다.

KMS 서비스를 사용하면 AWS에서 암호화 키를 관리한다.
KMS는 권한 부여를 위해 IAM과 완전히 통합된다.
암호화한 데이터에 관한 액세스를 쉽게 제어할 수 있는 방법을 제공한다.
CloudTrail을 통해 키를 사용하기 위해 호출한 모든 API를 감사할 수 있다.
대부분의 AWS 서비스에 KMS를 원할하게 사용할 수 있다 (EBS, S3, RDS, SSM 등).
암호 데이터는 절대 평문으로 저장하면 안 된다. 특히 코드에는 절대 남기면 안 된다!
KMS 키 암호화는 API 호출을 통해 사용할 수 있다. (SDK, CLI)
암호화된 데이터는 코드나 환경변수에 저장할 수 있다.

KMS Keys Types

KMS 키는 KMS 고객 마스터 키의 새로운 이름이다.
대칭(Symmetric)키 (AES-256 keys)
암호화 및 복호화에 사용하는 단일 암호화 키
KMS와 통합된 AWS 서비스에서는 대칭 CMK를 사용함
KMS 대칭 키를 생성하거나 사용하면 키 자체에는 절대 액세스할 수 없고, 키를 활용 또는 사용하기 위해서는 KMS API를 호출해야 한다.

비대칭(Asymmetric)키 (RSA & ECC key pairs)
퍼블릭 키(암호화에 사용)와 프라이빗 키(복호화에 사용) 쌍
암호화/복호화 또는 작업 할당(Sign)/검증 작업에 사용한다.
KMS에서 퍼블릭 키를 다운로드할 수 있지만, 프라이빗 키에는 액세스할 수 없다.
사용 사례: KMS API를 호출할 수 없는 사용자에 의해 AWS 외부에서 암호화, 이후 AWS 프라이빗 키로 해당 데이터를 복호화

KMS 키 유형
AWS 관리 키: aws/service-name, ex: aws/rds, aws/ebs - 무료
KMS에서 생성한 고객 관리형 키 (CMS): 매달 1달러의 비용
자체 키 구성 요소를 KMS에 imported (256-bit 대칭키여야 함): 매달 1달러의 비용
KMS API 호출에 대한 비용 추가 ($0.03 / 10,000 호출)

자동 키 로테이션
AWS 자동 관리형 KMS 키: 1년에 한 번씩 자동 교체
고객 관리형 KMS 키: (활성화 필요) 1년에 한 번씩 자동 교체
KMS에 가져온 자체 키: 별칭을 사용하여 수동으로만 교체 가능

Copying Snapshots across regions

KMS 범위는 region 이다.
그래서 다른 리전으로 복사하려면 몇개 단계를 거처야한다.

EBS 볼륨을 먼저 만들고 암호화된 볼륨에서 스냅샷을 복제하면 동일한 KMS 키로 암호화 된다. 그리고 다른 리전으로 복사하기위해서 다른 KMS 로 다시 암호화해야하는데 이건 AWS에서 자동으로 한다고 한다.
그래서 KMS 로 스냅샷을 복원하고 KMS 를 다른 리전으로 복원한다고 한다.

KMS Key Policies

KMS 키에 대한 Access 를 관리하기 위한 정책이다. Key에 KMS 없으면 아무도 접근 못한다.

기본 KMS 키 정책:
사용자 지정 키 정책을 제공하지 않을 시 생성됨
기본적으로 계정의 모든 사람이 키에 액세스하도록 허용하는 것
루트 사용자(전체 AWS 계정)에 대한 키의 완전한 액세스 권한

사용자 지정 KMS 키 정책
사용자 및 역할 정의: KMS 키에 액세스할 수 있는 사용자, 역할 지정
키를 관리할 수 있는 사용자 정의
KMS 키의 교차 계정 액세스에 유용함

KMS Multi-Region Keys

선택된 한 리전에 기본키를 갖는다.

다른 Region 에서 사용할수 있는 KMS Key set 이다. 서로 교차해서 사용 가능하다.

DynamoDB Global Tables and KMS Multi-Region Keys Client-Side encryption

Amazon DynamoDB Encryption Client를 사용하여 DynamoDB 테이블의 특정 속성을 클라이언트 측에서 암호화할 수 있다.
DynamoDB 전역 테이블과 결합하면, 클라이언트 측으로 암호화된 데이터가 다른 리전으로 복제된다.
다중 리전 키를 사용하고 DynamoDB 전역 테이블과 동일한 리전에 복제된 경우, 해당 리전의 클라이언트는 자신의 리전에서 다중 리전 키를 사용해 KMS에 로컬 API 호출을 보내 해당 속성을 복호화한다. 이는 지연 시간을 단축시킬 수 있다.
클라이언트 측 암호화를 사용하면 특정 필드를 보호하고, API 키 액세스 권한이 있는 클라이언트만 복호화할 수 있다.

Global Aurora and KMS Multi-Region Keys Client-Side Encryption

AWS Encryption SDK를 사용하여 Aurora 테이블에서 특정 속성을 클라이언트 측에서 암호화할 수 있다.
Aurora Global Tables과 결합하면 클라이언트 측으로 암호화된 데이터가 다른 리전으로 복제된다.
다중 리전 키를 사용하고 Global Aurora DB와 동일한 리전에 복제된 경우, 해당 리전의 클라이언트는 자신의 리전에서 다중 리전 키를 사용해 KMS에 로컬 API 호출을 보내 해당 속성을 복호화한다. 이는 지연 시간을 단축시킬 수 있다.
클라이언트 측 암호화를 사용하면 특정 필드를 보호하고, API 키 액세스 권한이 있는 클라이언트만 복호화할 수 있다. 또한 DB 관리자로부터도 특정 필드를 보호할 수 있다.

S3 Replication Encryption Considerations

암호화 되지 않은 객체와 SSE-S3로 암호화 된 객체가 기본으로 복제된다.

AMI SHaring Process Encrypted via KMS

소스 계정의 AMI는 소스 계정의 KMS 키로 암호화된다.
대상 AWS 계정에 해당하는 시작 권한을 추가하기 위해 이미지 속성을 수정해야 한다. - 특정 대상인 AWS 계정 ID 추가
AMI가 참조하는 스냅샷을 암호화하는 데 사용된 KMS 키를 대상 계정 또는 IAM 역할과 공유해야 한다.
대상 계정의 IAM 역할/사용자는 DescribeKey, ReEncrypt, CreateGrant, Decrypt 권한을 갖고 있어야 한다.
(선택 사항) AMI에서 EC2 인스턴스를 시작할 때, 대상 계정은 볼륨을 다시 암호화하기 위해 자체 계정의 새로운 KMS 키를 지정할 수 있다.

SSM Parameter Store

구성(configuration) 및 암호를 위한 보안 스토리지
선택적으로 KMS 서비스를 사용하여 원할한 암호화 가능
서버리스, 확장성, 내구성이 뛰어나며 쉬운 SDK 제공
구성 및 암호의 버전 추적
IAM을 통한 보안 기능
Amazon EventBridge를 사용한 알림 기능
CloudFormation과의 통합

Standard and advanced parameter tiers

SSM Parameter Store Hierarchy

특정 경로로만 엑세스 할수 있도록 한다.

Parameters Policies(for advanced parameters)

TTL (만료 기한): 비밀번호와 같은 민감한 데이터를 자동으로 무효화하여 지정된 시간이 지난 후에 정기적으로 업데이트하거나 삭제할 수 있도록 한다.

다중 정책 할당: 파라미터에 여러 정책을 할당할 수 있다. 이를 통해 조직 내의 다른 사용자 또는 그룹에 대해 서로 다른 권한과 접근 제어를 정의할 수 있다.

AWS Secrets Manager

암호를 저장하는 최신 서비스이다.
X일마다 강제로 암호를 교체하는 기능이 있음
교체할 암호 강제 생성 및 자동화 기능 (Lambda 함수 사용)
Amazon RDS와 통합 가능 (MySQL, PostgreSQL, Aurora)
KMS를 사용한 암호화

Multi-Region Secrets

여러 리전간의 암호 복제
Secret Manager 서비스가 기본 암호화와 동기화된 읽기 전용 복제본을 유지함
읽기 전용 복제본을 독립 실행형 암호로 승격할 수 있음
사용 사례: 다중 리전 애플리케이션, 재해 복구 전략, 다중 리전 데이터베이스 등

AWS Certificate Manager(ACM)

tls 인증서를 aws 에서 provisioning,관리 및 배포

Requesting Public Certificates

인증서에 포함할 도메인 이름 목록 작성
완전한 도메인 이름 (FQDN): corp.example.com
와일드카드 도메인: *.example.com
유효성 검증 방법 선택: DNS 유효성 검증 또는 이메일 유효성 검증
자동화를 위해서는 DNS 유효성 검증이 선호됨
이메일 유효성 검증은 WHOIS 데이터베이스의 연락처 이메일로 이메일을 발송
DNS 유효성 검증은 CNAME 레코드를 DNS 구성에 활용 (예: Route 53)
검증을 마치기 까지 몇 시간이 걸릴 수 있음
퍼블릭 인증서는 자동 갱신됨
ACM은 ACM에서 생성한 인증서를 만료 60일 전에 자동으로 갱신

Importing Public Certificates

ACM 외부에서 인증서를 생성한 후 가져올 수 있는 옵션
자동 갱신이 불가능하므로 만료 전에 새로운 인증서를 가져와야 함
ACM은 만료 45일 전부터 매일 만료 이벤트를 전송
며칠 전부터 알려줄지는 설정 가능
이벤트는 EventBridge에 표시됨
AWS Config에는 acm-certificate-expiration-check라는 관리되는 규칙이 있는데, 만료 예정인 인증서를 확인할 수 있음 (configurable number of days)

Integration with ALB

API Gateway - Endpoint Types

엣지 최적화 (Edge-Optimized) - 기본값: 글로벌 클라이언트를 위한 유형
CloudFront 엣지 로케이션으로 요청을 라우팅 (지연 시간 줄이는 방법)
하나의 리전에만 있는 API Gateway로 보내는 경우
리전(Regional):
클라이언트가 API Gateway와 같은 리전에 있는 경우
CloudFront는 사용할 수 없지만 자체 CloudFront 배포를 생성하여 캐싱 및 배포 전략 제어
프라이빗:
인터페이스 VPC 엔드포인트 (ENI)를 통해 VPC 내부에만 액세스 가능
액세스를 정의하는 리소스 정책 필요

Integration with API Gateway

ACM을 API Gateway와 통합하기 위해서는 API Gateway에 사용자 지정 도메인 이름(Custom Domain Name)이라는 리소스 생성
엣지 최적화 (기본값): 글로벌 클라이언트를 위한 유형
TLS 인증서가 CloudFront 배포에 연결되기 때문에 TLS 인증서와 CloudFront는 반드시 같은 리전에 생성되어야 한다.
위의 예시에서는 us-east-1
이후 CNAME이나 별칭(A-Alias) 레코드를 설정하여 사용자의 DNS를 가리키도록 설정한다.
리전:
TLS 인증서를 API Gateway에 가져올 때에는 같은 리전에 있어야 한다.
이후 CNAME이나 별칭(A-Alias) 레코드를 설정하여 사용자의 DNS를 가리키도록 설정한다.

AWS WAF - Web Application Firewall

웹 취약점 공격으로 부터 Application 보호 7 계층 보호.

웹 액세스 제어 목록 (Web Access Control List, Web ACL)은 다음과 같은 규칙들로 정의된다.
IP Set: 최대 10,000개의 IP 주소 - 더 많은 IP 주소를 위해서는 여러개의 규칙 사용
HTTP 헤더, HTTP 본문 또는 URI 문자열: 일반적인 공격인 SQL 인젝션(SQL injection)과 Cross-Site Scripting (XSS)로부터 보호하기 위해 HTTP 헤더, HTTP 본문 또는 URI 문자열을 기준으로 필터링하는 기능을 제공
용량 제약
지역 일치(geo-match): 특정 국가에서의 액세스 차단
속도 기반 규칙 (Rate-based rules): DDoS 공격으로부터 보호하기 위한 기능을 제공한다. 이를 통해 초당 요청 횟수 등의 제한을 설정하여 공격을 탐지하고 차단할 수 있습니다.
웹 ACL은 일반적으로 리전별로 적용되는데 CloudFront의 경우에는 전역적으로 적용된다.
규칙 그룹(Rule Group)은 재사용 가능한 규칙 세트로서 Web ACL에 추가할 수 있는 기능을 제공

WAF - Fixed IP While using WAF with a Load Balancer

WAF는 네트워크 로드 밸런서(Network Load Balancer, Layer 4)를 지원하지 않음
따라서 WAF를 제공하려면 애플리케이션 로드 밸런서가 있어야 함
하지만 애플리케이션 로드밸런서는 고정 IP가 없음
이 문제는 AWS Global Accelerator로 고정 IP를 할당받은 다음 ALB에서 AWS를 활성화하면 됨

AWS Shield:protect from DDos attack

디도스 공격으로 부터 스스로를 보호 하기 위한 서비스

DDos: Distributed Denial of Service, 분산 서비스 거부 공격 - 인프라에 동시에 엄청난 양의 요청이 세계 곳곳의 여러 컴퓨터에서 유입되는 공격, 인프라에 과부하를 일으켜 사용자들에게 서비스를 제공할 수 없게 만드는 것이 목적
AWS Shield Standard
모든 AWS 고객에게 자동으로 활성화되어있는 무료 서비스
SYN/UDP Floods, 반사 공격 및 기타 3/4계층 공격과 같은 공격으로부터 보호 제공
AWS Shield Advanced
DDoS 완화 서비스 ($3,000/month/organization)
Amazon EC2, Elastic Load Balancing (ELB), Amazon CloudFront, AWS Global Accelerator, Route 53을 더 정교한 공격으로부터 보호
AWS DDos 대응팀 (DDos response team, DRP) 항시 대기
DDoS로 인한 사용량 급증 시 요금 상승 방지
Shield Advanced는 자동 애플리케이션 계층 DDoS 완화를 제공하여 자동으로 AWS WAF 규칙을 생성, 평가 및 배포하여 7계층 공격을 완화함

AWS Firewall Manager

모든 계정의 방화벽 규정을 관리하는 서비스

보안 정책: 공통 보안 규칙의 집합
WAF 규칙: Application Load Balancer, API Gateways, CloudFront
AWS Shield Advanced: ALB, CLB, NLB, Elastic IP, CloudFront
EC2, Application Load Balancer 및 VPC의 ENI 리소스를 위한 보안 그룹
AWS Network Firewall (VPC 수준)
Amazon Route 53 Resolver DNS Firewall
정책은 리전 수준에서 생성
AWS Firewall Manager에서 정의한 규칙은 새로운 리소스가 생성될 때 자동으로 적용된다. 이를 통해 규정 준수를 위한 모든 계정 및 미래의 계정에서 일관된 보안 규칙을 유지할 수 있다.

WAF vs Firewall Manager vs Shield

WAF, Shield, Firewall Manager는 모두 포괄적인 계정 보호를 위한 서비스이다.

WAF에서는 웹 ACL 규칙을 정의
리소스에 대한 세분화된 보호를 위해 WAF 단독으로 사용하는 것이 올바른 선택
여러 계정에서 WAF를 사용하고, WAF 구성을 가속하고, 새로운 리소스의 보호를 자동화하려면 Firewall Manager로 WAF 규칙 관리
Firewall Manager는 이러한 규칙들을 모든 계정과 모든 리소스에 자동으로 적용해주기 때문
Shield Advanced는 AWS WAF 기능 외에도 더 많은 기능을 제공 - Shield Response Team (SRT)로부터 전용 지원 및 고급 보고서 제공, WAF 규칙 자동 생성 등
디도스 공격을 자주 받는다면 Shield Advanced를 사용하는 것이 좋음
Firewall Manager는 모든 계정에 Shield Advanced를 배포하는데 도움

profile
할수있다가 아닌 해야한다!!

0개의 댓글