4. Prowler 점검 자동화 가이드

2025. 8. 11. 21:22·개발 실습

이 가이드는 AWS 클라우드 환경에서 Prowler를 사용해 보안 설정을 점검하고 취약점을 실시간으로 확인하는 방법을 설명합니다. K-ISMS, 개인정보보호법 등 국내 보안 기준을 만족하기 위해 설계된 자동화 점검 도구로, 설치부터 실행, 결과 확인까지 실습 중심으로 안내합니다. 비전공자도 쉽게 따라 할 수 있도록 명령어 예시와 함께 제공합니다.


1. Prowler 설치·실행

1.1 IAM 실행 역할 생성

Prowler가 AWS 계정 스캔에 필요한 최소 권한만 사용할 수 있도록 전용 역할을 만듭니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "config:Describe*",
        "iam:GetRole",
        "cloudtrail:LookupEvents",
        "organizations:DescribeOrganization",
        "sts:AssumeRole"
      ],
      "Resource": "*"
    }
  ]
}

# 1) 역할 생성
aws iam create-role `
  --role-name prowler-scan-role `
  --assume-role-policy-document file://trust-policy.json

# 2) 정책 부착
aws iam put-role-policy `
  --role-name prowler-scan-role `
  --policy-name prowler-exec-policy `
  --policy-document file://prowler-exec-policy.json

1.2 Prowler 설치 스크립트 (install_prowler.sh)

#!/usr/bin/env bash
yum install -y git python3-pip
git clone <https://github.com/toniblyx/prowler.git> /opt/prowler
pip3 install --upgrade awscli

1.3 스캔 실행 예시

  • 기본 스캔 (JSON 출력)
    sudo bash install_prowler.sh
    /opt/prowler/prowler -M json -r ap-northeast-2 > prowler-output.json
    
  • K-ISMS 기준 스캔 & CSV 출력
    /opt/prowler/prowler -M csv -r ap-northeast-2 -f k-isms > prowler-report.csv
    
  • 특정 체크만 실행
    /opt/prowler/prowler -M json -r ap-northeast-2 -c check11,check31 > subset-output.json
    

2. ISMS-P 기준 재매핑

Prowler 단계에서는 Purpose와 ActionPlan 필드를 비워두고, 후속 CloudCustodian 정책에서 실제 알림·자동조치를 구현합니다.

2.1 매핑 JSON 예시

{
  "Framework": "KISA-ISMS-P",
  "Version": "2023-korean",
  "Provider": "AWS",
  "Description": "한국인터넷진흥원(KISA) 제정 정보보호·개인정보보호 관리체계",
  "Requirements": [
    {
      "Id": "1.1.1",
      "Name": "경영진의 참여",
      "Description": "최고경영자는 … 의사결정 체계 수립·운영",
      "Checks": [],
      "Attributes": [
        {
          "Domain": "1. 관리체계 수립 및 운영",
          "Subdomain": "1.1 관리체계",
          "Section": "1.1.1 경영진의 참여",
          "AuditChecklist": [
            "문서화된 책임·역할 보유 여부?",
            "경영진 의사결정 절차 수립·이행 여부?"
          ],
          "AuditEvidence": [ /* …증빙 예시… */ ],
          "NonComplianceCases": [ /* …위반 사례… */ ]
        }
      ]
    }
    /* …다른 조항들… */
  ]
}

전체 매핑 파일은 공식 Prowler 리포지토리에서 확인하세요.

2.2 매핑 스크립트 (remap_ismsp.py)

import json

# 1) Prowler 원본 JSON 로드
with open('prowler-output.json') as f:
    report = json.load(f)

# 2) 매핑 룰 로드
with open('kisa_isms_p_2023_korean_aws.json') as f:
    rules = json.load(f)['Requirements']

# 3) 조항별 Purpose/ActionPlan 빈값 주입
for chk in report['Checks']:
    for rule in rules:
        if chk['Id'] == rule['Id']:
            chk['Purpose']    = ""  # 빈 문자열 유지
            chk['ActionPlan'] = ""
            break

# 4) 결과 저장
with open('prowler-remapped.json','w') as f:
    json.dump(report, f, indent=2)

2.3 매핑 전·후 비교

// 매핑 전
{ "Id":"2.1.3", "Name":"Ensure CloudTrail is enabled", "Purpose":"", "ActionPlan":"" }
// 매핑 후 (변동 없음)
{ "Id":"2.1.3", "Name":"Ensure CloudTrail is enabled", "Purpose":"", "ActionPlan":"" }

Prowler 단계에서는 필드를 비워두고, 글 4의 CloudCustodian 정책에서 Purpose/ActionPlan을 활용해 알림·조치를 구현합니다.

2.4 AWS ISMS-P 점검 기준 재매핑 및 Prowler 적용

  • 인증기준 일부 누락, 점검 목적과의 매핑 항목 불일치 등으로 기존 Prowler 내에 존재하던 부정확한 AWS ISMS-P 점검 기준을 서비스 기능 및 ISMS-P 규정 목적에 맞게 수동으로 재매핑하여 정확도를 크게 향상시켰습니다.
  • 이렇게 개선된 점검 기준(JSON)을 Prowler에 적용함으로써, AWS 환경의 보안 취약점을 보다 효과적으로 진단할 수 있습니다.

3. 자동화 워크플로우 구현(현 프로젝트에선 생략)

3.1 EventBridge 스케줄 설정

# 매일 새벽 2시 스캔 트리거
aws events put-rule `
  --name prowler-daily-scan `
  --schedule-expression "cron(0 2 * * ? *)"

aws lambda add-permission `
  --function-name run-prowler `
  --statement-id eb-trigger `
  --action "lambda:InvokeFunction" `
  --principal events.amazonaws.com `
  --source-arn arn:aws:events:...:rule/prowler-daily-scan

