InfoGrab Docs

보안 메트릭 및 KPI

요약

이 문서는 GitLab 보안 메트릭 및 KPI 솔루션 컴포넌트의 설치, 구성 및 사용 가이드를 설명합니다. 이 솔루션은 GraphQL API를 사용하여 GitLab 프로젝트 또는 그룹에서 취약점 데이터를 내보내고, HTTP Event Collector(HEC)를 통해 Splunk로 전송하며, 보안 메트릭 시각화를 위한 기본 제공 대시보드를 포함합니다.

이 문서는 GitLab 보안 메트릭 및 KPI 솔루션 컴포넌트의 설치, 구성 및 사용 가이드를 설명합니다. 이 보안 솔루션 컴포넌트는 비즈니스 단위, 시간 범위, 취약점 심각도 및 보안 유형별로 볼 수 있는 메트릭과 KPI를 제공합니다. PDF 문서를 통해 월별 또는 분기별 보안 현황의 스냅샷을 제공할 수 있습니다. 데이터는 Splunk의 대시보드를 사용하여 시각화됩니다.

보안 메트릭 및 KPI

이 솔루션은 GraphQL API를 사용하여 GitLab 프로젝트 또는 그룹에서 취약점 데이터를 내보내고, HTTP Event Collector(HEC)를 통해 Splunk로 전송하며, 보안 메트릭 시각화를 위한 기본 제공 대시보드를 포함합니다. 내보내기 프로세스는 예약된 GitLab CI/CD 파이프라인으로 실행되도록 설계되었습니다.

시작하기#

솔루션 컴포넌트 다운로드#

  1. 계정 팀에서 초대 코드를 받으세요.
  2. 초대 코드를 사용하여 솔루션 컴포넌트 웹스토어에서 솔루션 컴포넌트를 다운로드하세요.

솔루션 컴포넌트 프로젝트 설정#

  1. 이 내보내기를 호스팅할 새 GitLab 프로젝트를 만드세요.
  2. 제공된 파일을 프로젝트에 복사하세요:
    • export_vulns.py
    • send_to_splunk.py
    • requirements.txt
    • .gitlab-ci.yml
  3. 프로젝트 설정에서 필요한 CI/CD 변수를 구성하세요.
  4. 파이프라인 일정을 설정하세요 (예: 일별 또는 주별).

작동 방식#

솔루션은 두 가지 주요 컴포넌트로 구성됩니다:

  1. GitLab 보안 대시보드에서 데이터를 가져오는 취약점 내보내기
  2. 내보낸 데이터를 처리하여 Splunk HEC로 전송하는 Splunk 수집기

파이프라인은 두 단계로 실행됩니다:

  1. extract: 취약점을 가져와 CSV로 저장
  2. ingest: 취약점 데이터를 Splunk로 전송

구성#

필수 CI/CD 변수#

변수 설명 예시 값
SCOPE 취약점 스캐닝의 대상 범위 group:security/appsec 또는 security/my-project
GRAPHQL_API_TOKEN API 액세스 권한이 있는 GitLab 개인 액세스 토큰 glpat-XXXXXXXXXXXXXXXX
GRAPHQL_API_URL GitLab GraphQL API URL https://gitlab.com/api/graphql
SPLUNK_HEC_TOKEN Splunk HTTP Event Collector 토큰 11111111-2222-3333-4444-555555555555
SPLUNK_HEC_URL Splunk HEC 엔드포인트 URL https://splunk.company.com:8088/services/collector

선택적 CI/CD 변수#

변수 설명 예시 값 기본값
SEVERITY_FILTER 심각도 수준의 쉼표로 구분된 목록 CRITICAL,HIGH,MEDIUM 모든 심각도
VULN_TIME_WINDOW 취약점 수집의 시간 창 24h, 7d, 또는 all 24h

범위 구성#

SCOPE 변수는 스캔할 프로젝트 또는 그룹을 결정합니다:

  • 프로젝트의 경우: mygroup/myproject
  • 그룹의 경우: group:mygroup/subgroup
  • 전체 인스턴스의 경우: instance

심각도 필터 예시#

유효한 심각도 수준:

  • CRITICAL
  • HIGH
  • MEDIUM
  • LOW
  • UNKNOWN

예시 조합:

  • CRITICAL,HIGH
  • CRITICAL,HIGH,MEDIUM
  • 모든 심각도를 포함하려면 비워두세요

