정책
클라우드 인프라 구성을 스캔하고 평가
개요
정책은 잘못 구성된 클라우드 인프라를 식별하고 팀을 위한 알러트를 생성하는 데 사용됩니다. Panther는 이미 작성되어 지속적으로 업데이트되는 여러 가지 Panther가 관리하는 정책.
정책은 다음과 같이 작성될 수 있습니다 Python 디택션; 다음과 같이 작성할 수는 없습니다 단순 디택션.
정책에서 일치 항목이 발생하면 규정 준수 실패가 생성되지만 시그널은 아닙니다. 규정 준수 실패는 다음에서 확인할 수 있습니다:
에서 데이터 탐색기에서
panther_cloudsecurity.public데이터베이스의compliance_history테이블에서 검색에서 보안 데이터베이스의 규정 준수 기록 테이블
정책 작성 방법
새 정책 작성을 시작하기 전에 기존의 Panther가 관리하는 정책 이 있는지 확인하세요.
Panther의 디택션 내부에서 외부 API 요청을 만드는 것은 매우 권장되지 않습니다. 일반적으로 디택션은 매우 큰 규모로 처리되며, API 요청을 만들면 수신 시스템에 과부하를 주고 룰이 다음 한도를 초과하게 만들 수 있습니다 15초 실행 시간 제한.
정책 본문
정책 본문은 다음을 충족해야 합니다:
유효한 Python3이어야 합니다.
다음을 정의합니다
policy()인수를 하나 받는resource입니다.각 정책은 다음에서 제공되는 지정된 리소스 유형의
resource지원되는 리소스 의 입력을 받습니다 페이지.
다음을 반환합니다
bool를 정책 함수에서.
Python 본문은 policy() 함수의 인수 이름을 지정해야 하며 resource 다음도 수행할 수 있습니다:
표준 Python3 라이브러리 가져오기
사용자 정의
aws_globals모듈에서 가져오기Panther에서 정의한
panther모듈에서 가져오기필요에 따라 추가 헬퍼 함수 정의
룰 함수의 범위 밖에서 변수와 클래스 정의
의 스키마를 사용하면 의 입력을 받습니다 리소스의 사용 가능한 모든 필드에 대한 자세한 정보를 제공합니다. 최상위 키는 항상 존재하지만, 다음을 포함할 수 있습니다 NoneType 값입니다.
로컬 및 Panther Console에서 정책 작성
Panther Console에서 정책을 작성하고 배포하거나, 로컬에서 작성한 후 Panther Analysis Tool (PAT) CLI 워크플로를 사용해 Panther에 업로드할 수 있습니다:
Panther Console에서 정책을 작성하는 방법
Panther Console의 왼쪽 탐색 모음에서 탐지.
오른쪽 상단에서 다음을 클릭하세요: 새로 만들기.
다음 정책 타일을 클릭하세요: 시작.
생성 페이지에서 정책을 구성합니다:
이름: 정책의 설명적 이름을 입력합니다.
ID (선택 사항): 펜 아이콘을 클릭하고 정책의 고유 ID를 입력합니다.
오른쪽 상단의 활성화됨 토글은 기본적으로
켜기로 설정됩니다. 정책을 비활성화하려면 토글을끔.다음 다음 리소스 유형에 대해 섹션:
리소스 유형: 이 정책을 적용할 하나 이상의 리소스 유형을 선택합니다. 모든 리소스에 적용하려면 비워 둡니다.
다음 탐지 섹션:
다음 정책 함수 텍스트 편집기에서 Python
정책함수를 작성하여 디택션을 정의합니다.디택션 템플릿과 예시는 panther_analysis GitHub 저장소
다음 알러트 필드 설정 섹션:
심각도: 심각도 수준 을 이 디택션으로 트리거된 알러트에 대해 선택합니다.
다음 선택적 필드 섹션에서 다음 필드의 값을 선택적으로 제공합니다:
설명: 정책에 대한 추가 컨텍스트를 입력합니다.
런북: 이 정책과 관련된 절차 및 운영을 입력합니다.
자세한 내용은 알러트 런북.
설명적인 런북을 제공하는 것이 권장됩니다. 왜냐하면 Panther AI 알러트 분류 에서 이를 고려하기 때문입니다.
참조: 이 룰과 관련된 자세한 정보를 위한 외부 링크를 입력합니다.
대상 재정의: 심각도와 관계없이 이 디택션의 알러트를 받을 대상지를 선택합니다. 대상지는 룰 함수에서 동적으로 설정할 수도 있습니다. 다음을 참조하세요 라우팅 순서 우선순위 에서 라우팅 우선순위에 대해 자세히 알아보세요.
무시 패턴: 무시할 패턴을 입력합니다.
사용자 지정 태그: 룰을 한눈에 이해하는 데 도움이 되도록 사용자 지정 태그를 입력합니다(예:
HIPAA.)다음 프레임워크 매핑 섹션:
클릭합니다 새로 추가 보고서를 입력하려면.
다음 필드의 값을 제공하세요:
보고서 키: 보고서와 관련된 키를 입력합니다.
보고서 값: 해당 보고서의 값을 입력합니다.
다음 테스트 섹션:
다음 단위 테스트 섹션에서, 새로 추가 에서 테스트 생성 이전 단계에서 정의한 정책에 대해.
오른쪽 상단에서 다음을 클릭하세요: 저장.
GitHub 또는 GitLab과 같은 버전 관리 시스템에서 로컬 디택션 파일을 관리하는 것을 권장합니다.
Panther의 오픈 소스 분석 저장소를 포크하는 것이 가장 좋지만, 처음부터 자신만의 저장소를 만들 수도 있습니다.
파일 설정
각 디택션은 다음으로 구성됩니다:
Python 파일(확장자가
.py인 파일)로, 디택션/감사 로직을 포함합니다YAML 또는 JSON 사양 파일(확장자가
.yml또는.json인 파일)로, 디택션의 메타데이터 속성을 포함합니다.관례에 따라 이 파일에는 Python 파일과 같은 이름을 부여합니다.
폴더 설정
정책을 폴더로 그룹화하는 경우, 업로드 시 찾을 수 있도록 각 폴더 이름에는 반드시 정책 포함되어야 합니다(PAT 또는 Console의 대량 업로더를 사용하더라도 업로드 중에 찾을 수 있도록).
로그/리소스 유형을 기준으로 정책을 폴더로 그룹화하는 것을 권장합니다. 예: suricata_rules 또는 aws_s3_policies. 오픈 소스 Panther Analysis 저장소를 참조할 수 있습니다.
로컬에서 정책 작성
정책을 작성하고 (선택한 폴더에) 다음 이름으로 저장하세요
my_new_policy.py: def polcy(resource):아래 템플릿을 사용하여 사양 파일을 만드세요:
전체 Writing Python Detections의 Python 정책 사양 참조 필수 및 선택 필드의 전체 목록을 보려면.
관련 알러트의 제목
정책의 알러트 제목 설정 우선순위는 룰 및 예약 룰과 동일합니다—다음을 참조하세요 알러트 제목이 설정되는 방법 섹션.
특정 클라우드 리소스 무시
특정 클라우드 리소스에 예외를 적용하도록 정책을 구성할 수 있습니다. 즉, 해당 리소스에 대해서는 정책이 실행되지 않으며 알러트도 생성되지 않습니다. 이를 때때로 "정책 억제"라고도 합니다.
정책 억제를 구성하는 방법은 세 가지입니다:
정책 억제를 구성하는 경우, 이는 되돌릴 수 없습니다. Panther가 관리하는 정책 억제를
할 수는 있지만 추가 Panther Console의 리소스 페이지에서 정책 억제를 추가할 수 있지만, 나중에 이를 제거해야 한다면 다른 두 방법 중 하나로 정책을 편집해야 합니다.
Panther Console의 리소스 페이지에서 리소스를 무시하도록 정책을 구성하려면:
Panther Console의 왼쪽 탐색 모음에서 클라우드 리소스.
무시하려는 클라우드 리소스의 이름을 클릭합니다.
다음 정책 섹션에는 이 리소스에 적용되는 모든 정책이 포함되어 있습니다. 이 리소스를 무시하도록 구성할 정책을 찾으세요.
행 오른쪽의 세 개 점 아이콘을 클릭한 다음 무시.
이렇게 하면 정책이 수정되어 그 정책의 무시 패턴 필드.

