사용자 정의 규칙 집합 스키마

Tier: Ultimate

Offering: GitLab.com, Self-managed, GitLab Dedicated

파이프라인 비밀 탐지를 사용자 정의하려면 다양한 종류의 규칙 집합 사용자 정의를 사용할 수 있습니다.

스키마

파이프라인 비밀 탐지 규칙 집합의 사용자 정의는 엄격한 스키마를 따라야 합니다. 다음 섹션에서는 사용 가능한 각 옵션과 해당 섹션에 적용되는 스키마를 설명합니다.

최상위 섹션

최상위 섹션에는 하나 이상의 _구성 섹션_이 포함되어 있으며, 이는 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

경고:

비밀 유출의 위험을 줄이기 위해 이 기능을 사용할 때는 주의하십시오.

아래 예제는 $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 작업에서 작업 아티팩트로 다운로드할 수 있습니다.

예를 들어, 아래의 코드 조각은 하나의 식별자를 가진 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 (Deprecated) 문제에 대한 설명입니다.
name 규칙의 이름입니다.
severity 규칙의 심각도입니다. 유효한 옵션은: Critical, High, Medium, Low, Unknown, Info입니다.

주의:

message는 여전히 분석기에 의해 채워지지만, 더 이상 사용되지 않습니다 그리고 namedescription으로 대체되었습니다.

설정 예시:

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

[[secrets.passthrough]] 섹션

[[secrets.passthrough]] 섹션은 분석기를 위한 사용자 정의 구성을 합성하는 데 사용됩니다.

각 분석기당 최대 20개의 이러한 섹션을 정의할 수 있습니다. 패스스루는 완전한 구성을 평가하는 _passthrough chain_으로 구성되어 분석기의 미리 정의된 규칙을 교체하거나 확장하는 데 사용할 수 있습니다.

패스스루는 순서대로 평가됩니다. 체인에서 나중에 나열된 패스스루는 우선 순위가 높아 이전 패스스루가 생성한 데이터에 대해 덮어쓰거나 추가할 수 있습니다(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를 사용하여 구성을 가져옵니다.