Atlassian Jira 로그 수집

다음에서 지원:

개요

이 파서는 SYSLOG 및 JSON 형식의 Atlassian Jira 로그를 처리합니다. 먼저 메시지를 JSON으로 파싱하려고 시도합니다. 이 작업이 실패하면 grok 패턴을 사용하여 SYSLOG 형식 메시지를 파싱하고 IP 주소, 사용자 이름, HTTP 메서드, 응답 코드와 같은 다양한 필드를 추출한 후 UDM에 매핑합니다. 파서는 로그인 성공 및 실패를 비롯한 특정 Jira 감사 이벤트도 처리하고 관련 필드를 UDM 내 보안 결과 속성에 매핑합니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • Atlassian Jira에 대한 액세스 권한.

SIEM 설정 > 피드에서 피드 설정

피드를 구성하려면 다음 단계를 따르세요.

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다 (예: Atlassian Jira 로그).
  5. 소스 유형으로 웹훅을 선택합니다.
  6. 로그 유형으로 Atlassian Jira를 선택합니다.
  7. 다음을 클릭합니다.
  8. 선택사항: 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예: \n).
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
  9. 다음을 클릭합니다.
  10. 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
  11. 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
  12. 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업으로 인해 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
  13. 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
  14. 완료를 클릭합니다.

웹훅 피드에 대한 API 키 만들기

  1. Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.
  2. 사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
  3. Google Security Operations API에 대한 API 키 액세스를 제한합니다.

엔드포인트 URL 지정

  1. 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
  2. 다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    권장사항: URL에 지정하는 대신 API 키를 헤더로 지정하세요. 웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 쿼리 파라미터를 다음 형식으로 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

다음을 바꿉니다.

  • ENDPOINT_URL: 피드 엔드포인트 URL입니다.
  • API_KEY: Google Security Operations에 인증하기 위한 API 키입니다.
  • SECRET: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.

Google SecOps용 Atlassian Jira에서 웹훅 만들기

  1. 관리자로 Jira 인스턴스에 액세스합니다.
  2. 설정 settings > 시스템 > WebHooks로 이동합니다.
  3. 웹훅 만들기를 클릭합니다.
  4. 다음 웹훅 세부정보를 구성합니다.
    • 이름: 웹훅을 설명하는 이름을 입력합니다 (예: Google SecOps 통합).
    • URL: Google SecOps API 엔드포인트 URL을 입력합니다.
    • 이벤트: 웹훅을 트리거해야 하는 Jira 이벤트를 선택합니다. 보안 모니터링 요구사항과 관련된 이벤트를 선택합니다 (예: 문제 생성, 문제 업데이트, 댓글 추가). 필요한 경우 모든 이벤트를 선택할 수 있습니다.
    • 선택사항: JQL 필터: JQL 필터를 사용하여 웹훅을 트리거하는 이벤트를 더 세부적으로 조정합니다. 이는 특정 프로젝트, 문제 유형 또는 기타 기준에 집중하는 데 유용합니다.
    • 본문 제외: 선택 해제 상태로 둡니다. 웹훅은 이벤트 데이터를 JSON 형식으로 Google SecOps에 전송해야 합니다.
  5. 만들기를 클릭하여 웹훅 구성을 저장합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
