InfoGrab Docs

시크릿 감지

요약

이 가이드는 전역 수준에서 시크릿 감지 정책을 구현하는 데 도움을 줍니다. 다음 단계로 사용자 정의 규칙셋을 설정할 수 있습니다: 이 사용자 정의 규칙셋은 GitLab 사전 빌드 규칙을 확장합니다. 사용자 정의 규칙셋은 .gitlab/secret-detection-ruleset.toml에 정의됩니다.

시작하기#

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

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

사전 요구 사항#

  • GitLab Ultimate 티어
  • GitLab 인스턴스 또는 그룹에 대한 관리자 액세스
  • 프로젝트에 시크릿 감지가 활성화되어 있어야 합니다

시크릿 감지 사용자 정의 규칙 구성#

이 가이드는 전역 수준에서 시크릿 감지 정책을 구현하는 데 도움을 줍니다. 이 솔루션은 기본 시크릿 감지 규칙을 확장하여 사회 보장 번호와 같은 PII 데이터 요소 및 평문 비밀번호 감지를 포함합니다. 규칙 확장은 원격 규칙셋으로 간주됩니다.

사용자 정의 규칙셋 구성#

다음 단계로 사용자 정의 규칙셋을 설정할 수 있습니다:

  1. 최상위 그룹 Secret Detection을 만드세요.
  2. 다운로드한 컴포넌트에서 프로젝트 Secret Detection Custom Ruleset을 새로 만든 Secret Detection 그룹으로 복사하세요.

이 사용자 정의 규칙셋은 GitLab 사전 빌드 규칙을 확장합니다. 확장을 통해 다음을 포함한 시크릿을 감지하고 알림을 보낼 수 있습니다:

  • PII 데이터 요소: 사회 보장 번호
  • 평문 비밀번호

사용자 정의 규칙셋 파일#

사용자 정의 규칙셋은 .gitlab/secret-detection-ruleset.toml에 정의됩니다. 규칙은 regex를 사용하여 정의할 수 있습니다.

PII 데이터 요소 감지#

PII 데이터 요소 감지를 위한 확장 규칙:

[[rules]]
id = "ssn"
description = "Social Security Number"
regex = "[0-9]{3}-[0-9]{2}-[0-9]{4}"
tags = ["ssn", "social-security-number"]
keywords = ["ssn"]

평문 비밀번호#

평문 비밀번호에 대한 확장 규칙:

[[rules]]
id = "password-secret"
description = "Detect secrets starting with Password or PASSWORD"
regex = "(?i)Password[:=]\\s*['\"]?[^'\"]+['\"]?"
tags = ["password", "secret"]
keywords = ["password", "PASSWORD"]

정의된 사용자 정의 규칙셋 접근#

사용자 정의 규칙셋에 접근하려면 봇 사용자를 생성하는 그룹 액세스 토큰을 만들어야 합니다. 봇 사용자는 글로벌 정책을 통해 시크릿 감지를 실행하는 모든 프로젝트에서 사용자 정의 규칙셋을 인증하고 접근하는 데 사용할 수 있습니다.

액세스 및 인증을 설정하려면 다음 단계를 따르세요:

  1. 그룹 토큰 만들기: Secret Detection 그룹에서 Settings 메뉴 옵션 아래에 그룹 액세스 토큰 Secret Detection Group Token을 만들고, 토큰에 read_repository 액세스가 있는 reporter 역할을 부여하세요.

Security Dashboard

  1. 그룹 변수 만들기: 토큰 값을 복사하고 안전하게 저장하세요. Settings 메뉴 옵션 아래에 키가 SECRET_DETECTION_GROUP_TOKEN이고 값이 토큰 값인 그룹 변수를 추가하세요.
  2. 그룹 토큰 봇 사용자 가져오기: 동일한 그룹에서 manage 메뉴 옵션으로 이동하여 member를 선택하고 그룹 액세스 토큰 Secrete Detection Group Token에 해당하는 봇 사용자를 찾아 @group_[group_id]_bot_[random_number] 형식으로 그룹의 봇 사용자를 나타내는 값을 복사하세요.

