[AWS][Security][강의노트] 보안 관련 서비스들

컴퓨터공학/분산시스템

2022. 02. 23.

암호화 메커니즘

In-flight

온라인 결제 정보를 전송할 때, 전송 구간에서는 그 정보가 암호화되고 서버만 까볼 수 있어야 한다. → man in the middle attack 방지

  • SSL + HTTPS

At-rest

서버가 다른 이에게 공격받았을 때 저장되어 있던 정보가 노출되어도 안전해야하겠다.

따라서 데이터가 서버에 도착하면 특정 key를 사용해서 암호처리된다.

  • Key Management Service (KMS)
  • Service Managed Key
  • Custom Key

Client side encryption

서버는 처음부터 암호화된 자료를 받아서 그 내용을 알아볼 수 없다.

  • Envelope Encryption

Key 종류

KMS의 Key를 Customer Master Key 라고 부른다.

대칭 키 (AES-256)

암호화와 복호화를 둘 다 진행할 때 요구되는 키.

AWS 서비스들은 대칭 고객 마스터 키를 사용한다.

당신에게 키 자체는 절대 노출되지 않는다.

비대칭 키 (RSA & ECC 키 쌍)

퍼블릭 키로 클라이언트 암호화, 사설 키로 서버에서 복호화.

암호화 뿐만 아니라 싸인과 검증에 사용함.

KMS 서비스를 쓰지 않고, AWS 밖에서 암호화를 진행하기 위해 비대칭 키를 사용할 수 있다.

암호화 키를 관리하자

Key Management Service (KMS) Regional Service

암호화 키를 관리해주는 리젼 서비스.

다양한 서비스와 매끄럽게 통합된다.

  • S3 at rest 암호화
  • EBS 볼륨 암호화
  • Redshift at rest 암호화
  • RDS at rest 암호화
  • SSM 파라미터 저장소 암호화

KMS 장점

at rest 암호화를 위해 사용된 Key 자체를 유저에게 노출하지 않는다는 점이다.

서비스 요약

  • 키 관리
  • 키 관련 폴리시 관리
  • 키 관련 감사
  • 데이터 암호화

고객 마스터 키(CMK) 세 종류

  1. AWS가 관리하는 기본 CMK
  2. 유저가 생성하는 CMK: 하나당 1달러 per month
  3. 유저가 가져온 대칭키 CMK: 1달러 per month

비용

  • key 자체에 대한 비용
  • KMS API 호출 수에 대한 비용 (1만회에 0.03 달러)

KMS API 호출을 통한 암호화 유의점

  • 4KB 이상 암호화 불가능

→ Envelop 암호화를 고려하세요.

보안

  • IAM로 User의 API 접근을 허용한다.
  • Key Policy로 User의 Key 접근을 허용한다.

Key Policy

버킷 폴리시처럼 특정 프린시팔의 키 접근을 제어한다.

기본 설정**:** 루트 유저 (Aws Account)는 키에 접근 가능.

Key 마이그레이션?

Nope

EBS 볼륨을 암호화하고 다른 리전으로 옮길 때

  1. 암호화된 EBS의 스냅샷을 생성한다. 사용된 Key A이다.
  2. 스냅샷의 복사본을 다른 리젼에 만든다. 이 때 Key A는 이 Region에 없다. 대신 당신은 Key B를 선택하여 스냅샷 복사를 요청하게 된다.

EBS 볼륨을 암호화한 스냅샷을 다른 계정에 복사할 때

  1. 암호화된 EBS의 스냅샷을 생성한다. 사용된 Key A이다.
  2. Key A의 Key Policy를 수정한다: 타 어카운트가 이 키를 쓸 수 있도록 하자.
  3. 스냅샷을 상대 계정에 공유한다.
  4. 상대 계정은 Key A를 쓸 수 있으니, 해당 스냅샷으로 EBS 볼륨을 만들 수 있다.

자동화된 Key 로테이션

CMK 중에서 AWS가 관리하지 않는 고객 키를 대상으로

1년마다 자동적인 키 로테이션을 일으킬 수 있다.

Old Key는 유지되어 복호화에 쓰일 수 있다. New Key는 Old Key의 CMK ID를 쓴다.

로테이션 기간 1년이 맘에 안들면

너가 손수 새 키를 추가해서 바꿔서 쓰면 된다. 따라서 CMK ID 는 당연히 새롭다.

Key Alias 를 만들고 Old Key를 연결해 사용중인 상태에서, 새로운 New Key를 알리어스가 참조하도록 하면 사용성이 올라갈 것이다. (UpdateAlias API)


시크릿을 저장하자

SSM Parameter Store AWS System Manager > Application Management> Parameter Store

시크릿 값들을 관리하는 서비스. 시크릿 값들 자체를 KMS 키로 암호화 해둘 수 있다.

SSM 장점

서버리스 환경에서 플레인 텍스트 설정을 불러올 때 유용하다.

람다에서 간단한 SDK를 통해 가져온다.

GetParameters, GetParametersByPath

파라미터 버저닝이 된다.

파라미터 경로

폴더 구조와 비슷

/my-department/
  my-app/
    dev/
      db-url
      db-password
  other-app/
/other-department

