Chapter 21

AWS Config - 보안 규정 준수 자동 감사

학습 목표

  • AWS Config의 역할과 필요성을 이해한다
  • AWS Config를 활성화하여 리소스 구성 변경 기록을 시작한다
  • 관리형 규칙(restricted-ssh, s3-encryption)을 추가하여 보안 규정 준수를 자동 평가한다
  • Config 대시보드에서 규정 준수 현황과 리소스 구성 변경 타임라인을 확인한다

왜 AWS Config가 필요한가?

지금까지 보안 그룹 최적화(Ch07), S3 암호화(Ch10), CloudTrail 로깅(Ch12), GuardDuty 위협 탐지(Ch13), CloudWatch 알림(Ch20) 등 다양한 보안 조치를 적용했습니다. 그런데 이 설정들이 지금도 제대로 유지되고 있는지 어떻게 확인할 수 있을까요?

예를 들어, 누군가 실수로 보안 그룹에 SSH 0.0.0.0/0을 다시 추가하거나, S3 버킷의 암호화를 해제하면 어떻게 될까요? AWS Config는 이런 상황을 자동으로 감지하고 "비준수(Non-compliant)"로 표시해줍니다.

비유로 이해하기: 건물의 자동 안전 점검 시스템

AWS Config는 건물의 자동 안전 점검 시스템과 같습니다.

이 시스템은 매일 자동으로 소화기를 점검하고, 비상구가 열려있는지 확인하고, 전기 안전 기준을 체크합니다. 규정 위반이 발견되면 즉시 알림을 보냅니다. 예: "3층 비상구가 잠겨있습니다!"

CloudTrail이 "누가 비상구를 잠갔는가?"(행동 기록)를 담당한다면, Config는 "현재 비상구가 잠겨있는가?"(상태 감사)를 담당합니다.

ShopEasy 시나리오

"보안 그룹에 SSH가 0.0.0.0/0으로 열려있으면? S3 버킷이 암호화 없이 사용되면? Config 규칙이 자동으로 탐지하여 '비준수(Non-compliant)'로 표시합니다."

AWS Config가 하는 일:

  • 리소스 구성 변경 이력 기록 - AWS 리소스의 구성(Configuration) 변경을 모두 기록합니다
  • 규칙 기반 자동 평가 - 규칙(Rules)에 따라 현재 구성이 규정에 맞는지 자동 평가합니다
  • 비준수 리소스 시각화 - 비준수 리소스를 대시보드에서 한눈에 확인할 수 있습니다
CloudTrail vs Config 차이점
구분CloudTrail (Ch12)Config (이번 챕터)
질문"누가 언제 무엇을 했는가?""현재 상태가 규정에 맞는가?"
기록 대상API 호출 (행동)리소스 구성 (상태)
예시"admin이 보안 그룹을 수정했다""보안 그룹에 SSH 0.0.0.0/0이 열려있다"
용도사후 추적, 감사 로그규정 준수 확인, 구성 감사

Config 동작 방식

AWS Config 동작 흐름
AWS 리소스
EC2, S3, 보안 그룹 등
구성 변경 발생
AWS Config
구성 변경 기록
규칙과 비교 평가
평가 결과
준수(COMPLIANT)
비준수(NON_COMPLIANT)
핵심 용어 정리

구성 항목(Configuration Item): 리소스의 특정 시점 구성 정보입니다. 보안 그룹의 인바운드 규칙, S3 버킷의 암호화 설정 등이 포함됩니다.

구성 레코더(Configuration Recorder): 리소스 구성 변경을 감지하고 기록하는 역할을 합니다.

Config 규칙(Config Rules): 리소스 구성이 규정에 맞는지 평가하는 규칙입니다. AWS 관리형 규칙과 사용자 정의 규칙이 있습니다.

준수(COMPLIANT) / 비준수(NON_COMPLIANT): 규칙 평가 결과입니다. 비준수는 보안 규정을 위반하는 상태를 의미합니다.

이전 챕터와의 연결

Config 규칙은 이전 챕터에서 적용한 보안 설정이 제대로 유지되는지 자동으로 검증합니다:

  • Ch07 보안 그룹 최적화restricted-ssh 규칙이 SSH 0.0.0.0/0 여부를 자동 점검
  • Ch10 S3 암호화s3-bucket-server-side-encryption-enabled 규칙이 암호화 설정을 자동 점검

이전 챕터에서 보안 설정을 올바르게 적용했다면, Config 규칙에 의해 "준수(COMPLIANT)" 상태로 표시됩니다.

실습: AWS Config로 보안 규정 준수 자동 감사

