Jamf Security Cloud 로그 수집

다음에서 지원:

이 문서에서는 Google Cloud 스토리지 또는 Amazon S3를 사용하여 Jamf Security Cloud 로그를 Google Security Operations로 수집하는 방법을 설명합니다. Jamf Security Cloud는 Apple 기기를 위한 모바일 위협 방어 및 엔드포인트 보안 플랫폼입니다. DNS 계층 보호, 피싱 방지, 콘텐츠 필터링, 기기 위험 평가를 포함하는 위협 감지, 규정 준수, 기기 보안 이벤트 로그를 생성합니다. Jamf Security Cloud는 데이터 스트림을 사용하여 로그를 내보냅니다. 각 데이터 스트림 구성은 하나의 데이터 유형을 하나의 대상으로 전송합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Jamf Security Cloud 포털에 대한 액세스 권한 관리
  • 방법 1: Google Cloud (Google Cloud Storage, Cloud Run)에 대한 권한 액세스
  • 방법 2: AWS (S3, IAM)에 대한 액세스 권한

내보낼 데이터 스트림 유형 선택

Jamf Security Cloud 파서는 6가지 데이터 스트림 유형을 모두 지원합니다. 수집하려는 각 데이터 유형에 대해 별도의 데이터 스트림 구성을 만듭니다.

  • 위협 이벤트: 악성 네트워크 통신, 멀웨어, 위험한 앱을 비롯해 감지된 위협 이벤트
  • 네트워크 트래픽: Jamf의 네트워크 인프라에서 처리한 네트워크 트래픽 로그
  • 액세스 이벤트: Jamf Connect 제로 트러스트 네트워크 액세스 (ZTNA) 정책에서 허용되거나 거부된 요청
  • 기기 데이터: 기기에 관한 정보
  • 앱 통계: 기기에 설치된 애플리케이션에 관한 정보
  • 취약점 데이터: 발견된 각 취약점과 취약점이 발견된 기기에 관한 세부정보

방법 1: Google Cloud 스토리지

Jamf Security Cloud에는 기본 제공 Google Cloud 스토리지 대상이 없으며, HTTP 통합을 사용하여 Google SecOps로 직접 데이터를 전송하는 것은 지원되지 않습니다. 이 메서드는 일반 HTTP 데이터 스트림 타겟을 사용하여 소유한 Cloud Run 함수에 이벤트를 전송하며, 이 함수는 이벤트를 Google Cloud Storage 버킷에 기록합니다. 그런 다음 Google SecOps가 Google Cloud Storage V2 피드를 사용하여 버킷을 수집합니다.

스토리지 버킷 만들기 Google Cloud

  1. Google Cloud 콘솔로 이동합니다.
  2. 프로젝트를 선택하거나 새 프로젝트를 만듭니다.
  3. 탐색 메뉴에서 Cloud Storage> 버킷으로 이동합니다.
  4. 버킷 만들기를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.

    설정
    버킷 이름 지정 전역적으로 고유한 이름 (예: jamf-security-cloud-logs)을 입력합니다.
    위치 유형 필요에 따라 선택 (리전, 이중 리전, 멀티 리전)
    위치 위치를 선택합니다 (예: us-central1).
    스토리지 클래스 Standard (자주 액세스하는 로그에 권장)
    액세스 제어 균일 (권장)
    보호 조치 선택사항: 객체 버전 관리 또는 보관 정책 사용 설정
  6. 만들기를 클릭합니다.

Cloud Run 함수의 서비스 계정 만들기

  1. GCP 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
  2. 서비스 계정 만들기를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 서비스 계정 이름: jamf-sc-receiver-sa을 입력합니다.
    • 서비스 계정 설명: Service account for the Cloud Run function that receives Jamf Security Cloud events를 입력합니다.
  4. 만들고 계속하기를 클릭합니다.
  5. 완료를 클릭합니다.

서비스 계정에 버킷에 대한 액세스 권한 부여

  1. Cloud Storage> 버킷으로 이동합니다.
  2. 버킷 이름을 클릭합니다.
  3. 권한 탭으로 이동합니다.
  4. 액세스 권한 부여를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 주 구성원 추가: 서비스 계정 이메일 (예: jamf-sc-receiver-sa@PROJECT_ID.iam.gserviceaccount.com)을 입력합니다.
    • 역할 할당: 스토리지 객체 관리자 선택
  6. 저장을 클릭합니다.

