본문 바로가기
정보보호 (Security)

AWS 클라우드 환경 보안점검을 오픈소스(Prowler)로 자동화 수행

by 날으는물고기 2023. 10. 10.

AWS 클라우드 환경 보안점검을 오픈소스(Prowler)로 자동화 수행

GitHub - prowler-cloud/prowler: Prowler is an Open Source Security tool for AWS, Azure and GCP to perform Cloud Security best practices assessments, audits, incident response, compliance, continuous monitoring, hardening and forensics readiness. Includes CIS, NIST 800, NIST CSF, CISA, FedRAMP, PCI-DSS, GDPR, HIPAA, FFIEC, SOC2, GXP, Well-Architected Security, ENS and more.

Prowler는 AWS 환경에서 보안 점검을 수행하는 오픈 소스 도구 중 하나입니다. 아래는 Prowler를 사용하여 AWS 환경 보안 점검을 수행하는 단계별 구체적인 지침입니다. 이러한 지침은 Prowler의 기본 사용 방법을 안내하며, 상황에 따라 추가적인 구성이 필요할 수 있습니다.

 

참고: Prowler를 실행하기 전에 AWS CLI 및 AWS 계정에 액세스할 권한이 필요합니다.

 

단계 1: Prowler 설치

Prowler를 사용하려면 먼저 다음 단계를 따라 Prowler를 설치해야 합니다.

  1. Prowler GitHub 저장소에서 Prowler를 다운로드합니다.
    git clone https://github.com/toniblyx/prowler
  2. Prowler 디렉터리로 이동합니다.
    cd prowler
  3. 필요한 의존성을 설치합니다.
    pip install -r requirements.txt

단계 2: AWS 계정 구성

Prowler가 AWS 환경에서 점검을 수행하려면 AWS 계정에 액세스 권한이 필요합니다. 아래 단계를 따라 AWS CLI를 사용하여 계정을 구성합니다.

  1. AWS CLI를 설치하고 구성합니다.
    aws configure
  2. AWS IAM 사용자를 만들고 필요한 권한을 부여합니다. Prowler가 필요로 하는 권한은 Prowler의 GitHub 저장소 또는 문서에서 확인할 수 있습니다.

단계 3: Prowler 실행

이제 Prowler를 실행하여 AWS 환경에서 보안 점검을 수행할 수 있습니다. Prowler는 여러 프로필 및 옵션을 지원하므로 필요에 따라 다양한 설정을 사용할 수 있습니다.

  1. 기본 프로파일로 Prowler를 실행합니다.
    ./prowler -p all
  2. 특정 프로파일을 사용하여 Prowler를 실행할 수도 있습니다. 예를 들어, GDPR 프로파일을 사용하려면 다음과 같이 실행합니다.
    ./prowler -p gdrp
  3. 결과를 로그 파일에 저장하려면 -l 옵션을 사용합니다.
    ./prowler -p all -l prowler.log

단계 4: 결과 분석

Prowler는 여러 보안 검사 항목을 실행하고 결과를 보고서로 제공합니다. 실행 결과를 분석하고 보완해야 할 사항을 식별하는 작업은 중요합니다. Prowler 보고서를 확인하고 필요한 조치를 취하세요.

 

참고: Prowler는 보안 관행을 검사하고 문제를 식별하기 위한 도구일 뿐입니다. 발견된 문제를 해결하고 AWS 환경을 보안하기 위한 조치를 취해야 합니다.

 

Prowler를 사용하여 AWS 환경을 점검하는 것은 AWS 보안 감사를 수행하는 데 도움이 되지만, AWS 보안은 지속적인 노력이 필요하므로 주기적으로 실행하고 결과를 검토하는 것이 좋습니다.

여러 AWS 계정의 Prowler 보안 조사 결과에 대한 통합 보고서 생성 - AWS

Prowler의 결과를 JSON 형식으로 파싱하고 Google Sheets에 저장하기 위해 Python 스크립트를 작성할 수 있습니다. 이를 위해 boto3 라이브러리를 사용하여 Google Sheets API와 상호 작용하고, json 라이브러리를 사용하여 Prowler 결과를 파싱합니다. 아래는 이러한 작업을 수행하는 예제 코드입니다.

 

참고: 이 코드를 실행하려면 gspreadoauth2client 라이브러리를 설치해야 합니다. 또한 Google Sheets API를 활성화하고 인증 키 파일(JSON 형식)을 얻어야 합니다. Google Sheets에 쓰기 및 편집 권한이 있는 서비스 계정 키 파일을 사용합니다.

import json
import gspread
from oauth2client.service_account import ServiceAccountCredentials

# Prowler 결과를 JSON 파일에서 로드
with open('prowler.json', 'r') as file:
    prowler_results = json.load(file)

# Google Sheets 인증 및 스프레드시트 열기
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('your-credentials.json', scope)
client = gspread.authorize(creds)
spreadsheet = client.open('Your Google Spreadsheet Name')  # 스프레드시트 이름으로 변경

# Google Sheets 워크시트 선택 또는 생성
worksheet = spreadsheet.worksheet('Prowler Results')  # 워크시트 이름으로 변경

