Jenkins 로그 수집

다음에서 지원:

개요

이 파서는 JSON 및 SYSLOG 형식의 로그에서 타임스탬프, 사용자 ID, 소스 IP, 작업, 객체 ID와 같은 주요 정보를 추출합니다. grok 패턴을 사용하여 다양한 로그 메시지 형식을 일치시키고, 구조의 변형을 처리하며, 추출된 필드로 통합 데이터 모델 (UDM)을 채웁니다. 또한 파서는 사용자 또는 IP 정보의 존재 여부에 따라 이벤트를 분류합니다.

시작하기 전에

  • Google SecOps 인스턴스가 있는지 확인합니다.
  • Google Cloud IAM에 대한 액세스 권한이 있는지 확인합니다.
  • Google Cloud Storage에 대한 액세스 권한이 있는지 확인합니다.
  • Jenkins에 대한 권한이 있는지 확인합니다.

Google Cloud Storage 버킷 만들기

  1. Cloud Storage로 이동합니다.
  2. 새 버킷을 만듭니다. 고유한 이름과 적절한 리전을 선택합니다.
  3. 버킷에 적절한 액세스 제어 기능이 있는지 확인합니다 (예: 승인된 서비스 계정만 버킷에 쓸 수 있음).

Google Cloud 서비스 계정 만들기

  1. IAM 및 관리자 > 서비스 계정으로 이동합니다.
  2. 새 서비스 계정 만들기 설명이 포함된 이름을 지정합니다 (예: jenkins-logs).
  3. 이전 단계에서 만든 GCS 버킷에 대한 스토리지 객체 생성자 역할을 서비스 계정에 부여합니다.
  4. 서비스 계정의 SSH 키를 만듭니다. 서비스 계정 키 생성 및 삭제
  5. 서비스 계정의 JSON 키 파일을 다운로드합니다.

Jenkins에 Google Cloud Storage 플러그인 설치

  1. Jenkins 관리 > 플러그인으로 이동합니다.
  2. 사용 가능한 플러그인을 선택합니다.
  3. Google Cloud Storage 플러그인을 검색합니다.
  4. 필요한 경우 플러그인을 설치하고 Jenkins를 다시 시작합니다.

Jenkins에 Google OAuth 사용자 인증 정보 플러그인 설치

  1. Jenkins 관리 > 플러그인으로 이동합니다.
  2. 사용 가능한 플러그인을 선택합니다.
  3. Google OAuth 사용자 인증 정보 플러그인을 검색합니다.
  4. 필요한 경우 플러그인을 설치하고 Jenkins를 다시 시작합니다.

Google Cloud로 인증하도록 Jenkins 구성

  1. Jenkins 관리 > 사용자 인증 정보 > 시스템으로 이동합니다.

  2. 추가 사용자 인증 정보 추가를 클릭합니다.

  3. 종류: 비공개 키의 Google 서비스 계정을 선택합니다.

  4. 프로젝트 이름: 사용자 인증 정보의 이름을 설정합니다.

  5. Google Cloud 서비스 계정 생성 중에 가져온 JSON 키 파일을 업로드합니다.

  6. 만들기를 클릭합니다.

Google SecOps를 업로드하도록 Jenkins 로그 구성

  1. Jenkins 작업 구성에서 빌드 후 작업에 다음 매개변수를 사용하여 Google Storage Build Log Upload를 추가합니다.
    • Google 사용자 인증 정보: 이전 단계에서 만든 Google 사용자 인증 정보의 이름입니다.
    • 로그 이름: 지정된 저장소 경로에 Jenkins 빌드 로그를 저장할 파일의 이름입니다.
    • 저장소 위치: 로그를 업로드할 버킷의 이름입니다. 만든 서비스 계정에서 버킷에 액세스할 수 있어야 합니다.
  2. 로그 업로드를 테스트합니다.

Jenkins 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새로 추가를 클릭합니다.
  3. 피드 이름 필드에 피드 이름을 입력합니다 (예: Jenkins 로그).
  4. 소스 유형으로 Google Cloud Storage를 선택합니다.
  5. 로그 유형으로 Jenkins를 선택합니다.
  6. Chronicle 서비스 계정으로 서비스 계정 가져오기를 클릭합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    • 스토리지 버킷 URI: gs://my-bucket/<value> 형식의 Google Cloud Storage 버킷 URL입니다.
    • URI: 하위 디렉터리가 포함된 디렉터리를 선택합니다.
    • 소스 삭제 옵션: 원하는 삭제 옵션을 선택합니다.
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
  9. 다음을 클릭합니다.

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

UDM 매핑 표

로그 필드 UDM 매핑 논리
act security_result.action_details msg1 또는 msg2 필드에서 추출됩니다. 실행된 작업을 나타냅니다. 선행 공백이 삭제됩니다.
data principal.user.userid 또는 principal.ip 또는 metadata.description 데이터가 IP 주소 패턴과 일치하면 principal.ip에 매핑됩니다. 사용자 이름 패턴과 일치하면 principal.user.userid에 매핑됩니다. 그렇지 않으면 metadata.description에 매핑됩니다.
msg1 target.asset.product_object_id 또는 security_result.action_details objectact를 추출하는 데 사용됩니다. /가 있으면 objectact로 분할됩니다. »가 있으면 objectact로 분할됩니다. 그 외의 경우에는 act로 취급되어 추가로 파싱될 수 있습니다.
msg2 metadata.description 또는 security_result.action_details 있는 경우 처음에는 metadata.description에 매핑됩니다. 'completed:'가 포함된 경우 그 뒤의 값이 추출되어 security_result.action_details에 매핑됩니다.
객체 target.asset.product_object_id msg1에서 추출되었습니다. 작업을 수행하는 객체를 나타냅니다.
object_id target.resource.attribute.labels.value /가 있는 경우 객체에서 추출됩니다. 더 구체적인 객체 식별자를 나타냅니다. 키는 '플러그인 이름'으로 하드코딩됩니다.
src_ip principal.ip message 또는 data에서 추출됩니다. 소스 IP 주소를 나타냅니다.
사용자 principal.user.userid message 또는 data에서 추출됩니다. 이벤트와 연결된 사용자를 나타냅니다.
metadata.event_timestamp 계산된 @timestamp 필드에서 복사됩니다.
metadata.event_type 파서 로직에 따라 결정됩니다. user가 있는 경우 USER_UNCATEGORIZED로, src_ip가 있는 경우 STATUS_UNCATEGORIZED로, 그 밖의 경우에는 GENERIC_EVENT로 설정합니다.
metadata.product_name Jenkins로 하드코딩됩니다.
metadata.product_version Jenkins로 하드코딩됩니다.
metadata.vendor_name JENKINS로 하드코딩됩니다.
metadata.event_timestamp year, month, day, time, ampm 필드로 구성됩니다.

변경사항

2023-11-27

  • 파서를 새로 만들었습니다.