For the complete documentation index, see llms.txt. This page is also available as Markdown.

정책

클라우드 인프라 구성을 스캔하고 평가

개요

정책은 잘못 구성된 클라우드 인프라를 식별하고 팀을 위한 알러트를 생성하는 데 사용됩니다. Panther는 이미 작성되어 지속적으로 업데이트되는 여러 가지 Panther가 관리하는 정책.

정책은 다음과 같이 작성될 수 있습니다 Python 디택션; 다음과 같이 작성할 수는 없습니다 단순 디택션.

정책에서 일치 항목이 발생하면 규정 준수 실패가 생성되지만 시그널은 아닙니다. 규정 준수 실패는 다음에서 확인할 수 있습니다:

  • 에서 데이터 탐색기에서 panther_cloudsecurity.public 데이터베이스의 compliance_history 테이블

  • 에서 검색에서 보안 데이터베이스의 규정 준수 기록 테이블

정책 작성 방법

새 정책 작성을 시작하기 전에 기존의 Panther가 관리하는 정책 이 있는지 확인하세요.

정책 본문

정책 본문은 다음을 충족해야 합니다:

  • 유효한 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에서 정책을 작성하는 방법

  1. Panther Console의 왼쪽 탐색 모음에서 탐지.

  2. 오른쪽 상단에서 다음을 클릭하세요: 새로 만들기.

  3. 다음 정책 타일을 클릭하세요: 시작.

  4. 생성 페이지에서 정책을 구성합니다:

    • 이름: 정책의 설명적 이름을 입력합니다.

    • ID (선택 사항): 펜 아이콘을 클릭하고 정책의 고유 ID를 입력합니다.

    • 오른쪽 상단의 활성화됨 토글은 기본적으로 켜기 로 설정됩니다. 정책을 비활성화하려면 토글을 .

    • 다음 다음 리소스 유형에 대해 섹션:

      • 리소스 유형: 이 정책을 적용할 하나 이상의 리소스 유형을 선택합니다. 모든 리소스에 적용하려면 비워 둡니다.

    • 다음 탐지 섹션:

      • 다음 정책 함수 텍스트 편집기에서 Python 정책 함수를 작성하여 디택션을 정의합니다.

    • 다음 알러트 필드 설정 섹션:

      • 심각도: 심각도 수준 을 이 디택션으로 트리거된 알러트에 대해 선택합니다.

      • 다음 선택적 필드 섹션에서 다음 필드의 값을 선택적으로 제공합니다:

        • 설명: 정책에 대한 추가 컨텍스트를 입력합니다.

        • 런북: 이 정책과 관련된 절차 및 운영을 입력합니다.

        • 참조: 이 룰과 관련된 자세한 정보를 위한 외부 링크를 입력합니다.

        • 대상 재정의: 심각도와 관계없이 이 디택션의 알러트를 받을 대상지를 선택합니다. 대상지는 룰 함수에서 동적으로 설정할 수도 있습니다. 다음을 참조하세요 라우팅 순서 우선순위 에서 라우팅 우선순위에 대해 자세히 알아보세요.

        • 무시 패턴: 무시할 패턴을 입력합니다.

        • 사용자 지정 태그: 룰을 한눈에 이해하는 데 도움이 되도록 사용자 지정 태그를 입력합니다(예: HIPAA.)

        • 다음 프레임워크 매핑 섹션:

          1. 클릭합니다 새로 추가 보고서를 입력하려면.

          2. 다음 필드의 값을 제공하세요:

            • 보고서 키: 보고서와 관련된 키를 입력합니다.

            • 보고서 값: 해당 보고서의 값을 입력합니다.

    • 다음 테스트 섹션:

      • 다음 단위 테스트 섹션에서, 새로 추가 에서 테스트 생성 이전 단계에서 정의한 정책에 대해.

  5. 오른쪽 상단에서 다음을 클릭하세요: 저장.

GitHub 또는 GitLab과 같은 버전 관리 시스템에서 로컬 디택션 파일을 관리하는 것을 권장합니다.

Panther의 오픈 소스 분석 저장소를 포크하는 것이 가장 좋지만, 처음부터 자신만의 저장소를 만들 수도 있습니다.

파일 설정

각 디택션은 다음으로 구성됩니다:

  • Python 파일(확장자가 .py 인 파일)로, 디택션/감사 로직을 포함합니다

  • YAML 또는 JSON 사양 파일(확장자가 .yml 또는 .json 인 파일)로, 디택션의 메타데이터 속성을 포함합니다.

    • 관례에 따라 이 파일에는 Python 파일과 같은 이름을 부여합니다.

폴더 설정

정책을 폴더로 그룹화하는 경우, 업로드 시 찾을 수 있도록 각 폴더 이름에는 반드시 정책 포함되어야 합니다(PAT 또는 Console의 대량 업로더를 사용하더라도 업로드 중에 찾을 수 있도록).

로그/리소스 유형을 기준으로 정책을 폴더로 그룹화하는 것을 권장합니다. 예: suricata_rules 또는 aws_s3_policies. 오픈 소스 Panther Analysis 저장소를 참조할 수 있습니다.

로컬에서 정책 작성

  1. 정책을 작성하고 (선택한 폴더에) 다음 이름으로 저장하세요 my_new_policy.py: def polcy(resource):

  2. 아래 템플릿을 사용하여 사양 파일을 만드세요:

전체 Writing Python Detections의 Python 정책 사양 참조 필수 및 선택 필드의 전체 목록을 보려면.

관련 알러트의 제목

