InfoGrab Docs

커스텀 룰셋 스키마

요약

다양한 종류의 룰셋 커스터마이징을 사용하여 파이프라인 시크릿 감지의 동작을 커스터마이징할 수 있습니다. 파이프라인 시크릿 감지 룰셋의 커스터마이징은 엄격한 스키마를 따라야 합니다. 최상위 섹션에는 TOML 테이블로 정의된 하나 이상의 구성 섹션이 포함됩니다.

다양한 종류의 룰셋 커스터마이징을 사용하여 파이프라인 시크릿 감지의 동작을 커스터마이징할 수 있습니다.

스키마#

파이프라인 시크릿 감지 룰셋의 커스터마이징은 엄격한 스키마를 따라야 합니다. 다음 섹션에서는 사용 가능한 각 옵션과 해당 섹션에 적용되는 스키마를 설명합니다.

최상위 섹션#

최상위 섹션에는 TOML 테이블로 정의된 하나 이상의 구성 섹션이 포함됩니다.

설정 설명
[secrets] 분석기의 구성 섹션을 선언합니다.

구성 예시:

[secrets]
...

[secrets] 구성 섹션#

[secrets] 섹션에서 분석기의 동작을 커스터마이징할 수 있습니다. 유효한 속성은 만드는 구성의 종류에 따라 다릅니다.

설정 적용 대상 설명
[[secrets.ruleset]] 사전 정의된 규칙 기존 규칙에 대한 수정을 정의합니다.
interpolate 모두 true로 설정하면 구성에서 $VAR를 사용하여 환경 변수를 평가할 수 있습니다. 시크릿이나 토큰이 유출되지 않도록 이 기능을 주의하여 사용하세요. (기본값: false)
description 패스스루 커스텀 룰셋의 설명.
targetdir 패스스루 최종 구성이 유지되어야 할 디렉토리. 비어 있으면 임의의 이름을 가진 디렉토리가 만들어집니다. 디렉토리는 최대 100MB의 파일을 포함할 수 있습니다.
validate 패스스루 true로 설정하면 각 패스스루의 내용이 검증됩니다. 검증은 yaml, xml, json, toml 콘텐츠에 작동합니다. 적절한 검증기는 [[secrets.passthrough]] 섹션의 target 매개변수에서 사용된 확장자를 기반으로 식별됩니다. (기본값: false)
timeout 패스스루 시간 초과 전에 패스스루 체인을 평가하는 데 소비할 최대 시간. 시간 초과는 300초를 초과할 수 없습니다. (기본값: 60)

interpolate#

Warning

시크릿 유출 위험을 줄이려면 이 기능을 주의하여 사용하세요.