시크릿 감지 그룹 토큰 봇

구현 가이드#

이 가이드에서는 중앙화된 사용자 정의 규칙셋을 사용하여 모든 프로젝트에 대한 시크릿 감지를 실행하도록 정책을 구성하는 단계를 다룹니다.

시크릿 감지 정책 구성#

강제 적용되는 전역 정책으로 파이프라인에서 시크릿 감지를 자동으로 실행하려면 가장 높은 수준(이 경우 최상위 그룹)에서 정책을 설정하세요. 새 시크릿 감지 정책을 만들려면:

  1. 정책 만들기: 동일한 그룹 Secret Detection에서 해당 그룹의 Secure > Policies 페이지로 이동하세요.

  2. New policy를 선택하세요.

  3. Scan execution policy를 선택하세요.

  4. 정책 구성: 정책 이름을 Secret Detection Policy로 지정하고 설명을 입력하고 Secret Detection 스캔을 선택하세요.

  5. "이 그룹의 모든 프로젝트" (선택적으로 예외 설정 가능)나 "특정 프로젝트" (드롭다운에서 프로젝트 선택)를 선택하여 Policy scope를 설정하세요.

  6. Actions 섹션에서 시크릿 감지가 기본으로 표시됩니다.

  7. Conditions 섹션에서 매 커밋이 아닌 일정에 따라 스캔을 실행하려면 "Triggers:"를 "Schedules:"로 선택적으로 변경할 수 있습니다.

  8. 사용자 정의 규칙셋에 대한 액세스 설정: 봇 사용자의 값, 그룹 변수, 사용자 정의 규칙셋 프로젝트 URL로 CI 변수를 추가하세요.

    사용자 정의 규칙셋은 다른 프로젝트에 호스팅되어 원격 규칙셋으로 간주되므로 SECRET_DETECTION_RULESET_GIT_REFERENCE를 사용해야 합니다.

    variables:
      SECRET_DETECTION_RULESET_GIT_REFERENCE: "group_[group_id]_bot_[random_number]:$SECRET_DETECTION_GROUP_TOKEN@[custom ruleset project URL]"
      SECRET_DETECTION_HISTORIC_SCAN: "true"
    

UI 구성은 이 화면에서 확인할 수 있습니다: Security Dashboard 이 CI 변수에 대한 자세한 정보는 이 문서의 세부 내용을 참조하세요.

  1. Create policy를 클릭하세요.

전체 정책 구성#

정책을 만든 후 참조용으로 전체 정책 구성은 다음과 같습니다:

---
scan_execution_policy:
- name: Scan execution for secret detection with custom rules
  description: ''
  enabled: true
  policy_scope:
    projects:
      excluding: []
  rules:
  - type: pipeline
    branches:
    - "*"
  actions:
  - scan: secret_detection
    variables:
      SECRET_DETECTION_RULESET_GIT_REFERENCE: "@group_[group_id]_bot_[random_number]:$SECRET_DETECTION_GROUP_TOKEN@gitlab.com/example_group/secret-detection/secret-detection-custom-ruleset"
      SECRET_DETECTION_HISTORIC_SCAN: 'true'
  skip_ci:
    allowed: true
    allowlist:
      users: []
approval_policy: []

작동 방식#

정책이 실행되면 전역 정책과 연결된 모든 프로젝트의 파이프라인에서 secret detect 작업이 secret_detection_0 작업으로 자동 실행됩니다. Security Dashboard

시크릿이 감지되어 표시됩니다. 머지 요청이 있는 경우 새로 발견된 시크릿이 MR 위젯에 표시됩니다. 기본 브랜치가 병합된 경우 다음과 같이 보안 취약점 보고서에 표시됩니다: 시크릿 감지 비밀번호 취약점 결과

다음은 평문 비밀번호의 예입니다: 시크릿 감지 비밀번호 발견

문제 해결#

정책이 적용되지 않는 경우#

수정한 보안 정책 프로젝트가 그룹에 올바르게 연결되어 있는지 확인하세요. 자세한 내용은 보안 정책 프로젝트에 연결을 참조하세요.

