InfoGrab DocsInfoGrab Docs

시크릿 탐지

요약

이 가이드는 전역 수준에서 시크릿 탐지 정책을 구현하는 방법을 설명합니다. 다음 단계로 커스텀 룰셋을 설정할 수 있습니다. 이 커스텀 룰셋은 GitLab의 사전 빌드된 규칙을 확장합니다. 커스텀 룰셋은 .gitlab/secret-detection-ruleset.toml에 정의합니다.

시작하기#

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

  1. 계정 팀으로부터 초대 코드를 받습니다.
  2. 초대 코드를 사용해 솔루션 컴포넌트 웹스토어에서 솔루션 컴포넌트를 다운로드합니다.

사전 요구 사항#

  • GitLab Ultimate 요금제
  • GitLab 인스턴스 또는 그룹에 대한 관리자 액세스 권한
  • 프로젝트에서 활성화된 시크릿 탐지

시크릿 탐지 커스텀 규칙 구성#

이 가이드는 전역 수준에서 시크릿 탐지 정책을 구현하는 방법을 설명합니다. 이 솔루션은 기본 시크릿 탐지 규칙을 확장하여 사회보장번호(SSN)와 같은 개인식별정보(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 권한을 부여합니다.

시크릿 탐지를 위한 그룹 액세스 토큰 설정.

  1. 그룹 변수 생성: 토큰 값을 복사해 안전하게 보관합니다. Settings 메뉴에서 키를 SECRET_DETECTION_GROUP_TOKEN으로 하고 값을 해당 토큰 값으로 하는 그룹 변수를 추가합니다.
  2. 그룹 토큰 봇 사용자 확인: 동일한 그룹에서 manage 메뉴로 이동해 member를 선택하고, 그룹 액세스 토큰 Secret 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. "All projects in this group"(선택적으로 예외 설정 가능) 또는 "Specific projects"(드롭다운에서 프로젝트 선택) 중 하나를 선택해 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 구성은 다음 화면에서 확인할 수 있습니다. 그룹의 모든 프로젝트에서 커스텀 규칙으로 시크릿 탐지를 실행하도록 구성된 스캔 실행 정책 이 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_detection_0 job으로 secret detect job 이 자동으로 실행됩니다. 시크릿 탐지 job 세부 정보를 표시하는 보안 대시보드

시크릿이 탐지되어 표시됩니다. 머지 리퀘스트가 있는 경우, 새로 발견된 시크릿은 Reports 탭에 표시됩니다. 기본 브랜치에 머지된 경우, 보안 취약점 리포트에 다음과 같이 표시됩니다. 시크릿 탐지 비밀번호 취약점 결과

다음은 평문 비밀번호의 예시입니다. 시크릿 탐지 비밀번호 탐지 결과

문제 해결#

정책이 적용되지 않음#

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

시크릿 탐지

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

요약

이 가이드는 전역 수준에서 시크릿 탐지 정책을 구현하는 방법을 설명합니다. 다음 단계로 커스텀 룰셋을 설정할 수 있습니다. 이 커스텀 룰셋은 GitLab의 사전 빌드된 규칙을 확장합니다. 커스텀 룰셋은 .gitlab/secret-detection-ruleset.toml에 정의합니다.

시작하기#

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

  1. 계정 팀으로부터 초대 코드를 받습니다.
  2. 초대 코드를 사용해 솔루션 컴포넌트 웹스토어에서 솔루션 컴포넌트를 다운로드합니다.

사전 요구 사항#

  • GitLab Ultimate 요금제
  • GitLab 인스턴스 또는 그룹에 대한 관리자 액세스 권한
  • 프로젝트에서 활성화된 시크릿 탐지

시크릿 탐지 커스텀 규칙 구성#

이 가이드는 전역 수준에서 시크릿 탐지 정책을 구현하는 방법을 설명합니다. 이 솔루션은 기본 시크릿 탐지 규칙을 확장하여 사회보장번호(SSN)와 같은 개인식별정보(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 권한을 부여합니다.

시크릿 탐지를 위한 그룹 액세스 토큰 설정.

  1. 그룹 변수 생성: 토큰 값을 복사해 안전하게 보관합니다. Settings 메뉴에서 키를 SECRET_DETECTION_GROUP_TOKEN으로 하고 값을 해당 토큰 값으로 하는 그룹 변수를 추가합니다.
  2. 그룹 토큰 봇 사용자 확인: 동일한 그룹에서 manage 메뉴로 이동해 member를 선택하고, 그룹 액세스 토큰 Secret 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. "All projects in this group"(선택적으로 예외 설정 가능) 또는 "Specific projects"(드롭다운에서 프로젝트 선택) 중 하나를 선택해 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 구성은 다음 화면에서 확인할 수 있습니다. 그룹의 모든 프로젝트에서 커스텀 규칙으로 시크릿 탐지를 실행하도록 구성된 스캔 실행 정책 이 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_detection_0 job으로 secret detect job 이 자동으로 실행됩니다. 시크릿 탐지 job 세부 정보를 표시하는 보안 대시보드

시크릿이 탐지되어 표시됩니다. 머지 리퀘스트가 있는 경우, 새로 발견된 시크릿은 Reports 탭에 표시됩니다. 기본 브랜치에 머지된 경우, 보안 취약점 리포트에 다음과 같이 표시됩니다. 시크릿 탐지 비밀번호 취약점 결과

다음은 평문 비밀번호의 예시입니다. 시크릿 탐지 비밀번호 탐지 결과

문제 해결#

정책이 적용되지 않음#

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