# Prowler 결과를 Google Sheets에 쓰기
cell_list = worksheet.range('A1:C1')  # 원하는 범위로 변경
headers = ['Check ID', 'Check Name', 'Result']  # 열 헤더를 원하는 형식으로 변경
for i, header in enumerate(headers):
    cell_list[i].value = header

worksheet.update_cells(cell_list)

# Prowler 결과를 행으로 추가
for result in prowler_results:
    check_id = result['CheckId']
    check_name = result['CheckName']
    check_result = result['Result']

    cell_list = worksheet.range('A2:C2')  # 원하는 범위로 변경
    cell_list[0].value = check_id
    cell_list[1].value = check_name
    cell_list[2].value = check_result

    worksheet.append_table(cell_list)

print("Prowler 결과가 Google Sheets에 저장되었습니다.")

위 코드에서 your-credentials.json은 Google Sheets API를 사용하는 데 필요한 인증 키 파일의 경로입니다. 또한 Your Google Spreadsheet Name은 Google Sheets에서 사용 중인 스프레드시트의 이름으로 변경해야 합니다.

 

이 코드를 실행하면 Prowler 결과가 Google Sheets에 저장됩니다. 결과를 저장하는 시트 및 범위를 필요에 따라 조정할 수 있습니다.

Prowler Pro - AWS Security Made Easy

Prowler의 수행 결과와 Google Sheets 링크를 슬랙으로 보내려면 slackclient 라이브러리를 사용하여 Slack API와 상호 작용하는 Python 스크립트를 작성할 수 있습니다. 또한 Prowler 결과를 분석하여 통계 정보를 생성해야 합니다. 아래는 이러한 작업을 수행하는 예제 코드입니다.

 

먼저, slackclientgspread 라이브러리를 설치해야 합니다.

pip install slackclient gspread oauth2client

그런 다음, 아래 코드를 사용하여 Slack에 결과와 Google Sheets 링크를 보낼 수 있습니다. 코드를 실행하기 전에 Slack API 토큰과 Google Sheets 인증 정보를 설정해야 합니다.

import json
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from slack import WebClient

# Slack API 토큰 및 채널 설정
slack_token = 'YOUR_SLACK_API_TOKEN'  # Slack API 토큰을 입력하세요.
slack_channel = '#general'  # 보낼 슬랙 채널을 선택하세요.

# Prowler 결과를 JSON 파일에서 로드
with open('prowler.json', 'r') as file:
    prowler_results = json.load(file)

# Google Sheets 인증 및 스프레드시트 열기
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('your-credentials.json', scope)
client = gspread.authorize(creds)
spreadsheet = client.open('Your Google Spreadsheet Name')  # 스프레드시트 이름으로 변경

# Google Sheets 워크시트 선택 또는 생성
worksheet = spreadsheet.worksheet('Prowler Results')  # 워크시트 이름으로 변경

# Prowler 결과를 Google Sheets에 쓰기
cell_list = worksheet.range('A1:C1')  # 원하는 범위로 변경
headers = ['Check ID', 'Check Name', 'Result']  # 열 헤더를 원하는 형식으로 변경
for i, header in enumerate(headers):
    cell_list[i].value = header

worksheet.update_cells(cell_list)

# Prowler 결과를 행으로 추가
for result in prowler_results:
    check_id = result['CheckId']
    check_name = result['CheckName']
    check_result = result['Result']

    cell_list = worksheet.range('A2:C2')  # 원하는 범위로 변경
    cell_list[0].value = check_id
    cell_list[1].value = check_name
    cell_list[2].value = check_result

    worksheet.append_table(cell_list)

# Slack에 결과 및 Google Sheets 링크 보내기
slack_client = WebClient(token=slack_token)

# Prowler 결과 요약 정보 생성 (예: 성공, 실패, 경고 수 계산)
success_count = 0
failure_count = 0
warning_count = 0

for result in prowler_results:
    if result['Result'].lower() == 'success':
        success_count += 1
    elif result['Result'].lower() == 'failure':
        failure_count += 1
    elif result['Result'].lower() == 'warning':
        warning_count += 1

# Slack 메시지 작성
slack_message = f"Prowler 결과: 성공({success_count}), 실패({failure_count}), 경고({warning_count})\n"
slack_message += f"Google Sheets 링크: {spreadsheet.url}"

# Slack 메시지 전송
slack_client.chat_postMessage(channel=slack_channel, text=slack_message)

print("Prowler 결과와 Google Sheets 링크가 Slack에 전송되었습니다.")

위 코드에서 YOUR_SLACK_API_TOKEN을 자신의 Slack API 토큰으로 대체하고, your-credentials.json은 Google Sheets API를 사용하는 데 필요한 인증 키 파일의 경로로 설정해야 합니다. 또한 슬랙 채널을 적절하게 선택하고, 결과를 요약하기 위한 통계 정보를 생성합니다.

 

이 코드를 실행하면 Prowler 결과 요약과 Google Sheets 링크가 Slack 채널로 보내집니다.

Building Prowler into a QuickSight powered AWS Security Dashboard

728x90

댓글