CircleCI 감사 로그 수집

파서 버전: 2.0

다음에서 지원:

이 파서는 CSV 및 JSON 형식의 CircleCI 감사 로그에서 필드를 추출하여 통합 데이터 모델(UDM)로 변환합니다. 두 형식을 모두 처리하고, 데이터 변환 및 보강을 수행하며, 추출된 필드를 이벤트 객체 내의 해당 UDM 필드에 매핑합니다. 사용자 작업, 리소스 액세스, 업데이트 이벤트에 중점을 두고 이를 분류하고 주 구성원, 대상, 네트워크, 메타데이터와 같은 관련 UDM 필드를 채웁니다.

시작하기 전에

다음 기본 요건을 충족하는지 확인합니다.

  • Google SecOps 인스턴스
  • CircleCI에 대한 권한 있는 액세스

피드 설정

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

  1. 설정 > 데이터 관리 > 피드로 이동합니다. SIEM 전용 플랫폼을 사용하는 경우 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: CircleCI 로그).
  5. 소스 유형으로 웹훅을 선택합니다.
  6. 로그 유형으로 CircleCI를 선택합니다.
  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
    

    권장사항: API 키를 URL에 지정하는 대신 헤더로 지정합니다.

  3. 웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 쿼리 매개변수를 다음 형식으로 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    다음을 바꿉니다.

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

CircleCI에서 웹훅 구성

  1. CircleCI 웹 인터페이스에 로그인합니다.
  2. 로그를 수집할 프로젝트를 선택합니다.
  3. 프로젝트 설정을 클릭합니다.
  4. 웹훅을 선택합니다.
  5. 웹훅 추가를 클릭합니다.
  6. 다음 입력 파라미터의 값을 지정합니다.

    • 웹훅 이름: 설명이 포함된 이름을 입력합니다(예: Google SecOps).
    • 엔드포인트 URL: Google SecOps API 엔드포인트의 <ENDPOINT_URL>를 입력합니다.
    • 이벤트: 웹훅을 트리거할 CircleCI 이벤트를 선택합니다(예: 워크플로가 완료된 후 데이터를 전송하려면 workflow-completed 선택).
  7. 저장을 클릭하여 웹훅을 만듭니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 로직
account.id read_only_udm.about.resource.attribute.labels.value 원시 로그의 account.id 값은 해당 key가 account_id인 UDM 필드 read_only_udm.about.resource.attribute.labels.value에 할당됩니다.
작업 read_only_udm.metadata.product_event_type 원시 로그의 action 값이 UDM 필드 read_only_udm.metadata.product_event_type에 할당됩니다.
actor.id read_only_udm.principal.user.product_object_id 원시 로그의 actor.id 값이 UDM 필드 read_only_udm.principal.user.product_object_id에 할당됩니다.
actor.name read_only_udm.principal.user.userid 'github: ' 프리픽스가 원시 로그의 actor.name 필드에서 삭제됩니다. 나머지 값은 UDM 필드 read_only_udm.principal.user.userid에 할당됩니다. 원시 로그에 actor.name이 있으면 USER_RESOURCE_UPDATE_CONTENT 값이 read_only_udm.metadata.event_type에 할당됩니다. 그렇지 않으면 USER_RESOURCE_ACCESS가 할당됩니다.
id read_only_udm.metadata.product_log_id 원시 로그의 id 값이 UDM 필드 read_only_udm.metadata.product_log_id에 할당됩니다. 파서는 read_only_udm.metadata.log_type을 CIRCLECI로 설정합니다. 파서는 read_only_udm.metadata.product_name을 CIRCLECI로 설정합니다. 파서는 read_only_udm.metadata.vendor_name을 CIRCLECI로 설정합니다.
occurred_at read_only_udm.metadata.event_timestamp 원시 로그의 occurred_at 값이 타임스탬프로 파싱되고 UDM 필드 read_only_udm.metadata.event_timestamp에 할당됩니다.
organization.name read_only_udm.target.administrative_domain 'github: ' 프리픽스가 원시 로그의 organization.name 필드에서 삭제됩니다. 나머지 값은 UDM 필드 read_only_udm.target.administrative_domain에 할당됩니다.
payload.job.id read_only_udm.about.resource.attribute.labels.value 원시 로그의 payload.job.id 값은 해당 key가 job_id인 UDM 필드 read_only_udm.about.resource.attribute.labels.value에 할당됩니다.
payload.job.job_name read_only_udm.about.resource.attribute.labels.value 원시 로그의 payload.job.job_name 값은 해당 key가 job_name인 UDM 필드 read_only_udm.about.resource.attribute.labels.value에 할당됩니다.
payload.job.job_status read_only_udm.about.resource.attribute.labels.value 원시 로그의 payload.job.job_status 값은 해당 key가 job_status인 UDM 필드 read_only_udm.about.resource.attribute.labels.value에 할당됩니다.
payload.workflow.id read_only_udm.about.resource.attribute.labels.value 원시 로그의 payload.workflow.id 값은 해당 key가 workflow_id인 UDM 필드 read_only_udm.about.resource.attribute.labels.value에 할당됩니다.
request.id read_only_udm.network.session_id 원시 로그의 request.id 값이 UDM 필드 read_only_udm.network.session_id에 할당됩니다.
scope.id read_only_udm.about.resource.attribute.labels.value 원시 로그의 scope.id 값은 해당 key가 scope_id인 UDM 필드 read_only_udm.about.resource.attribute.labels.value에 할당됩니다. 파서는 처음에 sec_action을 BLOCK으로 설정합니다. 원시 로그의 success 필드가 true이면 sec_action이 ALLOW로 변경됩니다. sec_action 값은 UDM 필드 read_only_udm.security_result.action에 할당됩니다.
target.id read_only_udm.target.resource.product_object_id 원시 로그의 target.id 값이 UDM 필드 read_only_udm.target.resource.product_object_id에 할당됩니다.
target.name read_only_udm.target.resource.name 원시 로그의 target.name 필드에서 'github: ' 프리픽스가 삭제됩니다. 나머지 값은 UDM 필드 read_only_udm.target.resource.name에 할당됩니다. 파서는 read_only_udm.target.resource.resource_type을 STORAGE_OBJECT로 설정합니다.
version read_only_udm.target.resource.attribute.labels.value 원시 로그의 version 값이 문자열로 변환되고 해당 key가 version인 UDM 필드 read_only_udm.target.resource.attribute.labels.value에 할당됩니다.

변경 로그

이 파서의 변경 로그 보기

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