Panther Console의 정책 페이지에서 리소스를 무시하도록 정책을 구성하려면:
Panther Console의 왼쪽 탐색 모음에서 탐지.
억제를 구성하려는 정책의 이름을 클릭합니다.
다음 알러트 필드 설정 섹션에서 선택적 필드 드롭다운을 확장합니다.
다음 무시 패턴 필드에 무시하려는 리소스의 ARN을 입력합니다.
와 같이 시작하는 제목의 모든 S3 버킷을 제외할 수 있습니다
panther을 입력하여arn:aws:s3:::panther*.

정책의 로컬 파일 구성에서 리소스를 무시하도록 정책을 구성하려면:
정책의 YAML 파일을 엽니다.
다음과 같은 새 필드를 추가합니다
Suppressions유형의array.이 필드에 대해 자세히 알아보려면 Python Policy Specification Reference.
아래
Suppressions에서 무시하려는 리소스 ARN을 목록으로 추가합니다.와 같이 시작하는 제목의 모든 S3 버킷을 제외할 수 있습니다
panther을 입력하여arn:aws:s3:::panther*.
예:
정책 작성 모범 사례
테스트 리소스 구성
테스트 케이스를 수동으로 만드는 것은 사람의 실수에 취약할 수 있습니다. 다음 방법 중 하나를 권장합니다:
옵션 1: Panther Console에서 클라우드 리소스로 이동합니다. 테스트에서 모방하려는 리소스 유형의 필터를 적용합니다. 환경에서 리소스를 선택한 다음
Attributes카드에서 단어root.옵션 2: Panther 리소스 문서를 열고, 모방하려는 리소스의 섹션으로 이동합니다. 제공된 예시 리소스를 복사합니다. 웹 UI에서 작업 중이라면 이를 리소스 편집기에 붙여넣고, 로컬에서 작업 중이라면
Resource필드에 붙여넣으세요. 이제 정책과 모방하려는 특정 테스트 케이스와 관련된 필드를 수동으로 수정할 수 있습니다.
실행 가능하다면 옵션 1이 가장 좋습니다. 정책에 대한 실제 테스트 데이터를 제공할 수 있기 때문입니다. 또한, 계정에서 문제가 되는 리소스 때문에 특정 정책을 작성/수정하는 경우가 많습니다. 해당 리소스의 JSON 표현을 테스트 케이스로 사용하면 향후 유사한 리소스가 정책에 의해 포착된다는 것을 보장할 수 있습니다.
예외 디버깅
정책을 실행하는 Python 환경에 직접 접근할 수 없으므로 예외 디버깅은 어려울 수 있습니다.
정책이 상태 Error 를 표시하는 특정 리소스를 볼 때, 이는 해당 정책이 예외를 발생시켰다는 뜻입니다. 이러한 오류를 해결하는 가장 좋은 방법은 위의 테스트 리소스 구성 섹션에서 옵션 1을 사용하고 예외를 일으키는 리소스로부터 테스트 케이스를 만드는 것입니다.
이 테스트 케이스를 로컬 또는 Panther Console에서 실행하면 문제에 대한 더 많은 맥락을 얻을 수 있으며, 환경의 모든 리소스에 대해 정책을 실행하지 않고도 예외를 디버깅하도록 정책을 수정할 수 있습니다.
참고: stdout 또는 stderr 로 Python 코드가 출력한 모든 내용은 CloudWatch에 기록됩니다. SaaS/CPaaS 고객의 경우, Panther 엔지니어는 정기적인 애플리케이션 모니터링 중 이 CloudWatch 로그를 볼 수 있습니다.
정책 예시
S3 공개 읽기 액세스
아래 예시에서 이 정책은 S3 버킷이 공개 읽기 액세스를 허용하는지 확인합니다:
IAM 비밀번호 정책
이 예시 정책은 비밀번호 정책이 최대 비밀번호 수명을 적용하지 않을 때 알러트합니다:
다음 policy() 본문에서 다음 값을 반환하면 True 는 리소스가 규정을 준수하며 알러트를 보내지 않아야 함을 의미합니다. 다음 값을 반환하면 False 는 리소스가 규정을 준수하지 않음을 의미합니다.
정책은 다음 IAM 비밀번호 정책 리소스를 기반으로 합니다:
참조
마지막 업데이트
도움이 되었나요?