affectedObjects.id target.resource.attribute.labels.value affectedObjects 배열의 각 객체 내에 있는 id 필드는 키가 'ID_[index]'인 라벨에 매핑됩니다. 여기서 [index] 는 배열 내 객체의 위치입니다.
affectedObjects.name target.resource.attribute.labels.value affectedObjects 배열의 각 객체 내 name 필드는 키가 'Name_[index]'인 라벨에 매핑됩니다. 여기서 [index] 는 배열 내 객체의 위치입니다.
affectedObjects.type target.resource.attribute.labels.value affectedObjects 배열의 각 객체 내 type 필드는 키가 'Type_[index]'인 라벨에 매핑됩니다. 여기서 [index] 는 배열 내 객체의 위치입니다.
associatedItems.0.id target.user.userid associatedItems.0.typeName이 'USER'인 경우 이 필드는 target.user.userid에 매핑됩니다. 그렇지 않으면 security_result.detection_fields의 키가 'associatedItems Id'인 라벨에 매핑됩니다.
associatedItems.0.name target.user.user_display_name associatedItems.0.typeName이 'USER'인 경우 이 필드는 target.user.user_display_name에 매핑됩니다. 그렇지 않으면 security_result.detection_fields에서 키가 'associatedItems Name'인 라벨에 매핑됩니다.
associatedItems.0.parentId target.process.parent_process.pid associatedItems.0.typeName이 'USER'인 경우 이 필드는 target.process.parent_process.pid에 매핑됩니다.
associatedItems.0.parentName target.resource.parent associatedItems.0.typeName이 'USER'인 경우 이 필드는 target.resource.parent에 매핑됩니다.
associatedItems.0.typeName security_result.detection_fields.value security_result.detection_fields에서 키가 'associatedItems TypeName'인 라벨에 매핑되었습니다.
author.id principal.user.userid principal.user.userid에 매핑됩니다.
author.name principal.user.user_display_name principal.user.user_display_name에 매핑됩니다.
author.type principal.resource.attribute.labels.value principal.resource.attribute.labels에서 키가 'Author Type'인 라벨에 매핑됩니다.
author.uri principal.url principal.url에 매핑됩니다.
authorAccountId principal.user.userid principal.user.userid에 매핑됩니다.
authorKey target.resource.attribute.labels.value target.resource.attribute.labels에서 키가 'Author Key'인 라벨에 매핑되었습니다.
auditType.action security_result.summary security_result.summary에 매핑됩니다. security_result.actionmetadata.event_type (작업에 'login'이 포함된 경우 USER_LOGIN, 'successful'인 경우 ALLOW, 'failed'인 경우 BLOCK)을 파생하는 데도 사용됩니다.
auditType.area metadata.product_event_type metadata.product_event_type에 매핑됩니다.
auditType.category security_result.category_details security_result.category_details에 매핑됩니다.
category metadata.product_event_type metadata.product_event_type에 매핑됩니다.
changedValues.changedFrom security_result.about.resource.attribute.labels.value security_result.about.resource.attribute.labels에서 키가 'Changed From'인 라벨에 매핑되었습니다.
changedValues.changedTo security_result.about.resource.attribute.labels.value security_result.about.resource.attribute.labels에서 키가 'Changed To'인 라벨에 매핑되었습니다.
changedValues.fieldName security_result.about.resource.attribute.labels.value security_result.about.resource.attribute.labels의 키가 'FieldName'인 라벨에 매핑되었습니다.
changedValues.i18nKey security_result.about.resource.attribute.labels.value security_result.about.resource.attribute.labels의 키가 'FieldName'인 라벨에 매핑되었습니다.
changedValues.key security_result.about.resource.attribute.labels.value security_result.about.resource.attribute.labels에서 키가 'Changed From'인 라벨에 매핑되었습니다.
changedValues.to security_result.about.resource.attribute.labels.value security_result.about.resource.attribute.labels에서 키가 'Changed To'인 라벨에 매핑되었습니다.
created metadata.event_timestamp metadata.event_timestamp에 파싱되고 매핑됩니다.
dst_ip target.ip target.ip에 매핑됩니다.
extraAttributes.name principal.resource.attribute.labels.value principal.resource.attribute.labels에서 키가 'Name'인 라벨에 매핑되었습니다.
extraAttributes.value principal.resource.attribute.labels.value principal.resource.attribute.labels에서 키가 'Value'인 라벨에 매핑됩니다.
http_method network.http.method network.http.method에 매핑됩니다.
http_referral_url network.http.referral_url network.http.referral_url에 매핑됩니다.
id metadata.product_log_id metadata.product_log_id에 매핑됩니다.
objectItem.id security_result.detection_fields.value security_result.detection_fields에서 키가 'objectItem Id'인 라벨에 매핑되었습니다.
objectItem.name security_result.detection_fields.value security_result.detection_fields에서 키가 'objectItem Name'인 라벨에 매핑되었습니다.
objectItem.typeName security_result.detection_fields.value security_result.detection_fields에서 키가 'objectItem TypeName'인 라벨에 매핑되었습니다.
path principal.url '-' 또는 '/status'가 아닌 경우 principal.url에 매핑됩니다.
protocol network.ip_protocol 'HTTP'인 경우 network.ip_protocol에 매핑됩니다.
remoteAddress principal.ip principal.ip에 매핑됩니다.
response_code network.http.response_code network.http.response_code에 매핑됩니다.
sent_bytes network.sent_bytes network.sent_bytes에 매핑됩니다.
source principal.ip IP 주소를 추출하기 위해 파싱되었으며 principal.ip로 병합되었습니다.
src_ip1, src_ip2, src_ip3 principal.ip principal.ip에 매핑됩니다.
summary metadata.description metadata.description에 매핑됩니다.
user_agent network.http.user_agent network.http.user_agent에 매핑됩니다.
user_name principal.user.userid principal.user.userid에 매핑됩니다. auditType.action에 'login'이 포함된 경우 'MACHINE'으로 설정합니다. syslog를 파싱하는 경우 date_time에서 파생되고 JSON을 파싱하는 경우 created에서 파생됩니다. timestamp이 JSON으로 제공되는 경우 created 대신 사용됩니다. 이러한 항목이 없으면 배치에서 create_time가 사용됩니다. 다른 필드의 존재에 따라 파생됩니다. dst_ip가 있으면 NETWORK_HTTP, user_name 또는 (associatedItems.0.typeName이 'USER'이고 associatedItems.0.id가 있음)이 있으면 USER_UNCATEGORIZED, src_ip1, src_ip2, src_ip3 또는 remoteAddress이 있으면 STATUS_UPDATE, 그 외의 경우에는 GENERIC_EVENT입니다. auditType.action에 'login'이 포함된 경우 USER_LOGIN으로 재정의됩니다. 항상 'ATLASSIAN_JIRA'로 설정됩니다. 항상 'ATLASSIAN_JIRA'로 설정됩니다. auditType.action에 '로그인 성공'이 포함된 경우 'ALLOW'로 설정하고 auditType.action에 '로그인 실패'가 포함된 경우 'BLOCK'으로 설정합니다.

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