시크릿 감지

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

이 가이드는 전역 수준에서 시크릿 감지 정책을 구현하는 데 도움을 줍니다. 다음 단계로 사용자 정의 규칙셋을 설정할 수 있습니다: 이 사용자 정의 규칙셋은 GitLab 사전 빌드 규칙을 확장합니다. 사용자 정의 규칙셋은 .gitlab/secret-detection-ruleset.toml에 정의됩니다.

시작하기#

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

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

사전 요구 사항#

  • GitLab Ultimate 티어
  • GitLab 인스턴스 또는 그룹에 대한 관리자 액세스
  • 프로젝트에 시크릿 감지가 활성화되어 있어야 합니다

시크릿 감지 사용자 정의 규칙 구성#

이 가이드는 전역 수준에서 시크릿 감지 정책을 구현하는 데 도움을 줍니다. 이 솔루션은 기본 시크릿 감지 규칙을 확장하여 사회 보장 번호와 같은 PII 데이터 요소 및 평문 비밀번호 감지를 포함합니다. 규칙 확장은 원격 규칙셋으로 간주됩니다.

사용자 정의 규칙셋 구성#

다음 단계로 사용자 정의 규칙셋을 설정할 수 있습니다:

  1. 최상위 그룹 Secret Detection을 만드세요.
  2. 다운로드한 컴포넌트에서 프로젝트 Secret Detection Custom Ruleset을 새로 만든 Secret Detection 그룹으로 복사하세요.

이 사용자 정의 규칙셋은 GitLab 사전 빌드 규칙을 확장합니다. 확장을 통해 다음을 포함한 시크릿을 감지하고 알림을 보낼 수 있습니다:

  • PII 데이터 요소: 사회 보장 번호
  • 평문 비밀번호

사용자 정의 규칙셋 파일#

사용자 정의 규칙셋은 .gitlab/secret-detection-ruleset.toml에 정의됩니다. 규칙은 regex를 사용하여 정의할 수 있습니다.

PII 데이터 요소 감지#

PII 데이터 요소 감지를 위한 확장 규칙:

[[rules]]
id = "ssn"
description = "Social Security Number"
regex = "[0-9]{3}-[0-9]{2}-[0-9]{4}"
tags = ["ssn", "social-security-number"]
keywords = ["ssn"]

평문 비밀번호#

평문 비밀번호에 대한 확장 규칙:

[[rules]]
id = "password-secret"
description = "Detect secrets starting with Password or PASSWORD"
regex = "(?i)Password[:=]\\s*['\"]?[^'\"]+['\"]?"
tags = ["password", "secret"]
keywords = ["password", "PASSWORD"]

정의된 사용자 정의 규칙셋 접근#

사용자 정의 규칙셋에 접근하려면 봇 사용자를 생성하는 그룹 액세스 토큰을 만들어야 합니다. 봇 사용자는 글로벌 정책을 통해 시크릿 감지를 실행하는 모든 프로젝트에서 사용자 정의 규칙셋을 인증하고 접근하는 데 사용할 수 있습니다.

액세스 및 인증을 설정하려면 다음 단계를 따르세요:

  1. 그룹 토큰 만들기: Secret Detection 그룹에서 Settings 메뉴 옵션 아래에 그룹 액세스 토큰 Secret Detection Group Token을 만들고, 토큰에 read_repository 액세스가 있는 reporter 역할을 부여하세요.

Security Dashboard

  1. 그룹 변수 만들기: 토큰 값을 복사하고 안전하게 저장하세요. Settings 메뉴 옵션 아래에 키가 SECRET_DETECTION_GROUP_TOKEN이고 값이 토큰 값인 그룹 변수를 추가하세요.
  2. 그룹 토큰 봇 사용자 가져오기: 동일한 그룹에서 manage 메뉴 옵션으로 이동하여 member를 선택하고 그룹 액세스 토큰 Secrete Detection Group Token에 해당하는 봇 사용자를 찾아 @group_[group_id]_bot_[random_number] 형식으로 그룹의 봇 사용자를 나타내는 값을 복사하세요.