시간 창 구성#

VULN_TIME_WINDOW 변수는 취약점을 얼마나 과거까지 조회할지를 제어합니다:

  • 형식: <숫자><단위> 여기서:
    • 숫자: 양의 정수
    • 단위: 시간은 h, 일은 d
  • 예시:
    • 24h: 지난 24시간
    • 7h: 지난 7시간
    • 15d: 지난 15일
    • 30d: 지난 30일
    • all: 모든 취약점 (첫 실행에 유용)

기본값: 24h

예시 파이프라인 구성:

# 12시간 창의 경우
variables:
  VULN_TIME_WINDOW: "12h"

# 3일 창의 경우
variables:
  VULN_TIME_WINDOW: "3d"

# 모든 취약점의 경우
variables:
  VULN_TIME_WINDOW: "all"

선택한 창을 기반으로 파이프라인을 예약하세요. 예를 들어:

  • 12h의 경우: 하루에 두 번 예약
  • 3d의 경우: 3일마다 예약
  • 취약점이 누락되지 않도록 예약에 약간의 겹침을 추가하세요

파이프라인 설정#

  1. 첫 실행:

    • 모든 이전 취약점을 수집하기 위해 VULN_TIME_WINDOW: "all" 설정
    • 파이프라인 한 번 실행
  2. 지속적인 수집:

    • VULN_TIME_WINDOW를 원하는 창으로 설정 (24h 또는 7d)
    • 파이프라인 일정 설정:
      • 24h의 경우: 매일 예약
      • 7d의 경우: 매주 예약

Splunk 통합#

스크립트는 취약점을 이벤트로 Splunk에 전송합니다.

인덱스 구성#

  1. Splunk에서 gitlab_vulns라는 새 인덱스를 만드세요.
  2. HEC 토큰을 만들 때:
    • 기본 인덱스gitlab_vulns로 설정하세요 (이 인덱스는 제공된 Splunk 대시보드의 기본 검색에서 참조됩니다)
    • 토큰이 이 인덱스에 쓸 수 있는 권한을 갖도록 하세요
    • 토큰에 이벤트 데이터가 JSON으로 올바르게 파싱될 수 있도록 하는 sourcetype이 있는지 확인하세요

각 이벤트에는 다음이 포함됩니다:

  • 감지 시간
  • 취약점 제목 및 설명
  • 심각도 수준
  • 스캐너 정보
  • 프로젝트 세부 정보
  • 프로젝트와 취약점 모두의 URL

대시보드 설정#

제공된 대시보드는 다음 시각화를 통해 GitLab 취약점 데이터에 대한 포괄적인 가시성을 제공합니다:

  • 심각(Critical) 및 높음(High) 취약점에 대한 P95 Age 메트릭 (방사형 게이지)
  • 나이 버킷(0-30일, 31-90일, 91-180일, 180일 이상)에 걸쳐 심각 및 높음 취약점의 분포를 보여주는 에이징 분석
  • 발생 횟수를 포함한 상위 10개의 가장 빈번한 CVE
  • 프로젝트 경로 및 심각도별 취약점 분포
  • 모든 메트릭은 비즈니스 단위 및 시간 범위별로 필터링 가능

대시보드를 설정하려면:

  1. 비즈니스 단위 매핑:

    1. 두 열로 구성된 CSV 파일을 만드세요:

      project_url,business_unit
      
    2. 각 GitLab 프로젝트 URL을 해당 비즈니스 단위에 매핑하세요.

    3. 파일을 Splunk에 조회 테이블로 업로드하세요:

      1. Settings > Lookups > Lookup table files로 이동하세요.
      2. New Lookup Table File을 선택하세요.
      3. CSV 파일을 업로드하세요.
      4. Destination filenamebusiness_unit_mapping.csv로 설정하세요.
      5. 권한을 구성하세요:
        1. <splunk_dir>/etc/apps/search/lookups/business_unit_mapping.csv라는 행을 찾으세요.
        2. Permissions을 선택하세요.
        3. 권한을 다음 중 하나로 설정하세요:
          • 인스턴스 전체 액세스를 위해 Global로 설정.
          • 필요에 따라 특정 앱 또는 역할과 공유.
        4. Save를 선택하세요.
  2. 대시보드 설치:

    1. 제공된 vuln_metrics_dashboard.xml 파일을 저장하세요.
    2. Splunk에서:
      1. Search 앱으로 이동하세요.
      2. Dashboards > Create New Dashboard를 클릭하세요.
      3. 편집 보기에서 Source를 선택하세요.
      4. 기본 XML을 vuln_metrics_dashboard.xml의 내용으로 교체하세요.
      5. 대시보드를 저장하세요.