실습: ShopEasy 리소스의 보안 규정 준수 자동 감사 설정
비용 안내

AWS Config는 기록된 구성 항목(Configuration Item)당 과금됩니다. 실습 범위에서는 소량이므로 비용이 매우 적지만(보통 $1 미만), 실습 후 반드시 중지하세요! Ch23 리소스 정리 시 Config 레코더를 중지합니다.

  1. Step 1: AWS Config 활성화

    AWS Config를 활성화하여 리소스 구성 변경 기록을 시작합니다. Config는 활성화 시 리전 내 모든 지원 리소스의 구성을 기록하기 시작합니다.

    설정 내용

    항목
    기록 범위이 리전의 모든 리소스
    S3 버킷새 버킷 생성 (config-bucket-ACCOUNT_ID) 또는 기존 버킷
    IAM 역할AWS Config 서비스 역할 (자동 생성)
    리전ap-northeast-2 (서울)

    수행할 작업

    • AWS 콘솔에서 AWS Config 서비스로 이동
    • "시작하기" 또는 "설정" 클릭
    • 기록 범위, S3 버킷, IAM 역할을 설정하고 활성화
    Config는 모든 구성 변경을 추적합니다

    Config는 리소스의 모든 구성 변경을 추적합니다. 예를 들어 보안 그룹의 인바운드 규칙을 변경하면, 변경 전후의 구성이 모두 기록됩니다. 이를 통해 "언제, 어떤 구성이 변경되었는지" 완전한 이력을 확인할 수 있습니다.

    AWS 콘솔 → 검색창에 Config 입력 → AWS Config 선택

    처음 접속하면 "시작하기" 또는 "Get Started" 페이지가 표시됩니다.

    1. Settings(설정) 페이지에서:
      • Recording strategy: All resource types with customizations 또는 기본값 유지
      • Data governance: 기본값 유지
    2. Delivery method(전달 방법)에서:
      • S3 bucket: Create a bucket 선택 (자동으로 이름 지정)
    3. IAM Role: Create AWS Config service-linked role 선택
    4. Confirm(확인)을 클릭하여 활성화

    주의: 리전이 ap-northeast-2 (서울)인지 확인하세요.

  2. Step 2: Config 규칙 추가 - SSH 제한 확인 (restricted-ssh)

    보안 그룹에 SSH(포트 22)가 0.0.0.0/0 또는 ::/0으로 열려있는지 자동으로 점검하는 규칙을 추가합니다.

    규칙 설정

    항목
    규칙 이름restricted-ssh (기본값 유지)
    규칙 유형AWS 관리형 규칙
    소스 식별자INCOMING_SSH_DISABLED
    트리거구성 변경 시

    이 규칙이 하는 일

    보안 그룹의 인바운드 규칙에 SSH(포트 22)가 0.0.0.0/0 또는 ::/0으로 열려있으면 "비준수(NON_COMPLIANT)"로 표시합니다.

    Ch07/Ch17에서 SSH를 닫았으므로

    Ch07에서 SSH 소스를 내 IP로 제한하고, Ch17에서 SSH 포트 자체를 제거했습니다. 따라서 이 규칙의 평가 결과는 "준수(COMPLIANT)" 상태여야 합니다. 만약 비준수가 나온다면 보안 그룹 설정을 다시 확인해야 합니다.

    가장 많이 사용되는 Config 규칙

    restricted-ssh는 AWS에서 가장 많이 사용되는 Config 규칙 중 하나입니다. CIS AWS Foundations Benchmark에서도 권장하는 필수 보안 점검 항목입니다.

    Config 콘솔 → 왼쪽 메뉴에서 Rules(규칙) 클릭 → Add rule(규칙 추가)

    1. 규칙 유형: AWS managed rule(AWS 관리형 규칙) 선택
    2. 검색창에 restricted-ssh 입력
    3. restricted-ssh 규칙을 선택
    4. 기본 설정을 유지하고 Next(다음) 클릭
    5. Add rule(규칙 추가)를 클릭하여 완료

    규칙이 추가되면 Config가 자동으로 보안 그룹을 평가합니다. 결과가 나오기까지 수 분이 소요될 수 있습니다.

  3. Step 3: Config 규칙 추가 - S3 암호화 확인

    S3 버킷에 서버 측 암호화(Server-Side Encryption)가 설정되어 있는지 자동으로 점검하는 규칙을 추가합니다.

    규칙 설정

    항목
    규칙 이름s3-bucket-server-side-encryption-enabled (기본값)
    규칙 유형AWS 관리형 규칙
    소스 식별자S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED

    이 규칙이 하는 일

    S3 버킷에 서버 측 암호화가 설정되어 있지 않으면 "비준수(NON_COMPLIANT)"로 표시합니다.

    Ch10에서 S3 암호화를 설정했으므로

    Ch10에서 S3 버킷에 KMS 암호화를 설정했습니다. 따라서 ShopEasy S3 버킷들은 "준수(COMPLIANT)" 상태여야 합니다. Config가 생성한 config-bucket의 경우 기본 암호화(SSE-S3)가 자동 적용되므로 역시 준수 상태입니다.

    만약 비준수 S3 버킷이 있다면, 해당 버킷에 암호화를 설정해야 합니다.

    Config 콘솔 → Rules(규칙)Add rule(규칙 추가)

    1. 규칙 유형: AWS managed rule(AWS 관리형 규칙) 선택
    2. 검색창에 s3-bucket-server-side-encryption 입력
    3. s3-bucket-server-side-encryption-enabled 규칙을 선택
    4. 기본 설정을 유지하고 Next(다음) 클릭
    5. Add rule(규칙 추가)를 클릭하여 완료
  4. Step 4: Config 대시보드에서 규정 준수 현황 확인

    Config 대시보드에서 전체 규정 준수 현황을 확인하고, 특정 리소스의 구성 변경 타임라인을 조회합니다.

    대시보드에서 확인할 내용

    • 전체 규정 준수 상태: 준수/비준수 리소스 수
    • 규칙별 상태:
      • restricted-ssh: COMPLIANT (SSH가 제한되어 있으므로)
      • s3-bucket-server-side-encryption-enabled: COMPLIANT/NON_COMPLIANT
    • 리소스별 타임라인: 특정 리소스의 구성 변경 이력

    리소스 구성 타임라인 확인

    특정 리소스(예: ShopEasy-EC2-SG 보안 그룹)의 구성 변경 타임라인을 확인합니다. 언제 SSH 규칙이 변경되었는지 등의 변경 이력을 볼 수 있습니다.

    실무 모범 사례: 적합성 팩(Conformance Pack)

    실무에서는 CIS Benchmark 적합성 팩(Conformance Pack)을 적용하여 수십 개의 보안 규칙을 한 번에 설정합니다. Config는 컴플라이언스 감사의 핵심 도구입니다.

    적합성 팩에는 다음과 같은 보안 규칙들이 포함됩니다:

    • SSH/RDP 제한, MFA 활성화 여부
    • S3 퍼블릭 접근 차단, 암호화 확인
    • CloudTrail 활성화 여부, 로그 암호화
    • IAM 비밀번호 정책, 루트 계정 사용 감지

    대시보드 확인:

    Config 콘솔 → 왼쪽 메뉴에서 Dashboard(대시보드)를 클릭합니다.

    대시보드에서 규칙별 준수/비준수 현황을 확인합니다.

    리소스 타임라인 확인:

    1. Config 콘솔 → 왼쪽 메뉴에서 Resources(리소스) 클릭
    2. Resource type에서 AWS::EC2::SecurityGroup을 선택하여 검색
    3. ShopEasy-EC2-SG 보안 그룹을 클릭
    4. Resource Timeline(리소스 타임라인)에서 구성 변경 이력을 확인합니다
    5. 각 변경 시점을 클릭하면 변경 전후의 구성 차이(Configuration diff)를 볼 수 있습니다

