[AWS] 보안 및 규정 준수 (2)

dereck·2025년 1월 3일

AWS CCP

목록 보기
17/29
post-thumbnail

침투 테스트

침투 테스트는 자체 인프라를 공격해 보안을 테스트 하는 것이다.

AWS 고객은 사전 승인 없이 8개 서비스의 자체 인프라에 관해 보안 평가 및 침투 테스트를 실행할 수 있다.

  1. EC2 인스턴스, NAT 게이트웨이, ELB
  2. RDS
  3. CloudFront
  4. Aurora
  5. API 게이트웨이
  6. Lambda, Lambda 엣지 함수
  7. Lightsail 리소스
  8. Elastic Beanstalk 환경

8개에 대한 사용 권한이 필요 없다는 것이 중요하다.

금지될 수 있는 다른 유형의 작업

예를 들어, Route 53 호스팅 영역을 통해 DNS zone walking을 실행할 수 없고, 시스템에서 도스나 디도스, 시뮬레이션 된 도스나 디도스를 실행할 수 없다.

도스로 자체 인프라를 공격할 수 없고, 포트 플러딩, 프로토콜 플러딩을 취소할 수 없으며 변형된 공격인 요청 플러딩을 취소할 수 없다.

다른 모든 이벤트에 관련해선 AWS의 보안 팀에 연락해 승인 받아야 한다.

일부는 사용 권한이 있지만 디도스 공격이나 DNS zone walking, Port floodingAWS의 인프라를 공격하는 것으로 간주하기 때문에 사용 권한이 없다.


Data at rest vs Data in transit

AWS에서 발생하는 암호화는 저장 중 암호화와 전송 중 암호화가 있다.

Data at rest

Data at rest는 데이터가 물리적 디바이스에 저장 또는 아카이브 되어 있다는 뜻이다. 즉, 하드 디스크나 하드 드라이브. RDS, S3 버킷, Glacier Deep Archive 모두 해당된다. 움직이지 않으므로 At rest 라고 표현된다.

어딘가에 가만히 기록되어 있고, 암호화된 저장 데이터가 있을 만한 곳으로는 EFS 네트워크 드라이브 또는 S3가 있다.

Data in transit

Data in transit은 장소를 이동하는 동안에 암호화되어 있다는 뜻으로 움직이는 동안 암호화되는 것이다.

예를 들면, 데이터를 자체 데이터 센터로부터 AWS로 옮길 때마다 또는 EC2 인스턴스와 DynamoDB 테이블 간에 데이터가 이동할 때가 해당된다. 데이터를 기록하거나 반환하는 중이기 때문이다. 즉, in transit 은 데이터가 네트워크 상에서 전송된다는 뜻이다.

이상적으로는 데이터가 상시 암호화되고 보호받는 상태를 유지해야 하기 때문에 둘 중 어느 상태이든 간에 암호화하고자 하는 것이다.

현 단계에선 원리를 이해하기 보단 암호화 키를 이용한다는 것을 알아두자. 데이터를 암호화 한다는 것은 암호화 키를 가지고 있지 않은 사람이 데이터에 접근할 수는 있지만 복호화할 순 없다는 뜻이다.

데이터 암호화 서비스

KMS

AWS의 중심이 되는 암호화 서비스는 KMS라고 부른다. KMS는 Key Management Service의 약자로 암호화와 서비스가 연관 지어진다면 대부분의 경우 KMS일 것이다.

KMS를 이용하면 직접 암호화 키에 접근하지 못하고, 키는 AWS에서 관리해 준다. 사용자는 액세스 키에 대한 접근 권한을 누구에게 줄 것인지 정의하면 된다.

암호화 여부는 선택 가능한 경우가 있다.

  • EBS 볼륨: KMS로 암호화 하기
  • S3 버킷: 객체를 서버 측 암호화할 수도 있다.
  • Redshift/RDS 데이터베이스: 데이터베이스 암호화
  • EFS 드라이브: 파일을 암호화할 수 있다

그 외 어떤 서비스들은 무조건 암호화가 이뤄지도록 되어 있다.

  • CloudTrail Logs
  • S3 Glacier
  • Storage Gateway

CloudHSM

CloudHSM을 이용하면 AWS는 단순히 암호화에 이용되는 하드웨어만 제공하는 대신 암호화 키를 직접 관리할 수 있다. 전용으로 제공받는 하드웨어는 HSM(Hardware Security Module)이라고 한다. AWS의 하드웨어 시설에서 사용자에게 제공하며 암호화 키는 사용자가 직접 관리하고, AWS는 관여하지 않는다.

누군가 AWS의 데이터 센터에 침입하여 암호화 키를 알아내는 일이 발생하지 않도록 HSM 장치는 대비책이 마련되어 있다. 누군가 함부로 액세스하려고 하면 계정이 잠기고, 물리적 및 논리적 변조 감지와 대응 메커니즘을 갖추고 있어 하드웨어의 키 삭제가 트리거된다. 또한 FIPS 140-2 3단계를 준수한다.

CloudHSM 원리

AWS에서 하드웨어를 관리하지만 키를 관리하는 역할은 사용자가 CloudHSM 서비스로 CloudHSM 클라이언트를 통해서 직접 수행하게 된다. 또한 당연히 클라이언트들과 CloudHSM 간의 연결은 암호화되어 있어 암호화 키를 안전하게 관리할 수 있다.