출력 형식#

중간 CSV 파일에는 다음이 포함됩니다:

  • detectedAt: 감지 타임스탬프
  • title: 취약점 제목
  • severity: 심각도 수준
  • primaryIdentifier: 취약점 식별자
  • exporter: 스캐너 이름
  • projectPath: GitLab 프로젝트 경로
  • projectUrl: 프로젝트 URL
  • description: 취약점 설명
  • webUrl: 취약점 세부 정보 URL

오류 처리#

솔루션에는 다음이 포함됩니다:

  • 지수 백오프를 사용한 속도 제한 처리
  • Splunk 수집을 위한 배치 처리
  • 적절한 오류 보고
  • 타임아웃 처리
  • UTF-8 인코딩 지원

모범 사례#

  1. 토큰 권한:

    • GRAPHQL_API_TOKEN에 필요한 권한:
      • 대상 그룹/프로젝트에 대한 읽기 액세스
      • 보안 대시보드 액세스
    • SPLUNK_HEC_TOKEN에 필요한 권한:
      • 대상 인덱스에 대한 이벤트 제출 권한
  2. 예약 빈도:

    • VULN_TIME_WINDOW에 맞게 예약 설정
    • 취약점 누락을 방지하기 위해 겹침 포함
    • 조직의 SLA 고려
  3. 모니터링:

    • 파이프라인 성공/실패 모니터링
    • 내보낸 취약점 수 추적
    • Splunk 수집 성공 모니터링

문제 해결#

일반적인 문제 및 해결 방법:

  1. 취약점이 내보내지지 않는 경우:

    • SCOPE 설정 확인
    • 토큰 권한 확인
    • 보안 대시보드 액세스 확인
  2. Splunk 수집 실패:

    • HEC URL 및 토큰 확인
    • 네트워크 연결 확인
    • 인덱스 권한 확인

보안 메트릭 및 KPI

Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 문서는 GitLab 보안 메트릭 및 KPI 솔루션 컴포넌트의 설치, 구성 및 사용 가이드를 설명합니다. 이 솔루션은 GraphQL API를 사용하여 GitLab 프로젝트 또는 그룹에서 취약점 데이터를 내보내고, HTTP Event Collector(HEC)를 통해 Splunk로 전송하며, 보안 메트릭 시각화를 위한 기본 제공 대시보드를 포함합니다.

이 문서는 GitLab 보안 메트릭 및 KPI 솔루션 컴포넌트의 설치, 구성 및 사용 가이드를 설명합니다. 이 보안 솔루션 컴포넌트는 비즈니스 단위, 시간 범위, 취약점 심각도 및 보안 유형별로 볼 수 있는 메트릭과 KPI를 제공합니다. PDF 문서를 통해 월별 또는 분기별 보안 현황의 스냅샷을 제공할 수 있습니다. 데이터는 Splunk의 대시보드를 사용하여 시각화됩니다.

보안 메트릭 및 KPI

이 솔루션은 GraphQL API를 사용하여 GitLab 프로젝트 또는 그룹에서 취약점 데이터를 내보내고, HTTP Event Collector(HEC)를 통해 Splunk로 전송하며, 보안 메트릭 시각화를 위한 기본 제공 대시보드를 포함합니다. 내보내기 프로세스는 예약된 GitLab CI/CD 파이프라인으로 실행되도록 설계되었습니다.

시작하기#

솔루션 컴포넌트 다운로드#

  1. 계정 팀에서 초대 코드를 받으세요.
  2. 초대 코드를 사용하여 솔루션 컴포넌트 웹스토어에서 솔루션 컴포넌트를 다운로드하세요.

솔루션 컴포넌트 프로젝트 설정#

  1. 이 내보내기를 호스팅할 새 GitLab 프로젝트를 만드세요.
  2. 제공된 파일을 프로젝트에 복사하세요:
    • export_vulns.py
    • send_to_splunk.py
    • requirements.txt
    • .gitlab-ci.yml
  3. 프로젝트 설정에서 필요한 CI/CD 변수를 구성하세요.
  4. 파이프라인 일정을 설정하세요 (예: 일별 또는 주별).