확인 사항

  • AWS Config가 활성화되고 리소스 기록이 시작되었다
  • restricted-ssh 규칙이 추가되었다
  • s3-bucket-server-side-encryption-enabled 규칙이 추가되었다
  • Config 대시보드에서 규정 준수 현황을 확인했다
  • 특정 리소스의 구성 변경 타임라인을 확인했다
이번 챕터에서 달성한 것
  • AWS Config를 활성화하여 리소스 구성 변경 자동 기록 설정
  • restricted-ssh 규칙으로 SSH 보안 규정 준수 자동 감사
  • s3-bucket-server-side-encryption-enabled 규칙으로 S3 암호화 자동 감사
  • 대시보드에서 전체 규정 준수 현황을 한눈에 파악
  • 리소스 구성 변경 타임라인을 통해 변경 이력 추적 능력 확보
  • 이전 챕터(Ch07, Ch10)에서 적용한 보안 설정이 Config 규칙에 의해 "준수"로 검증됨을 확인
다음 단계 미리보기

Config로 리소스의 보안 규정 준수를 자동 감사하게 되었습니다. 다음 챕터에서는 CloudFront + WAF를 설정하여 웹 애플리케이션을 DDoS 공격과 악성 요청으로부터 보호합니다. 네트워크 보안의 최전선 방어를 구축합니다.