정책의 알러트 제목 설정 우선순위는 룰 및 예약 룰과 동일합니다—다음을 참조하세요 알러트 제목이 설정되는 방법 섹션.

특정 클라우드 리소스 무시

특정 클라우드 리소스에 예외를 적용하도록 정책을 구성할 수 있습니다. 즉, 해당 리소스에 대해서는 정책이 실행되지 않으며 알러트도 생성되지 않습니다. 이를 때때로 "정책 억제"라고도 합니다.

정책 억제를 구성하는 방법은 세 가지입니다:

할 수는 있지만 추가 Panther Console의 리소스 페이지에서 정책 억제를 추가할 수 있지만, 나중에 이를 제거해야 한다면 다른 두 방법 중 하나로 정책을 편집해야 합니다.

Panther Console의 리소스 페이지에서 리소스를 무시하도록 정책을 구성하려면:

  1. Panther Console의 왼쪽 탐색 모음에서 클라우드 리소스.

  2. 무시하려는 클라우드 리소스의 이름을 클릭합니다.

  3. 다음 정책 섹션에는 이 리소스에 적용되는 모든 정책이 포함되어 있습니다. 이 리소스를 무시하도록 구성할 정책을 찾으세요.

  4. 행 오른쪽의 세 개 점 아이콘을 클릭한 다음 무시.

    • 이렇게 하면 정책이 수정되어 그 정책의 무시 패턴 필드.

A "Policies" section shows three policies in a table. Each policy has a status, severity, and a three dots icon.

Panther Console의 정책 페이지에서 리소스를 무시하도록 정책을 구성하려면:

  1. Panther Console의 왼쪽 탐색 모음에서 탐지.

  2. 억제를 구성하려는 정책의 이름을 클릭합니다.

  3. 다음 알러트 필드 설정 섹션에서 선택적 필드 드롭다운을 확장합니다.

  4. 다음 무시 패턴 필드에 무시하려는 리소스의 ARN을 입력합니다.

    • 와 같이 시작하는 제목의 모든 S3 버킷을 제외할 수 있습니다 panther 을 입력하여 arn:aws:s3:::panther*.

An "Ignore Patterns" field has a value of "arn:aws:s3:::panther*"

정책의 로컬 파일 구성에서 리소스를 무시하도록 정책을 구성하려면:

  1. 정책의 YAML 파일을 엽니다.

  2. 다음과 같은 새 필드를 추가합니다 Suppressions 유형의 array.

  3. 아래 Suppressions에서 무시하려는 리소스 ARN을 목록으로 추가합니다.

    • 와 같이 시작하는 제목의 모든 S3 버킷을 제외할 수 있습니다 panther 을 입력하여 arn:aws:s3:::panther*.

예:

정책 작성 모범 사례

테스트 리소스 구성

테스트 케이스를 수동으로 만드는 것은 사람의 실수에 취약할 수 있습니다. 다음 방법 중 하나를 권장합니다:

  • 옵션 1: Panther Console에서 클라우드 리소스로 이동합니다. 테스트에서 모방하려는 리소스 유형의 필터를 적용합니다. 환경에서 리소스를 선택한 다음 Attributes 카드에서 단어 root.

  • 옵션 2: Panther 리소스 문서를 열고, 모방하려는 리소스의 섹션으로 이동합니다. 제공된 예시 리소스를 복사합니다. 웹 UI에서 작업 중이라면 이를 리소스 편집기에 붙여넣고, 로컬에서 작업 중이라면 Resource 필드에 붙여넣으세요. 이제 정책과 모방하려는 특정 테스트 케이스와 관련된 필드를 수동으로 수정할 수 있습니다.

실행 가능하다면 옵션 1이 가장 좋습니다. 정책에 대한 실제 테스트 데이터를 제공할 수 있기 때문입니다. 또한, 계정에서 문제가 되는 리소스 때문에 특정 정책을 작성/수정하는 경우가 많습니다. 해당 리소스의 JSON 표현을 테스트 케이스로 사용하면 향후 유사한 리소스가 정책에 의해 포착된다는 것을 보장할 수 있습니다.

예외 디버깅

정책을 실행하는 Python 환경에 직접 접근할 수 없으므로 예외 디버깅은 어려울 수 있습니다.

정책이 상태 Error 를 표시하는 특정 리소스를 볼 때, 이는 해당 정책이 예외를 발생시켰다는 뜻입니다. 이러한 오류를 해결하는 가장 좋은 방법은 위의 테스트 리소스 구성 섹션에서 옵션 1을 사용하고 예외를 일으키는 리소스로부터 테스트 케이스를 만드는 것입니다.

이 테스트 케이스를 로컬 또는 Panther Console에서 실행하면 문제에 대한 더 많은 맥락을 얻을 수 있으며, 환경의 모든 리소스에 대해 정책을 실행하지 않고도 예외를 디버깅하도록 정책을 수정할 수 있습니다.

정책 예시

S3 공개 읽기 액세스

아래 예시에서 이 정책은 S3 버킷이 공개 읽기 액세스를 허용하는지 확인합니다:

IAM 비밀번호 정책

이 예시 정책은 비밀번호 정책이 최대 비밀번호 수명을 적용하지 않을 때 알러트합니다:

다음 policy() 본문에서 다음 값을 반환하면 True 는 리소스가 규정을 준수하며 알러트를 보내지 않아야 함을 의미합니다. 다음 값을 반환하면 False 는 리소스가 규정을 준수하지 않음을 의미합니다.

정책은 다음 IAM 비밀번호 정책 리소스를 기반으로 합니다:

참조

마지막 업데이트

도움이 되었나요?