KMS 키의 종류

  • Customer Managed Key
    • 사용자 측에서 생성, 관리, 사용하는 키
    • 이 종류의 키는 개별적으로 활성화 및 비활성화하는 것이 가능하다
      • 키 회전 방침을 정의하는 것도 가능하다
    • 기존 키도 보존된다.
  • AWS Managed Key
    • 생성, 관리, 사용을 AWS가 고객 대신 한다.
    • 키 이름은 aws/s3 , aws/ebs 등으로 앞에 aws/ 가 붙으면 AWS Managed Key이다.
  • AWS Owned Key
    • 이 종류의 키는 서비스에서 소유, 관리하며 여러 개의 사용자에 사용한다.
    • AWS에서는 이 키들을 사용자의 특정 리소스를 보호하는데 사용하지만 고객이 열람할 권한은 없다.
  • CloudHSM Keys(사용자 정의 Keystore)
    • 키가 생성되는 곳이 고객의 개인 CloudHSM 하드웨어 기기이다.
    • 암호화 과정은 모두 CloudHSM 클러스터 내부에서 진행된다.

AWS Certificate Manager

Certificate Manager(또는 ACM)은 SSL이나 TLS 인증서를 쉽게 관리 프로비저닝 및 배포할 수 있는 서비스이다. 인증서는 HTTP 엔드포인트를 제공하며 웹사이트에 전송 중 암호화를 지원한다.

  1. 애플리케이션 로드 밸런서는 HTTP를 통해 백엔드로 EC2 인스턴스와 오토 스케일링 그룹에 연결된다.
  2. 이때 애플리케이션 로드 밸런서에 HTTP를 표시하여 최종 사용자가 볼 수 있도록 하기 위해 ACM을 이용한다.
  3. ACM이 도메인에 연결되고 나면 TLS 인증서에 대한 프로비저닝과 유지 보수가 가능하다
  4. 인증서가 애플리케이션 로드 밸런서에 로드되고 나면 자동으로 로드 밸런서가 클라이언트의 엔드포인트로 HTTP를 제공하여 공용 웹을 통한 전송 중 암호화를 지원한다.

즉, ACM은 공용 및 사설 TLS 인증서를 모두 지원하며 공용 TLS 인증서는 무료로 이용할 수 있다. 또한 자동 TLS 인증서 갱신이라는 기능이 있다.

통합을 지원하기 때문에 TLS 인증서를 다른 서비스에 로드할 수도 있다.

  • Elastic Load Balancer
  • CloudFront Distribution
  • API Gateway 상의 API에 로드

AWS Secrets Manager

Secrets Manager는 암호를 저장하거나 암호를 강제로 교체하도록 해준다.

Lambda를 이용해서도 암호를 자동 생성할 수 있고, RDS와도 통합이 된다. Secrets Manager를 이용하면 RDS 비밀번호를 자동으로 생성할 수 있는 것이다.

암호는 KMS를 사용해서 자동으로 암호화된다.

시험에서는 RDS에서 관리되고 교체되는 암호라는 내용을 봤을 때 Secrets Manager를 떠올리면 된다.


AWS Artifact

Artifact는 규정 준수 보고서AWS 계약에 대해 온디맨드 액세스를 제공하는 포털이다. 서비스라고 할 수는 없고, 규정 준수 문서 다운로드의 한 가지 방법이다.

Artifact Reports는 다운로드가 가능하며 외부감사인이 보안이나 규정 준수 문서를 볼 수 있도록 지원한다.

  • AWS ISO 인증
  • 지불 카드 보안 표준(PCI) 보고서
  • 시스템 및 조직 관리(SOC) 보고서

Artifact Agreements는 AWS 계약 상태를 검토, 승인 및 추적하는데 여기에는 BAA 계약과 HIPPA(건강보험 이전과 책임에 관한 법)가 포함되며, 이 기능을 개인 계정과 단체에 대해 지원하고 있다. 따라서 이와 같은 보고서는 사내 내부 감사에 사용되거나 AWS를 사용하여 규정 준수를 증명할 때 사용된다.


Amazon GuardDuty

GuardDuty는 지능형 위협 검색을 통해 AWS 계정을 보호할 수 있도록 도와준다.

머신러닝 알고리즘을 사용하고 이상 징후 탐지를 수행하며 써드파티 데이터를 사용하여 위협을 찾아낸다.

소프트웨어를 설치할 필요 없이 클릭 한 번으로 활성화할 수 있고, 30일 평가판을 사용할 수 있다.

GuardDuty는 많은 입력 데이터를 살펴본다.

  • CloudTrail 이벤트 로그 - 비정상적인 API 호출이나 무단 배포를 찾는다.
    • CloudTrail Management Events - VPC 생성 이벤트 등
    • CloudTrail S3 Data Events - get object, list objects, delete object 등
  • VPC Flow Logs - 비정상적인 인터넷 트래픽을 살펴본다.
  • DNS Logs
  • Optional Features - EKS 감사 로그, RDS & Aurora, EBS, Lambda, S3 Data Events 등을 분석할 수 있게 도와준다.

뭔가 발견했을 경우, 자동으로 알림을 받도록 EventBridge 규칙을 설정할 수 있다. 규칙은 EventBridge가 타겟팅할 수 있는 건 뭐든 타겟팅할 수 있다.

GuardDuty는 전용 검색 기능을 통해 암호 화폐 공격으로부터 사용자를 보호할 수 있는 매우 훌륭한 도구이다. 모든 입력 데이터를 분석하여 암호 화폐 공격이 있는지 알아낸다.

Amazon GuardDuty 정리

  • VPC Flow Logs, CloudTrail Logs, DNS Logs가 있고, GuardDuty에 포함된다.
  • 선택적 기능을 활성화할 수도 있다.
  • 이러한 것들에서 발견이 감지되면 Amazon EventBridge에서 이벤트가 생성된다.
  • 규칙 덕분에 EventBridge에서 람다 함수를 사용하여 자동화를 트리거하거나 알림을 보낼 수 있다.
  • 예시에선 SNS를 사용했다.

References

0개의 댓글