작동 방식#

솔루션은 두 가지 주요 컴포넌트로 구성됩니다:

  1. GitLab 보안 대시보드에서 데이터를 가져오는 취약점 내보내기
  2. 내보낸 데이터를 처리하여 Splunk HEC로 전송하는 Splunk 수집기

파이프라인은 두 단계로 실행됩니다:

  1. extract: 취약점을 가져와 CSV로 저장
  2. ingest: 취약점 데이터를 Splunk로 전송

구성#

필수 CI/CD 변수#

변수 설명 예시 값
SCOPE 취약점 스캐닝의 대상 범위 group:security/appsec 또는 security/my-project
GRAPHQL_API_TOKEN API 액세스 권한이 있는 GitLab 개인 액세스 토큰 glpat-XXXXXXXXXXXXXXXX
GRAPHQL_API_URL GitLab GraphQL API URL https://gitlab.com/api/graphql
SPLUNK_HEC_TOKEN Splunk HTTP Event Collector 토큰 11111111-2222-3333-4444-555555555555
SPLUNK_HEC_URL Splunk HEC 엔드포인트 URL https://splunk.company.com:8088/services/collector

선택적 CI/CD 변수#

변수 설명 예시 값 기본값
SEVERITY_FILTER 심각도 수준의 쉼표로 구분된 목록 CRITICAL,HIGH,MEDIUM 모든 심각도
VULN_TIME_WINDOW 취약점 수집의 시간 창 24h, 7d, 또는 all 24h

범위 구성#

SCOPE 변수는 스캔할 프로젝트 또는 그룹을 결정합니다:

  • 프로젝트의 경우: mygroup/myproject
  • 그룹의 경우: group:mygroup/subgroup
  • 전체 인스턴스의 경우: instance

심각도 필터 예시#

유효한 심각도 수준:

  • CRITICAL
  • HIGH
  • MEDIUM
  • LOW
  • UNKNOWN

예시 조합:

  • CRITICAL,HIGH
  • CRITICAL,HIGH,MEDIUM
  • 모든 심각도를 포함하려면 비워두세요

시간 창 구성#

VULN_TIME_WINDOW 변수는 취약점을 얼마나 과거까지 조회할지를 제어합니다:

  • 형식: <숫자><단위> 여기서:
    • 숫자: 양의 정수
    • 단위: 시간은 h, 일은 d
  • 예시:
    • 24h: 지난 24시간
    • 7h: 지난 7시간
    • 15d: 지난 15일
    • 30d: 지난 30일
    • all: 모든 취약점 (첫 실행에 유용)

기본값: 24h

예시 파이프라인 구성:

# 12시간 창의 경우
variables:
  VULN_TIME_WINDOW: "12h"

# 3일 창의 경우
variables:
  VULN_TIME_WINDOW: "3d"

# 모든 취약점의 경우
variables:
  VULN_TIME_WINDOW: "all"

선택한 창을 기반으로 파이프라인을 예약하세요. 예를 들어:

  • 12h의 경우: 하루에 두 번 예약
  • 3d의 경우: 3일마다 예약
  • 취약점이 누락되지 않도록 예약에 약간의 겹침을 추가하세요

파이프라인 설정#

  1. 첫 실행:

    • 모든 이전 취약점을 수집하기 위해 VULN_TIME_WINDOW: "all" 설정
    • 파이프라인 한 번 실행
  2. 지속적인 수집:

    • VULN_TIME_WINDOW를 원하는 창으로 설정 (24h 또는 7d)
    • 파이프라인 일정 설정:
      • 24h의 경우: 매일 예약
      • 7d의 경우: 매주 예약

Splunk 통합#

스크립트는 취약점을 이벤트로 Splunk에 전송합니다.

인덱스 구성#

  1. Splunk에서 gitlab_vulns라는 새 인덱스를 만드세요.
  2. HEC 토큰을 만들 때:
    • 기본 인덱스gitlab_vulns로 설정하세요 (이 인덱스는 제공된 Splunk 대시보드의 기본 검색에서 참조됩니다)
    • 토큰이 이 인덱스에 쓸 수 있는 권한을 갖도록 하세요
    • 토큰에 이벤트 데이터가 JSON으로 올바르게 파싱될 수 있도록 하는 sourcetype이 있는지 확인하세요

