사용자 지정 규칙 집합 스키마
파이프라인 비밀 감지의 동작을 사용자 정의하는 여러 종류의 규칙 집합을 사용하여 분석기 규칙 집합을 사용자 정의할 수 있습니다.
스키마
파이프라인 비밀 감지 규칙 집합의 사용자 정의는 엄격한 스키마를 준수해야 합니다. 다음 섹션에서는 각 옵션과 해당 섹션에 적용되는 스키마를 설명합니다.
최상위 섹션
최상위 섹션에는 TOML 테이블로 정의된 하나 이상의 _구성 섹션_이 포함됩니다.
설정 | 설명 |
---|---|
[secrets]
| 분석기를 위한 구성 섹션을 선언합니다. |
구성 예시:
[secrets]
...
[secrets]
구성 섹션
[secrets]
섹션을 사용하여 분석기의 동작을 사용자 정의할 수 있습니다. 유효한 속성은 수행 중인 구성의 종류에 따라 달라집니다.
설정 | 적용 대상 | 설명 |
---|---|---|
[[secrets.ruleset]]
| 미리 정의된 규칙 | 기존 규칙을 수정합니다. |
interpolate
| 모든 |
true 로 설정하면 구성에서 환경 변수를 평가할 수 있습니다. 비밀이나 토큰이 노출되지 않도록 주의해서 사용하세요. (기본값: 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 = "내 개인 원격 규칙 집합"
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
에 대한 올바른 값은 분석기의 CI 작업에서 생성된 gl-secret-detection-report.json
을 확인하여 결정할 수 있습니다. 이 파일은 분석기의 작업 결과물로써 작업 아티팩트로 다운로드할 수 있습니다.
예를 들어, 아래 스니펫은 gitlab_personal_access_token
규칙에서 하나의 식별자를 가진 결과를 보여줍니다. JSON 객체의 type
및 value
키는 이 섹션에서 제공해야 하는 값과 일치합니다.
...
"vulnerabilities": [
{
"id": "fccb407005c0fb58ad6cfcae01bea86093953ed1ae9f9623ecc3e4117675c91a",
"category": "secret_detection",
"name": "GitLab personal access token",
"description": "커밋 5c124166에서 GitLab 개인 액세스 토큰을 찾았습니다.",
...
"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
|
참고:
message
는 분석기에서 여전히 채워지지만 사용되지 않게 되었습니다 (영문) 그리고 name
및 description
로 대체되었습니다.
구성 예시:
[secrets]
[[secrets.ruleset]]
[secrets.ruleset.override]
severity = "Medium"
name = "systemd machine-id"
...
[[secrets.passthrough]]
섹션
[[secrets.passthrough]]
섹션을 사용하면 사용자 지정 구성을 합성할 수 있습니다.
분석기당 최대 20개의 이러한 섹션을 정의할 수 있습니다. 그런 다음 Passthrough는 완전한 구성으로 평가되는 _passthrough chain_으로 결합되어 분석기의 사전 정의된 규칙을 대체하거나 확장하는 데 사용할 수 있습니다.
Passthrough는 순서대로 평가됩니다. 연쇄에서 나중에 나오는 Passthroughs는 우선 순위가 높으며(모드에 따라) 이전의 Passthroughs에 의해 생성된 데이터를 덮어쓰거나 추가할 수 있습니다. 기존 구성을 사용하거나 수정해야 할 때 Passthrough를 사용하세요.
단일 Passthrough에 의해 생성된 구성의 크기는 10MB로 제한됩니다.
설정 | 적용 대상 | 설명 |
---|---|---|
type
| 모든 |
file , raw , git , 또는 url 중 하나입니다.
|
target
| 모든 | Passthrough 평가에 의해 작성된 데이터를 포함할 대상 파일입니다. 비어 있으면 무작위 파일 이름이 사용됩니다. |
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
| 모든 | Passthrough를 평가한 후 대상 파일에 명시적으로 유효성 검사기(xml , yaml , json , toml )를 호출하는 데 사용됩니다.
|
Passthrough 유형
유형 | 설명 |
---|---|
file
| 동일한 Git 저장소에 저장된 파일을 사용합니다. |
raw
| 규칙 집합 구성을 인라인으로 제공합니다. |
git
| 원격 Git 저장소에서 구성을 풀어옵니다. |
url
| HTTP를 사용하여 구성을 가져옵니다. |