Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 27 additions & 4 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,36 @@
name: Security

# Aggregated security scans for skill repos: secret scanning (betterleaks),
# workflow static analysis (zizmor), dependency review on PRs, and a composer
# audit (every skill repo ships a composer.json for split-licensing /
# Packagist distribution).
Comment thread
CybotTM marked this conversation as resolved.
#
# Top-level `permissions: {}` denies everything by default; each reusable
# caller job re-declares the exact union its reusable's jobs require, so the
# token passed to each reusable is fully explicit and never relies on the
# repo default. This is the same pattern proven in netresearch/.github's
# go-app template (top {} + per-job security-events: write).

on:
push:
branches: [main, master]
branches: [main]
pull_request:
branches: [main, master]
branches: [main]

permissions: {}

jobs:
gitleaks:
uses: netresearch/.github/.github/workflows/gitleaks.yml@main
secrets:
GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}
permissions:
contents: read
security-events: write

zizmor:
uses: netresearch/.github/.github/workflows/zizmor.yml@main
permissions:
contents: read
security-events: write

dependency-review:
if: github.event_name == 'pull_request'
Expand All @@ -21,3 +41,6 @@ jobs:

composer-audit:
uses: netresearch/typo3-ci-workflows/.github/workflows/security.yml@main
permissions:
contents: read
security-events: write
13 changes: 13 additions & 0 deletions .github/zizmor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# zizmor (https://zizmor.sh) configuration
#
# Tunes zizmor to Netresearch conventions so the audit reports only
# actionable findings. Third-party actions remain hash-pin enforced.
rules:
unpinned-uses:
config:
policies:
# First-party reusable workflows track @main by policy and are
# never SHA-pinned, so fixes propagate to all consumers.
"netresearch/*": ref-pin
# Everything else must be pinned to a full commit SHA.
"*": hash-pin
Loading