각 이벤트에는 다음이 포함됩니다:

  • 감지 시간
  • 취약점 제목 및 설명
  • 심각도 수준
  • 스캐너 정보
  • 프로젝트 세부 정보
  • 프로젝트와 취약점 모두의 URL

대시보드 설정#

제공된 대시보드는 다음 시각화를 통해 GitLab 취약점 데이터에 대한 포괄적인 가시성을 제공합니다:

  • 심각(Critical) 및 높음(High) 취약점에 대한 P95 Age 메트릭 (방사형 게이지)
  • 나이 버킷(0-30일, 31-90일, 91-180일, 180일 이상)에 걸쳐 심각 및 높음 취약점의 분포를 보여주는 에이징 분석
  • 발생 횟수를 포함한 상위 10개의 가장 빈번한 CVE
  • 프로젝트 경로 및 심각도별 취약점 분포
  • 모든 메트릭은 비즈니스 단위 및 시간 범위별로 필터링 가능

대시보드를 설정하려면:

  1. 비즈니스 단위 매핑:

    1. 두 열로 구성된 CSV 파일을 만드세요:

      project_url,business_unit
      
    2. 각 GitLab 프로젝트 URL을 해당 비즈니스 단위에 매핑하세요.

    3. 파일을 Splunk에 조회 테이블로 업로드하세요:

      1. Settings > Lookups > Lookup table files로 이동하세요.
      2. New Lookup Table File을 선택하세요.
      3. CSV 파일을 업로드하세요.
      4. Destination filenamebusiness_unit_mapping.csv로 설정하세요.
      5. 권한을 구성하세요:
        1. <splunk_dir>/etc/apps/search/lookups/business_unit_mapping.csv라는 행을 찾으세요.
        2. Permissions을 선택하세요.
        3. 권한을 다음 중 하나로 설정하세요:
          • 인스턴스 전체 액세스를 위해 Global로 설정.
          • 필요에 따라 특정 앱 또는 역할과 공유.
        4. Save를 선택하세요.
  2. 대시보드 설치:

    1. 제공된 vuln_metrics_dashboard.xml 파일을 저장하세요.
    2. Splunk에서:
      1. Search 앱으로 이동하세요.
      2. Dashboards > Create New Dashboard를 클릭하세요.
      3. 편집 보기에서 Source를 선택하세요.
      4. 기본 XML을 vuln_metrics_dashboard.xml의 내용으로 교체하세요.
      5. 대시보드를 저장하세요.

출력 형식#

중간 CSV 파일에는 다음이 포함됩니다:

  • detectedAt: 감지 타임스탬프
  • title: 취약점 제목
  • severity: 심각도 수준
  • primaryIdentifier: 취약점 식별자
  • exporter: 스캐너 이름
  • projectPath: GitLab 프로젝트 경로
  • projectUrl: 프로젝트 URL
  • description: 취약점 설명
  • webUrl: 취약점 세부 정보 URL

오류 처리#

솔루션에는 다음이 포함됩니다:

  • 지수 백오프를 사용한 속도 제한 처리
  • Splunk 수집을 위한 배치 처리
  • 적절한 오류 보고
  • 타임아웃 처리
  • UTF-8 인코딩 지원

모범 사례#

  1. 토큰 권한:

    • GRAPHQL_API_TOKEN에 필요한 권한:
      • 대상 그룹/프로젝트에 대한 읽기 액세스
      • 보안 대시보드 액세스
    • SPLUNK_HEC_TOKEN에 필요한 권한:
      • 대상 인덱스에 대한 이벤트 제출 권한
  2. 예약 빈도:

    • VULN_TIME_WINDOW에 맞게 예약 설정
    • 취약점 누락을 방지하기 위해 겹침 포함
    • 조직의 SLA 고려
  3. 모니터링:

    • 파이프라인 성공/실패 모니터링
    • 내보낸 취약점 수 추적
    • Splunk 수집 성공 모니터링

문제 해결#

일반적인 문제 및 해결 방법:

  1. 취약점이 내보내지지 않는 경우:

    • SCOPE 설정 확인
    • 토큰 권한 확인
    • 보안 대시보드 액세스 확인
  2. Splunk 수집 실패:

    • HEC URL 및 토큰 확인
    • 네트워크 연결 확인
    • 인덱스 권한 확인