아래 예시는 비공개 리포지터리에 접근하기 위해 $GITURL 환경 변수를 사용하는 구성을 보여줍니다. 변수는 사용자 이름과 토큰을 포함하므로(예: https://user:token@url) 구성 파일에 명시적으로 저장하지 않습니다.

[secrets]
  description = "My private remote ruleset"
  interpolate = true

  [[secrets.passthrough]]
    type  = "git"
    value = "$GITURL"
    ref = "main"

[[secrets.ruleset]] 섹션#

[[secrets.ruleset]] 섹션은 단일 사전 정의된 규칙을 타겟으로 수정합니다. 분석기에 대해 하나에서 여러 개의 이 섹션을 정의할 수 있습니다.

설정 설명
disable 규칙을 비활성화해야 하는지 여부. (기본값: false)
[secrets.ruleset.identifier] 수정할 사전 정의된 규칙을 선택합니다.
[secrets.ruleset.override] 규칙에 대한 재정의를 정의합니다.

구성 예시:

[secrets]
  [[secrets.ruleset]]
    disable = true
    ...

[secrets.ruleset.identifier] 섹션#

[secrets.ruleset.identifier] 섹션은 수정하려는 사전 정의된 규칙의 식별자를 정의합니다.

설정 설명
type 사전 정의된 규칙에서 사용하는 식별자 유형.
value 사전 정의된 규칙에서 사용하는 식별자 값.

typevalue의 올바른 값을 결정하려면 분석기가 생성한 gl-secret-detection-report.json을 봅니다. 이 파일은 분석기의 CI/CD 작업에서 작업 아티팩트로 다운로드할 수 있습니다.

예를 들어 아래 스니펫은 하나의 식별자가 있는 gitlab_personal_access_token 규칙에서 발견된 내용을 보여줍니다. JSON 객체의 typevalue 키는 이 섹션에서 제공해야 할 값에 해당합니다.

...
  "vulnerabilities": [
    {
      "id": "fccb407005c0fb58ad6cfcae01bea86093953ed1ae9f9623ecc3e4117675c91a",
      "category": "secret_detection",
      "name": "GitLab personal access token",
      "description": "GitLab personal access token has been found in commit 5c124166",
      ...
      "identifiers": [
        {
          "type": "gitleaks_rule_id",
          "name": "Gitleaks rule ID gitlab_personal_access_token",
          "value": "gitlab_personal_access_token"
        }
      ]
    }
    ...
  ]
...

구성 예시:

[secrets]
  [[secrets.ruleset]]
    [secrets.ruleset.identifier]
      type = "gitleaks_rule_id"
      value = "gitlab_personal_access_token"
    ...

[secrets.ruleset.override] 섹션#

[secrets.ruleset.override] 섹션을 사용하면 사전 정의된 규칙의 속성을 재정의할 수 있습니다.

설정 설명
description 문제에 대한 자세한 설명.
message (사용 중단) 문제에 대한 설명.
name 규칙의 이름.
severity 규칙의 심각도. 유효한 옵션은: Critical, High, Medium, Low, Unknown, Info
Note

message는 여전히 분석기에 의해 채워지지만 사용 중단되어 namedescription으로 대체되었습니다.

구성 예시:

[secrets]
  [[secrets.ruleset]]
    [secrets.ruleset.override]
      severity = "Medium"
      name = "systemd machine-id"
    ...

커스텀 규칙 형식#

히스토리

커스텀 규칙을 만들 때 Gitleaks의 표준 규칙 형식과 추가 GitLab 전용 필드를 모두 사용할 수 있습니다. 각 규칙에 사용할 수 있는 설정은 다음과 같습니다:

설정 필수 여부 설명
title 아니요 규칙의 커스텀 제목을 설정하는 GitLab 전용 필드.
description 규칙이 감지하는 내용에 대한 자세한 설명.
remediation 아니요 규칙이 트리거될 때 수정 지침을 제공하는 GitLab 전용 필드.
regex 시크릿을 감지하는 데 사용되는 정규 표현식 패턴.
keywords 아니요 정규 표현식을 적용하기 전에 콘텐츠를 사전 필터링하기 위한 키워드 목록.
id 규칙의 고유 식별자.

모든 사용 가능한 필드를 포함하는 커스텀 규칙 예시:

[[rules]]
  title = "API Key Detection Rule"
  description = "Detects potential API keys in the codebase"
  remediation = "Rotate the exposed API key and store it in a secure credential manager"
  id = "custom_api_key"
  keywords = ["apikey", "api_key"]
  regex = '''api[_-]key[_-][a-zA-Z0-9]{16,}'''

확장 룰셋의 규칙과 동일한 ID를 공유하는 커스텀 규칙을 만들면 커스텀 규칙이 우선합니다. 커스텀 규칙의 모든 속성이 확장 규칙의 해당 값을 대체합니다.

커스텀 규칙으로 기본 규칙을 확장하는 예시:

title = "Extension of GitLab's default Gitleaks config"

[extend]
  path = "/gitleaks.toml"

[[rules]]
  title = "Custom API Key Rule"
  description = "Detects custom API key format"
  remediation = "Rotate the exposed API key"
  id = "custom_api_123"
  keywords = ["testing"]
  regex = '''testing-key-[1-9]{3}'''

[[secrets.passthrough]] 섹션#

[[secrets.passthrough]] 섹션에서 분석기에 대한 커스텀 구성을 합성할 수 있습니다.

분석기당 최대 20개의 이 섹션을 정의할 수 있습니다. 패스스루는 그런 다음 분석기의 사전 정의된 규칙을 대체하거나 확장하는 데 사용할 수 있는 완전한 구성으로 평가되는 패스스루 체인으로 구성됩니다.

패스스루는 순서대로 평가됩니다. 체인의 뒤에 나열된 패스스루는 우선 순위가 높으며 이전 패스스루에서 생성된 데이터를 덮어쓰거나 추가할 수 있습니다(mode에 따라 다름). 기존 구성을 사용하거나 수정해야 할 때 패스스루를 사용합니다.

단일 패스스루에서 생성된 구성의 크기는 10MB로 제한됩니다.

설정 적용 대상 설명
type 모두 file, raw, git, url 중 하나.
target 모두 패스스루 평가로 작성된 데이터를 포함할 대상 파일. 비어 있으면 임의의 파일 이름이 사용됩니다.
mode 모두 overwrite이면 target 파일을 덮어씁니다. append이면 새 내용이 target 파일에 추가됩니다. git 유형은 overwrite만 지원합니다. (기본값: overwrite)
ref type = "git" 가져올 브랜치, 태그 또는 SHA의 이름을 포함합니다.
subdir type = "git" Git 리포지터리의 서브 디렉토리를 구성 소스로 선택하는 데 사용됩니다.
auth type = "git" 비공개 Git 리포지터리에 저장된 구성을 사용할 때 사용할 자격 증명을 제공하는 데 사용됩니다.
value 모두 file, url, git 유형의 경우 파일 또는 Git 리포지터리의 위치를 정의합니다. raw 유형의 경우 인라인 구성을 포함합니다.
validator 모두 패스스루 평가 후 대상 파일에 대해 검증기(xml, yaml, json, toml)를 명시적으로 호출하는 데 사용됩니다.

패스스루 유형#

유형 설명
file 동일한 Git 리포지터리에 저장된 파일을 사용합니다.
raw 룰셋 구성을 인라인으로 제공합니다.
git 원격 Git 리포지터리에서 구성을 가져옵니다.
url HTTP를 사용하여 구성을 가져옵니다.

커스텀 룰셋 스키마

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

다양한 종류의 룰셋 커스터마이징을 사용하여 파이프라인 시크릿 감지의 동작을 커스터마이징할 수 있습니다. 파이프라인 시크릿 감지 룰셋의 커스터마이징은 엄격한 스키마를 따라야 합니다. 최상위 섹션에는 TOML 테이블로 정의된 하나 이상의 구성 섹션이 포함됩니다.

다양한 종류의 룰셋 커스터마이징을 사용하여 파이프라인 시크릿 감지의 동작을 커스터마이징할 수 있습니다.

스키마#

파이프라인 시크릿 감지 룰셋의 커스터마이징은 엄격한 스키마를 따라야 합니다. 다음 섹션에서는 사용 가능한 각 옵션과 해당 섹션에 적용되는 스키마를 설명합니다.

최상위 섹션#

최상위 섹션에는 TOML 테이블로 정의된 하나 이상의 구성 섹션이 포함됩니다.

설정 설명
[secrets] 분석기의 구성 섹션을 선언합니다.

구성 예시:

[secrets]
...

[secrets] 구성 섹션#

[secrets] 섹션에서 분석기의 동작을 커스터마이징할 수 있습니다. 유효한 속성은 만드는 구성의 종류에 따라 다릅니다.

설정 적용 대상 설명
[[secrets.ruleset]] 사전 정의된 규칙 기존 규칙에 대한 수정을 정의합니다.
interpolate 모두 true로 설정하면 구성에서 $VAR를 사용하여 환경 변수를 평가할 수 있습니다. 시크릿이나 토큰이 유출되지 않도록 이 기능을 주의하여 사용하세요. (기본값: false)
description 패스스루 커스텀 룰셋의 설명.
targetdir 패스스루 최종 구성이 유지되어야 할 디렉토리. 비어 있으면 임의의 이름을 가진 디렉토리가 만들어집니다. 디렉토리는 최대 100MB의 파일을 포함할 수 있습니다.
validate 패스스루 true로 설정하면 각 패스스루의 내용이 검증됩니다. 검증은 yaml, xml, json, toml 콘텐츠에 작동합니다. 적절한 검증기는 [[secrets.passthrough]] 섹션의 target 매개변수에서 사용된 확장자를 기반으로 식별됩니다. (기본값: false)
timeout 패스스루 시간 초과 전에 패스스루 체인을 평가하는 데 소비할 최대 시간. 시간 초과는 300초를 초과할 수 없습니다. (기본값: 60)

interpolate#

Warning

시크릿 유출 위험을 줄이려면 이 기능을 주의하여 사용하세요.

아래 예시는 비공개 리포지터리에 접근하기 위해 $GITURL 환경 변수를 사용하는 구성을 보여줍니다. 변수는 사용자 이름과 토큰을 포함하므로(예: https://user:token@url) 구성 파일에 명시적으로 저장하지 않습니다.

[secrets]
  description = "My private remote ruleset"
  interpolate = true

  [[secrets.passthrough]]
    type  = "git"
    value = "$GITURL"
    ref = "main"

[[secrets.ruleset]] 섹션#

[[secrets.ruleset]] 섹션은 단일 사전 정의된 규칙을 타겟으로 수정합니다. 분석기에 대해 하나에서 여러 개의 이 섹션을 정의할 수 있습니다.

설정 설명
disable 규칙을 비활성화해야 하는지 여부. (기본값: false)
[secrets.ruleset.identifier] 수정할 사전 정의된 규칙을 선택합니다.
[secrets.ruleset.override] 규칙에 대한 재정의를 정의합니다.

구성 예시:

[secrets]
  [[secrets.ruleset]]
    disable = true
    ...

[secrets.ruleset.identifier] 섹션#

[secrets.ruleset.identifier] 섹션은 수정하려는 사전 정의된 규칙의 식별자를 정의합니다.

설정 설명
type 사전 정의된 규칙에서 사용하는 식별자 유형.
value 사전 정의된 규칙에서 사용하는 식별자 값.

typevalue의 올바른 값을 결정하려면 분석기가 생성한 gl-secret-detection-report.json을 봅니다. 이 파일은 분석기의 CI/CD 작업에서 작업 아티팩트로 다운로드할 수 있습니다.

예를 들어 아래 스니펫은 하나의 식별자가 있는 gitlab_personal_access_token 규칙에서 발견된 내용을 보여줍니다. JSON 객체의 typevalue 키는 이 섹션에서 제공해야 할 값에 해당합니다.

...
  "vulnerabilities": [
    {
      "id": "fccb407005c0fb58ad6cfcae01bea86093953ed1ae9f9623ecc3e4117675c91a",
      "category": "secret_detection",
      "name": "GitLab personal access token",
      "description": "GitLab personal access token has been found in commit 5c124166",
      ...
      "identifiers": [
        {
          "type": "gitleaks_rule_id",
          "name": "Gitleaks rule ID gitlab_personal_access_token",
          "value": "gitlab_personal_access_token"
        }
      ]
    }
    ...
  ]
...

구성 예시:

[secrets]
  [[secrets.ruleset]]
    [secrets.ruleset.identifier]
      type = "gitleaks_rule_id"
      value = "gitlab_personal_access_token"
    ...

[secrets.ruleset.override] 섹션#

[secrets.ruleset.override] 섹션을 사용하면 사전 정의된 규칙의 속성을 재정의할 수 있습니다.

설정 설명
description 문제에 대한 자세한 설명.
message (사용 중단) 문제에 대한 설명.
name 규칙의 이름.
severity 규칙의 심각도. 유효한 옵션은: Critical, High, Medium, Low, Unknown, Info
Note

message는 여전히 분석기에 의해 채워지지만 사용 중단되어 namedescription으로 대체되었습니다.

구성 예시:

[secrets]
  [[secrets.ruleset]]
    [secrets.ruleset.override]
      severity = "Medium"
      name = "systemd machine-id"
    ...

커스텀 규칙 형식#

히스토리

커스텀 규칙을 만들 때 Gitleaks의 표준 규칙 형식과 추가 GitLab 전용 필드를 모두 사용할 수 있습니다. 각 규칙에 사용할 수 있는 설정은 다음과 같습니다:

설정 필수 여부 설명
title 아니요 규칙의 커스텀 제목을 설정하는 GitLab 전용 필드.
description 규칙이 감지하는 내용에 대한 자세한 설명.
remediation 아니요 규칙이 트리거될 때 수정 지침을 제공하는 GitLab 전용 필드.
regex 시크릿을 감지하는 데 사용되는 정규 표현식 패턴.
keywords 아니요 정규 표현식을 적용하기 전에 콘텐츠를 사전 필터링하기 위한 키워드 목록.
id 규칙의 고유 식별자.

모든 사용 가능한 필드를 포함하는 커스텀 규칙 예시:

[[rules]]
  title = "API Key Detection Rule"
  description = "Detects potential API keys in the codebase"
  remediation = "Rotate the exposed API key and store it in a secure credential manager"
  id = "custom_api_key"
  keywords = ["apikey", "api_key"]
  regex = '''api[_-]key[_-][a-zA-Z0-9]{16,}'''

확장 룰셋의 규칙과 동일한 ID를 공유하는 커스텀 규칙을 만들면 커스텀 규칙이 우선합니다. 커스텀 규칙의 모든 속성이 확장 규칙의 해당 값을 대체합니다.

커스텀 규칙으로 기본 규칙을 확장하는 예시:

title = "Extension of GitLab's default Gitleaks config"

[extend]
  path = "/gitleaks.toml"

[[rules]]
  title = "Custom API Key Rule"
  description = "Detects custom API key format"
  remediation = "Rotate the exposed API key"
  id = "custom_api_123"
  keywords = ["testing"]
  regex = '''testing-key-[1-9]{3}'''

[[secrets.passthrough]] 섹션#

[[secrets.passthrough]] 섹션에서 분석기에 대한 커스텀 구성을 합성할 수 있습니다.

분석기당 최대 20개의 이 섹션을 정의할 수 있습니다. 패스스루는 그런 다음 분석기의 사전 정의된 규칙을 대체하거나 확장하는 데 사용할 수 있는 완전한 구성으로 평가되는 패스스루 체인으로 구성됩니다.

패스스루는 순서대로 평가됩니다. 체인의 뒤에 나열된 패스스루는 우선 순위가 높으며 이전 패스스루에서 생성된 데이터를 덮어쓰거나 추가할 수 있습니다(mode에 따라 다름). 기존 구성을 사용하거나 수정해야 할 때 패스스루를 사용합니다.

단일 패스스루에서 생성된 구성의 크기는 10MB로 제한됩니다.

설정 적용 대상 설명
type 모두 file, raw, git, url 중 하나.
target 모두 패스스루 평가로 작성된 데이터를 포함할 대상 파일. 비어 있으면 임의의 파일 이름이 사용됩니다.
mode 모두 overwrite이면 target 파일을 덮어씁니다. append이면 새 내용이 target 파일에 추가됩니다. git 유형은 overwrite만 지원합니다. (기본값: overwrite)
ref type = "git" 가져올 브랜치, 태그 또는 SHA의 이름을 포함합니다.
subdir type = "git" Git 리포지터리의 서브 디렉토리를 구성 소스로 선택하는 데 사용됩니다.
auth type = "git" 비공개 Git 리포지터리에 저장된 구성을 사용할 때 사용할 자격 증명을 제공하는 데 사용됩니다.
value 모두 file, url, git 유형의 경우 파일 또는 Git 리포지터리의 위치를 정의합니다. raw 유형의 경우 인라인 구성을 포함합니다.
validator 모두 패스스루 평가 후 대상 파일에 대해 검증기(xml, yaml, json, toml)를 명시적으로 호출하는 데 사용됩니다.

패스스루 유형#

유형 설명
file 동일한 Git 리포지터리에 저장된 파일을 사용합니다.
raw 룰셋 구성을 인라인으로 제공합니다.
git 원격 Git 리포지터리에서 구성을 가져옵니다.
url HTTP를 사용하여 구성을 가져옵니다.