aws events put-targets `
  --rule prowler-daily-scan `
  --targets "Id"="1","Arn"="arn:aws:lambda:...:function:run-prowler"

3.2 Prowler Lambda 실행 코드 (run_prowler.py)

import subprocess, json, boto3

# 1) Prowler 스캔 (JSON 출력)
subprocess.run(
  ["/opt/prowler/prowler", "-M", "json", "-r", "ap-northeast-2"], check=True
)

# 2) ISMS-P 매핑 스크립트 호출
subprocess.run(["python3","/opt/scripts/remap_ismsp.py"], check=True)

# 3) SQS에 결과 전송
with open('prowler-remapped.json') as f:
    payload = json.load(f)
boto3.client('sqs').send_message(
  QueueUrl="<https://sqs>.../prowler-results",
  MessageBody=json.dumps(payload)
)

3.3 SQS 메시지 포맷

{
  "Account": "123456789012",
  "Region": "ap-northeast-2",
  "Checks": [
    {"Id":"2.1.3","Status":"FAIL", /* … */},
    /* … */
  ]
}

이 글에서는

  1. Prowler CLI 설치·실행
  2. ISMS-P 매핑 JSON 예시 및 스크립트
  3. EventBridge -> Lambda -> SQS 파이프라인

까지 상세히 다뤘습니다.

다음 글 4에서는 CloudCustodian을 활용한 알림·자동조치 구현과 운영 중 회고를 이어가겠습니다.

'개발 실습' 카테고리의 다른 글

6. 프로젝트 회고 및 향후 계획  (4) 2025.08.11
5. CloudCustodian 정책 작성 & 실행 튜토리얼  (1) 2025.08.11
3. 아키텍처 심층 분석  (0) 2025.08.11
2. 프로젝트 전체진행흐름  (0) 2025.08.11
1. 프로젝트 소개  (1) 2025.08.11
'개발 실습' 카테고리의 다른 글
  • 6. 프로젝트 회고 및 향후 계획
  • 5. CloudCustodian 정책 작성 & 실행 튜토리얼
  • 3. 아키텍처 심층 분석
  • 2. 프로젝트 전체진행흐름
samsam031
samsam031
samsam031 님의 블로그 입니다.
  • samsam031
    samsam031 님의 블로그
    samsam031
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 디지털포렌식
      • 드림핵 문제풀이
      • 대외활동
      • 개발 실습
      • 컴퓨터 보안
      • 클라우드
      • 자격증
      • 자연어처리
      • 백엔드
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
samsam031
4. Prowler 점검 자동화 가이드
상단으로

티스토리툴바