Atlassian Jira 로그 수집
개요
이 파서는 SYSLOG 및 JSON 형식의 Atlassian Jira 로그를 처리합니다. 먼저 메시지를 JSON으로 파싱하려고 시도합니다. 이 작업이 실패하면 grok 패턴을 사용하여 SYSLOG 형식 메시지를 파싱하고 IP 주소, 사용자 이름, HTTP 메서드, 응답 코드와 같은 다양한 필드를 추출한 후 UDM에 매핑합니다. 파서는 로그인 성공 및 실패를 비롯한 특정 Jira 감사 이벤트도 처리하고 관련 필드를 UDM 내 보안 결과 속성에 매핑합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Atlassian Jira에 대한 액세스 권한.
SIEM 설정 > 피드에서 피드 설정
피드를 구성하려면 다음 단계를 따르세요.
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: Atlassian Jira 로그).
- 소스 유형으로 웹훅을 선택합니다.
- 로그 유형으로 Atlassian Jira를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
\n
). - 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
- 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
- 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업으로 인해 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
- 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
- 완료를 클릭합니다.
웹훅 피드에 대한 API 키 만들기
- Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.
- 사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
- Google Security Operations API에 대한 API 키 액세스를 제한합니다.
엔드포인트 URL 지정
- 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
다음 형식의 커스텀 헤더의 일부로 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에서 웹훅 만들기
- 관리자로 Jira 인스턴스에 액세스합니다.
- 설정 settings > 시스템 > WebHooks로 이동합니다.
- 웹훅 만들기를 클릭합니다.
- 다음 웹훅 세부정보를 구성합니다.
- 이름: 웹훅을 설명하는 이름을 입력합니다 (예: Google SecOps 통합).
- URL: Google SecOps API 엔드포인트 URL을 입력합니다.
- 이벤트: 웹훅을 트리거해야 하는 Jira 이벤트를 선택합니다. 보안 모니터링 요구사항과 관련된 이벤트를 선택합니다 (예: 문제 생성, 문제 업데이트, 댓글 추가). 필요한 경우 모든 이벤트를 선택할 수 있습니다.
- 선택사항: JQL 필터: JQL 필터를 사용하여 웹훅을 트리거하는 이벤트를 더 세부적으로 조정합니다. 이는 특정 프로젝트, 문제 유형 또는 기타 기준에 집중하는 데 유용합니다.
- 본문 제외: 선택 해제 상태로 둡니다. 웹훅은 이벤트 데이터를 JSON 형식으로 Google SecOps에 전송해야 합니다.
- 만들기를 클릭하여 웹훅 구성을 저장합니다.
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.action 및 metadata.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 전문가로부터 답변을 받으세요.