유용한 메타 정보역할의 시크릿들도 있다.

/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager
/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2

티어

  • Standard: 무료
  • Advanced: 유료
    • Parameter Policy 사용 가능

파라미터 폴리시

파라미터에 TTL을 설정한다.

  1. Expiration 정책
  2. 이 날 파라미터를 파기하라.
  3. ExpirationNotification 정책
  4. 파라미터 만료일 전후 특정 날짜에 만료 임박(완료)에 대한 이벤트를 CloudWatch로 보내라.
  5. NoChangeNotification 정책
  6. 특정 기간 동안 파라미터 값 변경이 없으면 CloudWatch 이벤트로 알려달라.

시크릿을 RDS에서 꺼내쓰자

AWS Secrets Manager SSM Parameter Manager 대체 가능한 새로운 서비스

AWS Secrets Manager 차별점

  • 시크릿 값의 로테이션
  • RDS와의 연동성!!

하드웨어적 암호화 서비스

Managed Hardward Security Module (CloudHSM)

사용자가 키를 넘겨주면 하드웨어적 보안 모듈로 암호화를 진행해준다.

aws가 관리하는 키가 없음에 유의하자.

CloudHSM 차별점

  • 하드웨어 모듈
  • 누가 이 모듈을 침해하면 FIPS 140-2 Level 3 사양에 따라 그런 행위를 차단함.
  • 비대칭 키 등록 가능: SSL/TLS 이용 가능
    • KMS에선 유저가 비대칭 키를 임포트 할 수 없다는 점!
  • SSE-C 형태의 at-rest 암호화를 한다면 이 서비스를 고려해 보세요.
  • Free 티어 없다.

역할 분담

  • 클라이언트는 CloudHSM 소프트웨어를 통해 키를 CRUD 한다.
  • CloudHSM 소프트웨어는 클러스터를 구성한다. 유저와 키를 관리한다.
  • CloudHSM 하드웨어는 AWS가 관리하고 보호한다. 암호화를 수행한다.

고가용성

  • 클러스터링 + Multi-AZ

DDoS를 막자

AWS Shield

AWS Shield Standard

  • 기본적으로 켜져있는 방어 서비스
  • L3, L4 수준에서 벌어지는 디도스 어택을 방지함.

AWS Shield Advanced

  • 추가적인 보안 옵션
  • 디도스 발생시 그 현상을 억지시켜주는 기능 탑재

WAF 개요

L7에서 발생하는 공격을 차단한다.

웹 애플리케이션이므로 HTTP(S) 수준.

붙는 장소: 딱 세 군데

  • ALB
  • API Gateway
  • CloudFront

AWS Web Application Firewall (WAF)

WAF Web ACL

이러한 형식의 요청에 대해 허용/거부하시오.

  • SQL 인젝션 방지
  • XSS 방지
  • Block countries
  • Rate-based rules

WAF Firewall Manager

AWS 조직 단위로 WAF Rules들을 통합 관리한다.

DDoS 방어 아키텍처 예시

Shield와 WAF 덕분에 DDoS 따위를 L3, L4, L7 수준에서 차단 가능하다.


지능적인 위협 판단

Amazon GuardDuty

  • 인공지능을 활용한 위협 탐지
  • 위협 = AWS 계정에 행해지는 위험
  • 30일 무료 트라이얼
  • **CryptoCurrency 공격**을 막는데 활용된다.

GuardDuty가 참고하는 자료

  • CloudTrail의 계정 로그
  • VPC Flod Logs 내부 트래픽 로그
  • DNS Logs

알림

  • 위협 발견 후 CloudWatch Event에 알림 전달 → 람다 및 SNS에 재전달 가능

자동화된 보안 감사

Amazon Inspector

EC2 인스턴스에 대해서 자동화된 보안 감사를 수행한다.

Inspector 요약

  • 인스턴스 OS의 취약점에 대해 테스트 (agent)
  • 보안 모범 사례 준수 확인 (agent)
  • 의도되지 않은 네트워크 접근을 확인 (agentless)
  • 인스펙터 에이전트 설치되어야 함

Inspector Agent

  • 봤었던 에이전트들
  • ECS 에이전트, CloudWatch Logs 에이전트, Inspector 에이전트

민감 데이터 찾아내어 보호

Amazon Macie

S3에서 민감한 개인정보를 찾아서 알림을 보낸다

S3→ Macie → CloudWatch EventBridge


보안 모델: Shared Responsibility Model

AWS의 책임

AWS는 제공하는 서비스의 인프라를 지킨다.

고객의 책임

클라우드 서비스 내부에 대한 보안. 방화벽, 네트워크 설정, IAM, 보안 업데이트, 내용 암호화 적용

모두의 책임

보안 교육, 보안 설정 관리, 보안 패치 관리.

RDS 보안 모델

AWS

기저 EC2, OS, EBS, Database 관리

User

권한 있는 username password

IP, 포트, 시큐리티 그룹

inflight, atrest 암호화

S3 보안 모델

AWS

무한한 공간, 기본 암호화, 퍼블릭 접근의 보호

User

버킷 설정, 버킷 폴리시 설정, 퍼블릭 접근 보호의 설정, IAM 유저, IAM 롤