diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index cee8af6..0cded2c 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -9,6 +9,20 @@ on: - cron: '0 3 * * *' jobs: + secret-scan: + name: Secret Scan + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' || github.event_name == 'schedule' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Run gitleaks + uses: gitleaks/gitleaks-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITLEAKS_CONFIG: .gitleaks.toml + build: strategy: matrix: diff --git a/.gitleaks.toml b/.gitleaks.toml new file mode 100644 index 0000000..d1b755a --- /dev/null +++ b/.gitleaks.toml @@ -0,0 +1,8 @@ +title = "SeedPass gitleaks config" + +[allowlist] + description = "Paths and patterns to ignore when scanning for secrets" + # Add file paths that contain test data or other non-sensitive strings + paths = [] + # Add regular expressions that match false positive secrets + regexes = [] diff --git a/docs/secret-scanning.md b/docs/secret-scanning.md new file mode 100644 index 0000000..767af92 --- /dev/null +++ b/docs/secret-scanning.md @@ -0,0 +1,17 @@ +# Secret Scanning + +SeedPass uses [Gitleaks](https://github.com/gitleaks/gitleaks) to scan the repository for accidentally committed secrets. The scan runs automatically for pull requests and on a nightly schedule. Any findings will cause the build to fail. + +## Suppressing False Positives + +If a file or string triggers the scanner but does not contain a real secret, add it to the allowlist in `.gitleaks.toml`. + +```toml +[allowlist] +# Ignore specific files +paths = ["path/to/file.txt"] +# Ignore strings that match a regular expression +regexes = ["""dummy_api_key"""] +``` + +Commit the updated `.gitleaks.toml` to stop future alerts for the allowed items.