diff --git a/.github/workflows/reusable-security.yml b/.github/workflows/reusable-security.yml index 9734d8c..52b4b88 100644 --- a/.github/workflows/reusable-security.yml +++ b/.github/workflows/reusable-security.yml @@ -21,6 +21,10 @@ jobs: fetch-depth: 0 - name: Найти случайно добавленные секреты uses: docker://ghcr.io/gitleaks/gitleaks:v8.30.1 + env: + GIT_CONFIG_COUNT: "1" + GIT_CONFIG_KEY_0: safe.directory + GIT_CONFIG_VALUE_0: /github/workspace with: args: git --redact --verbose /github/workspace - name: Проверить файлы и IaC @@ -33,4 +37,5 @@ jobs: ignore-unfixed: true exit-code: "1" trivyignores: ${{ inputs.trivy-ignore-file }} + version: v0.74.0 diff --git a/README.md b/README.md index 62aacc0..6455dbe 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ - `.github/workflows/` — процессы, которые могут вызывать другие репы. - `reusable-docs.yml` проверяет структуру и строго собирает MkDocs. +- `reusable-security.yml` запускает Gitleaks и закреплённую версию Trivy на чистом runner. - `.github/ISSUE_TEMPLATE/` — шаблоны задач. - `profile/README.md` — главная страница организации. - `docs/` — правила и устройство этого репозитория. diff --git a/docs/development.md b/docs/development.md index e663164..1b0fffc 100644 --- a/docs/development.md +++ b/docs/development.md @@ -21,3 +21,6 @@ pwsh ./scripts/check-workflows.ps1 ``` Новый общий workflow также проверяется в тестовом репозитории до обязательного включения для всех сервисов. + +Security workflow передаёт Docker-версии Gitleaks безопасный Git path и закрепляет Trivy на реально +выпущенной версии. Обновление pin сначала проверяется на чистом runner без расчёта на старый cache. diff --git a/scripts/check-workflows.ps1 b/scripts/check-workflows.ps1 index dac0caf..4d68ec7 100644 --- a/scripts/check-workflows.ps1 +++ b/scripts/check-workflows.ps1 @@ -37,4 +37,17 @@ foreach ($stepName in $publishSteps) { } } -Write-Host "Режимы container workflow настроены корректно." +$securityWorkflow = Get-Content -LiteralPath ".github/workflows/reusable-security.yml" -Raw +$securityRules = @( + 'GIT_CONFIG_KEY_0: safe.directory', + 'GIT_CONFIG_VALUE_0: /github/workspace', + 'version: v0.74.0' +) + +foreach ($rule in $securityRules) { + if (-not $securityWorkflow.Contains($rule)) { + throw "В reusable-security.yml нет ожидаемого правила: $rule" + } +} + +Write-Host "Общие workflows настроены корректно."