이벤트를 수신하는 Cloud Run 함수 만들기

  1. 강력한 인증 토큰을 생성하고 나중에 참조할 수 있도록 저장합니다(예: openssl rand -hex 32 실행). Jamf Security Cloud는 요청 헤더에서 이 토큰을 전송하며 함수는 이 토큰이 없는 요청을 거부합니다.
  2. GCP 콘솔에서 Cloud Run으로 이동합니다.
  3. 서비스 만들기를 클릭합니다.
  4. 함수를 선택합니다 (인라인 편집기를 사용하여 함수 만들기).
  5. 구성 섹션에서 다음 구성 세부정보를 입력합니다.

    설정
    서비스 이름 jamf-sc-receiver
    리전 Cloud Storage 버킷과 일치하는 리전을 선택합니다 (예: us-central1).
    런타임 Python 3.12 이상 선택
  6. 인증 섹션에서 인증되지 않은 호출 허용을 선택합니다.

  7. 컨테이너, 네트워킹, 보안을 펼칩니다.

  8. 보안 탭으로 이동합니다.

    • 서비스 계정: jamf-sc-receiver-sa를 선택합니다.
  9. 컨테이너 탭으로 이동합니다.

    1. 변수 및 보안 비밀을 클릭합니다.
    2. 각 환경 변수에 대해 + 변수 추가를 클릭합니다.
    변수 이름 예시 값 설명
    GCS_BUCKET jamf-security-cloud-logs Cloud Storage 버킷 이름
    GCS_PREFIX jamf-security-cloud/ 로그 파일의 접두사
    AUTH_TOKEN <your-generated-token> Jamf Security Cloud가 X-Auth-Token 헤더에서 전송하는 토큰
  10. 만들기를 클릭합니다.

  11. 서비스가 생성될 때까지 기다립니다. 서비스가 생성되면 인라인 코드 편집기가 자동으로 열립니다.

  12. 진입점 필드에 main을 입력합니다.

  13. 인라인 코드 편집기에서 다음 두 파일을 만듭니다.

    • 첫 번째 파일: main.py

      import hashlib
      import os
      from datetime import datetime, timezone
      
      import functions_framework
      from google.cloud import storage
      
      BUCKET = os.environ["GCS_BUCKET"]
      PREFIX = os.environ.get("GCS_PREFIX", "jamf-security-cloud/")
      AUTH_TOKEN = os.environ["AUTH_TOKEN"]
      
      storage_client = storage.Client()
      
      @functions_framework.http
      def main(request):
              if request.headers.get("X-Auth-Token") != AUTH_TOKEN:
                      return ("Unauthorized", 401)
      
              body = request.get_data()
              if not body:
                      return ("OK", 200)
      
              now = datetime.now(timezone.utc)
              digest = hashlib.sha256(body).hexdigest()[:12]
              object_name = f"{PREFIX}{now:%Y/%m/%d}/{now:%Y%m%dT%H%M%S%f}_{digest}.json"
              storage_client.bucket(BUCKET).blob(object_name).upload_from_string(
                      body, content_type="application/json"
              )
              return ("OK", 200)
      
    • 두 번째 파일: requirements.txt

      functions-framework==3.*
      google-cloud-storage==2.*
      
  14. 저장 및 재배포를 클릭합니다.

  15. 서비스 URL (예: https://jamf-sc-receiver-abc123-uc.a.run.app)을 복사하여 저장합니다. 다음 섹션에서 호스트 이름을 사용합니다.

Jamf Security Cloud에서 일반 HTTP 데이터 스트림 구성

  1. Jamf Security Cloud 포털에 로그인합니다.
  2. 통합 > 데이터 스트림으로 이동합니다.
  3. 새 구성을 클릭합니다.
  4. 데이터 스트림 유형 (예: 위협 이벤트)을 선택합니다.
  5. 데이터 스트림 대상 유형으로 일반 HTTP를 선택합니다.
  6. 계속을 클릭합니다.
  7. 다음 구성 세부정보를 제공합니다.
    • 프로토콜: https를 선택합니다.
    • 서버 호스트 이름/IP: Cloud Run 서비스 호스트 이름 (예: jamf-sc-receiver-abc123-uc.a.run.app)을 입력합니다.
    • 포트: 443를 입력합니다.
    • 엔드포인트: /을 입력합니다.
    • 추가 헤더: 헤더 추가를 클릭하고 X-Auth-Token 이름을 입력한 후 생성된 토큰을 값으로 입력합니다.
  8. 구성 테스트를 클릭하고 테스트가 성공하는지 확인합니다.
  9. 구성 사용 설정 전환 버튼을 클릭하여 데이터 스트림을 활성화합니다.
  10. 저장을 클릭합니다.
  11. 내보내려는 추가 데이터 스트림 유형마다 이 단계를 반복합니다.

Google SecOps 서비스 계정 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정> 피드로 이동합니다.
  3. 새 피드 추가를 클릭합니다.
  4. 단일 피드 구성을 클릭합니다.
  5. 소스 유형으로 Google Cloud Storage V2를 선택합니다.
  6. 로그 유형으로 JAMF Security Cloud를 선택합니다.
  7. 서비스 계정 가져오기를 클릭합니다. 고유한 서비스 계정 이메일이 표시됩니다(예:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 이 이메일 주소를 복사합니다. 다음 단계에서 이를 사용합니다.

Google SecOps 서비스 계정에 버킷에 대한 액세스 권한 부여

  1. Cloud Storage> 버킷으로 이동합니다.
  2. 버킷 이름을 클릭합니다.
  3. 권한 탭으로 이동합니다.
  4. 액세스 권한 부여를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 주 구성원 추가: Google SecOps 서비스 계정 이메일 붙여넣기
    • 역할 할당: 스토리지 객체 뷰어를 선택합니다.
  6. 저장을 클릭합니다.

Google Cloud 스토리지에서 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정> 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Jamf Security Cloud logs).
  5. 소스 유형으로 Google Cloud Storage V2를 선택합니다.
  6. 로그 유형으로 JAMF Security Cloud를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    필드
    스토리지 버킷 URI gs://jamf-security-cloud-logs/jamf-security-cloud/
    소스 삭제 옵션 원하는 삭제 옵션을 선택합니다.
    최대 파일 경과 기간 (일) 기본값은 180일입니다.
    애셋 네임스페이스 애셋 네임스페이스
    수집 라벨 이 피드의 이벤트에 적용할 라벨입니다.
    • jamf-security-cloud-logs을 실제 버킷 이름으로 바꿉니다.
    • 항상 URI 끝에 후행 슬래시 (/)를 포함합니다.
  9. 다음을 클릭합니다.

  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

방법 2: Amazon S3

고객 소유 AWS S3는 Jamf Security Cloud Data Streams에서 기본적으로 지원하는 유일한 클라우드 스토리지 대상입니다. Jamf Security Cloud는 이벤트를 S3 버킷에 직접 작성하고 Google SecOps는 Amazon S3 V2 피드를 사용하여 이를 수집합니다.

Jamf Security Cloud용 AWS S3 버킷 및 IAM 역할 구성

  1. 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
  2. 나중에 참조할 수 있도록 버킷 이름리전을 저장합니다 (예: jamf-security-cloud-logs).
  3. Jamf Security Cloud가 버킷에 데이터를 업로드하기 위해 가정하는 IAM 역할을 만듭니다. 이 역할에는 버킷에 대한 s3:PutObject 권한과 신뢰할 수 있는 엔티티로 나열된 Jamf의 AWS 계정이 필요합니다.

  4. 나중에 참조할 수 있도록 IAM 역할 ARN을 저장합니다.

Jamf Security Cloud에서 고객 소유 AWS S3 데이터 스트림 구성

  1. Jamf Security Cloud 포털에 로그인합니다.
  2. 통합 > 데이터 스트림으로 이동합니다.
  3. 새 구성을 클릭합니다.
  4. 데이터 스트림 유형 (예: 위협 이벤트)을 선택합니다.
  5. 데이터 스트림 타겟 유형으로 고객 소유 AWS S3를 선택합니다.
  6. 계속을 클릭합니다.
  7. 다음 구성 세부정보를 제공합니다.
    • Amazon S3 버킷 이름: 버킷 이름 (예: jamf-security-cloud-logs)을 입력합니다.
    • Jamf에서 사용하는 IAM 역할: Jamf Security Cloud용으로 생성한 IAM 역할의 ARN을 입력합니다.
    • 리전: S3 버킷의 리전을 선택합니다.
  8. 구성 만들기를 클릭합니다.
  9. 선택사항: 고급 설정에서 메시지 형식으로 JSON을 선택합니다.

  10. 구성 사용 설정 전환 버튼을 클릭하여 데이터 스트림을 활성화합니다.

  11. 저장을 클릭합니다.

  12. 내보내려는 추가 데이터 스트림 유형마다 이 단계를 반복합니다.

Google SecOps용 IAM 사용자 및 액세스 키 만들기

  1. 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
  2. 생성된 사용자를 선택합니다.
  3. 보안용 사용자 인증 정보 탭을 선택합니다.
  4. 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
  5. 사용 사례서드 파티 서비스를 선택합니다.
  6. 다음을 클릭합니다.
  7. 선택사항: 설명 태그를 추가합니다.
  8. 액세스 키 만들기를 클릭합니다.
  9. .csv 파일 다운로드를 클릭하여 나중에 참고할 수 있도록 액세스 키보안 비밀 액세스 키를 저장합니다.
  10. 완료를 클릭합니다.
  11. 권한 탭을 선택합니다.
  12. 권한 정책 섹션에서 권한 추가를 클릭합니다.
  13. 권한 추가를 선택합니다.
  14. 정책 직접 연결을 선택합니다.
  15. AmazonS3FullAccess 정책을 검색합니다.
  16. 정책을 선택합니다.
  17. 다음을 클릭합니다.
  18. 권한 추가를 클릭합니다.

Amazon S3에서 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정> 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Jamf Security Cloud logs).
  5. 소스 유형으로 Amazon S3 V2를 선택합니다.
  6. 로그 유형으로 JAMF Security Cloud를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    필드
    S3 URI s3://jamf-security-cloud-logs/
    소스 삭제 옵션 원하는 삭제 옵션을 선택합니다.
    최대 파일 경과 기간 (일) 기본값은 180일입니다.
    액세스 키 ID S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키
    보안 비밀 액세스 키 S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키
    애셋 네임스페이스 애셋 네임스페이스
    수집 라벨 이 피드의 이벤트에 적용할 라벨입니다.
    • jamf-security-cloud-logs을 실제 S3 버킷 이름으로 바꿉니다.
  9. 다음을 클릭합니다.

  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
