사용자 정의 규칙 집합 스키마
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 |
미리 정의된 규칙이 사용하는 식별자의 값입니다. |
type
과 value
의 올바른 값을 확인하려면 분석자가 생성한
gl-secret-detection-report.json
를 참조하세요.
이 파일은 분석자의 CI 작업에서 작업 아티팩트로 다운로드할 수 있습니다.
예를 들어, 아래의 코드 조각은 하나의 식별자를 가진 gitlab_personal_access_token
규칙의 발견을 보여줍니다.
JSON 객체의 type
및 value
키는 이 섹션에 제공해야 하는 값에 해당합니다.
...
"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
는 여전히 분석기에 의해 채워지지만, 더 이상 사용되지 않습니다
그리고 name
과 description
으로 대체되었습니다.
설정 예시:
[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를 사용하여 구성을 가져옵니다. |