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

Panther 콘솔의 정책 페이지에서 리소스를 무시하도록 정책을 구성하려면:
Panther 콘솔의 왼쪽 탐색 창에서 빌드 > 디텍션.
억제를 구성하려는 정책의 이름을 클릭하세요.
일반 구성 알러트 필드 설정 섹션에서, 선택적 필드 드롭다운을 확장하세요.
일반 구성 무시 패턴 필드에 무시하려는 리소스의 ARN을 입력하세요.
와일드카드 패턴을 사용하여 유사한 ARN을 가진 여러 리소스를 무시할 수 있습니다. 예를 들어 제목이 로 시작하는 모든 S3 버킷을 제외하려면,
panther다음과 같이 입력할 수 있습니다arn:aws:s3:::panther*.

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