accessPoint_label additional.fields 병합됨
action_label additional.fields 병합됨
activated_label additional.fields 병합됨
alertId_label additional.fields 병합됨
appName_label additional.fields 병합됨
appRiskIndexThreshold_label additional.fields 병합됨
appVersion_label additional.fields 병합됨
app_id_label additional.fields 병합됨
carrierName_label additional.fields 병합됨
category_label additional.fields 병합됨
deploymentState_label additional.fields 병합됨
developer_label additional.fields 병합됨
deviceId_label additional.fields 병합됨
deviceModel_label additional.fields 병합됨
deviceName_label additional.fields 병합됨
deviceRiskIndex_label additional.fields 병합됨
device_os_label additional.fields 병합됨
device_user_name_label additional.fields 병합됨
eventTimeUtcMs_label additional.fields 병합됨
eventType_label additional.fields 병합됨
hwPlatform_label additional.fields 병합됨
imei_label additional.fields 병합됨
installationTimeUtcMs_label additional.fields 병합됨
installedBy_label additional.fields 병합됨
isoCountryCode_label additional.fields 병합됨
lastMdmCheckInUtcMs_label additional.fields 병합됨
lastNetworkTrafficUtcMs_label additional.fields 병합됨
lastUpdatedUtcMs_label additional.fields 병합됨
loc_isoCountryCode_label additional.fields 병합됨
mcc_label additional.fields 병합됨
mdmId_label additional.fields 병합됨
mnc_label additional.fields 병합됨
osVersion_label additional.fields 병합됨
packageName_label additional.fields 병합됨
parentId_label additional.fields 병합됨
parentId_label_1 additional.fields 병합됨
platform_label additional.fields 병합됨
profileId_label additional.fields 병합됨
profileName_label additional.fields 병합됨
profileStatus_label additional.fields 병합됨
recordType_label additional.fields 병합됨
resellerId_label additional.fields 병합됨
routeName_label additional.fields 병합됨
signatureId_id_label additional.fields 병합됨
signatureId_name_label additional.fields 병합됨
softwareId_label additional.fields 병합됨
softwareName_label additional.fields 병합됨
softwareVersion_label additional.fields 병합됨
ssid_label additional.fields 병합됨
system_label additional.fields 병합됨
threat_result_label additional.fields 병합됨
triggerTimeUtcMs_label additional.fields 병합됨
triggerType_label additional.fields 병합됨
types_list additional.fields 병합됨
userId_label additional.fields 병합됨
user_tld_label additional.fields 병합됨
vpnActive_label additional.fields 병합됨
wanderaAppVersion_label additional.fields 병합됨
wifiActive_label additional.fields 병합됨
event_data.receiptTime metadata.collected_timestamp 직접 매핑됨
event_data.cve.description metadata.description 직접 매핑됨
event_data_event_dataType_description metadata.description 직접 매핑됨
event_data.timestamp metadata.event_timestamp yyyy-MM-ddTHH:mm:ss.SSSZ로 파싱됨
has_principal metadata.event_type 매핑됨: trueSTATUS_UPDATE
has_user metadata.event_type 매핑됨: trueUSER_UNCATEGORIZED
event_data.md1.product metadata.product_event_type 직접 매핑됨
md1.product metadata.product_event_type 직접 매핑됨
event_data.device.externalId metadata.product_log_id 직접 매핑됨
event_data.externalId metadata.product_log_id 직접 매핑됨
md1.product metadata.product_name 직접 매핑됨
event_data.md1.schemaVersion metadata.product_version 직접 매핑됨
schemaVersion metadata.product_version 직접 매핑됨
dns_answers network.dns.answers 병합됨
dns_questions network.dns.questions 병합됨
event_data.domain principal.administrative_domain 직접 매핑됨
event_data.application principal.application 직접 매핑됨
event_data.hostName principal.asset.hostname 직접 매핑됨
event_data.source.ip principal.asset.ip 병합됨
event_data.device.userDeviceName principal.hostname 직접 매핑됨
event_data.hostName principal.hostname 직접 매핑됨
event_data.source.ip principal.ip 병합됨
event_data.source.port principal.port 이름이 변경됨/매핑됨
event_data_event_dataType_id principal.process.pid 직접 매핑됨
event_data.cve.consoleUrl principal.url 직접 매핑됨
event_data.event_dataUrl principal.url 직접 매핑됨
device.user.email principal.user.email_addresses 병합됨
event_data.user.userEmail principal.user.email_addresses 병합됨
event_data.account.name principal.user.user_display_name 직접 매핑됨
event_data.user.userName principal.user.user_display_name 직접 매핑됨
customer.customerId principal.user.userid 직접 매핑됨
customerId principal.user.userid 직접 매핑됨
device.user.email principal.user.userid 직접 매핑됨
event_data.account.customerId principal.user.userid 직접 매핑됨
event_data.customerId principal.user.userid 직접 매핑됨
actionforBlocked security_result.action 병합됨
event_data_event_dataType_name security_result.description 직접 매핑됨
attribution_label security_result.detection_fields 병합됨
baseScore_label security_result.detection_fields 병합됨
cve_id_label security_result.detection_fields 병합됨
exploitAvailable_label security_result.detection_fields 병합됨
permission_label security_result.detection_fields 병합됨
threats_label security_result.detection_fields 병합됨
event_data.cve.severity security_result.severity 직접 매핑됨
event_data.blockReason security_result.summary 직접 매핑됨
event_data.cve.cveDetailUrl security_result.url_back_to_product 직접 매핑됨
event_data.device.deviceId target.asset.asset_id 직접 매핑됨
event_data.destination.name target.asset.hostname 직접 매핑됨
device.carrier.ipAddress target.asset.ip 병합됨
device.network.assignedIp target.asset.ip 병합됨
device.network.publicIp target.asset.ip 병합됨
event_data.destination.ip target.asset.ip 병합됨
event_data.destinationIp target.asset.ip 병합됨
ip target.asset.ip 병합됨
app_id_md5 target.file.md5 직접 매핑됨
app_id_sha1 target.file.sha1 직접 매핑됨
app_id_sha256 target.file.sha256 직접 매핑됨
event_data.destination.name target.hostname 직접 매핑됨
device.carrier.ipAddress target.ip 병합됨
device.network.assignedIp target.ip 병합됨
device.network.publicIp target.ip 병합됨
event_data.destination.ip target.ip 병합됨
event_data.destinationIp target.ip 병합됨
ip target.ip 병합됨
device.location.countryName target.location.country_or_region 직접 매핑됨
event_data.location target.location.name 직접 매핑됨
device.hw.wifiMacAddress target.mac 병합됨
device.network.bssid target.mac 병합됨
event_data.accessPointBssid target.mac 병합됨
event_data_device_os_osVersion target.platform_version 직접 매핑됨
event_data.destination.port target.port 이름이 변경됨/매핑됨
event_data.device.deviceName target.resource.name 직접 매핑됨
event_data.user.email target.user.email_addresses 병합됨
event_data.user.email target.user.userid 직접 매핑됨
event_data.user.name target.user.userid 직접 매핑됨
해당 사항 없음 metadata.event_type 상수: STATUS_UPDATE
해당 사항 없음 metadata.product_name 상수: JAMF_SECURITY_CLOUD
해당 사항 없음 metadata.vendor_name 상수: JAMF_SECURITY_CLOUD
해당 사항 없음 security_result.severity 상수: INFORMATIONAL
해당 사항 없음 target.platform 상수: WINDOWS

변경 로그

이 파서의 변경 로그 보기

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.