시크릿 감지 그룹 토큰 봇

구현 가이드#

이 가이드에서는 중앙화된 사용자 정의 규칙셋을 사용하여 모든 프로젝트에 대한 시크릿 감지를 실행하도록 정책을 구성하는 단계를 다룹니다.

시크릿 감지 정책 구성#

강제 적용되는 전역 정책으로 파이프라인에서 시크릿 감지를 자동으로 실행하려면 가장 높은 수준(이 경우 최상위 그룹)에서 정책을 설정하세요. 새 시크릿 감지 정책을 만들려면:

  1. 정책 만들기: 동일한 그룹 Secret Detection에서 해당 그룹의 Secure > Policies 페이지로 이동하세요.

  2. New policy를 선택하세요.

  3. Scan execution policy를 선택하세요.

  4. 정책 구성: 정책 이름을 Secret Detection Policy로 지정하고 설명을 입력하고 Secret Detection 스캔을 선택하세요.

  5. "이 그룹의 모든 프로젝트" (선택적으로 예외 설정 가능)나 "특정 프로젝트" (드롭다운에서 프로젝트 선택)를 선택하여 Policy scope를 설정하세요.

  6. Actions 섹션에서 시크릿 감지가 기본으로 표시됩니다.

  7. Conditions 섹션에서 매 커밋이 아닌 일정에 따라 스캔을 실행하려면 "Triggers:"를 "Schedules:"로 선택적으로 변경할 수 있습니다.

  8. 사용자 정의 규칙셋에 대한 액세스 설정: 봇 사용자의 값, 그룹 변수, 사용자 정의 규칙셋 프로젝트 URL로 CI 변수를 추가하세요.

    사용자 정의 규칙셋은 다른 프로젝트에 호스팅되어 원격 규칙셋으로 간주되므로 SECRET_DETECTION_RULESET_GIT_REFERENCE를 사용해야 합니다.

    variables:
      SECRET_DETECTION_RULESET_GIT_REFERENCE: "group_[group_id]_bot_[random_number]:$SECRET_DETECTION_GROUP_TOKEN@[custom ruleset project URL]"
      SECRET_DETECTION_HISTORIC_SCAN: "true"
    

UI 구성은 이 화면에서 확인할 수 있습니다: Security Dashboard 이 CI 변수에 대한 자세한 정보는 이 문서의 세부 내용을 참조하세요.

  1. Create policy를 클릭하세요.

전체 정책 구성#

정책을 만든 후 참조용으로 전체 정책 구성은 다음과 같습니다:

---
scan_execution_policy:
- name: Scan execution for secret detection with custom rules
  description: ''
  enabled: true
  policy_scope:
    projects:
      excluding: []
  rules:
  - type: pipeline
    branches:
    - "*"
  actions:
  - scan: secret_detection
    variables:
      SECRET_DETECTION_RULESET_GIT_REFERENCE: "@group_[group_id]_bot_[random_number]:$SECRET_DETECTION_GROUP_TOKEN@gitlab.com/example_group/secret-detection/secret-detection-custom-ruleset"
      SECRET_DETECTION_HISTORIC_SCAN: 'true'
  skip_ci:
    allowed: true
    allowlist:
      users: []
approval_policy: []

작동 방식#

정책이 실행되면 전역 정책과 연결된 모든 프로젝트의 파이프라인에서 secret detect 작업이 secret_detection_0 작업으로 자동 실행됩니다. Security Dashboard

시크릿이 감지되어 표시됩니다. 머지 요청이 있는 경우 새로 발견된 시크릿이 MR 위젯에 표시됩니다. 기본 브랜치가 병합된 경우 다음과 같이 보안 취약점 보고서에 표시됩니다: 시크릿 감지 비밀번호 취약점 결과

다음은 평문 비밀번호의 예입니다: 시크릿 감지 비밀번호 발견

문제 해결#

정책이 적용되지 않는 경우#

수정한 보안 정책 프로젝트가 그룹에 올바르게 연결되어 있는지 확인하세요. 자세한 내용은 보안 정책 프로젝트에 연결을 참조하세요.