Merge pull request #43 from RamosJSouza/fix/auth-security-hardening #47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Security Scan (Weekly) | ||
| on: | ||
| schedule: | ||
| # Todo domingo às 02:00 UTC | ||
| - cron: '0 2 * * 0' | ||
| workflow_dispatch: | ||
| permissions: | ||
| contents: read | ||
| security-events: write | ||
| jobs: | ||
| npm-audit: | ||
| name: npm audit | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '24' | ||
| cache: 'npm' | ||
| - run: npm ci | ||
| - name: npm audit (moderate+) | ||
| run: npm audit --audit-level=moderate | ||
| continue-on-error: true | ||
| - name: npm audit report (JSON) | ||
| run: npm audit --json > npm-audit-report.json || true | ||
| - name: Upload audit report | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: npm-audit-report | ||
| path: npm-audit-report.json | ||
| retention-days: 30 | ||
| trivy-fs: | ||
| name: Trivy Filesystem Scan | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Trivy filesystem scan (SARIF) | ||
| uses: aquasecurity/trivy-action@master | ||
| with: | ||
| scan-type: 'fs' | ||
| scan-ref: '.' | ||
| format: 'sarif' | ||
| output: 'trivy-fs-results.sarif' | ||
| severity: 'CRITICAL,HIGH,MEDIUM' | ||
| ignore-unfixed: false | ||
| - name: Upload SARIF to GitHub Security tab | ||
| uses: github/codeql-action/upload-sarif@v3 | ||
| if: always() | ||
| with: | ||
| sarif_file: 'trivy-fs-results.sarif' | ||
| snyk: | ||
| name: Snyk Dependency Scan | ||
| runs-on: ubuntu-latest | ||
| if: ${{ secrets.SNYK_TOKEN != '' }} | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '24' | ||
| cache: 'npm' | ||
| - run: npm ci | ||
| - name: Snyk test | ||
| uses: snyk/actions/node@master | ||
| continue-on-error: true | ||
| env: | ||
| SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} | ||
| with: | ||
| args: --severity-threshold=high --sarif-file-output=snyk.sarif | ||
| - name: Upload Snyk SARIF | ||
| uses: github/codeql-action/upload-sarif@v3 | ||
| if: always() | ||
| with: | ||
| sarif_file: snyk.sarif | ||
| codeql: | ||
| name: CodeQL Analysis | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| actions: read | ||
| contents: read | ||
| security-events: write | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Initialize CodeQL | ||
| uses: github/codeql-action/init@v3 | ||
| with: | ||
| languages: javascript-typescript | ||
| queries: security-and-quality | ||
| - name: Autobuild | ||
| uses: github/codeql-action/autobuild@v3 | ||
| - name: Perform CodeQL Analysis | ||
| uses: github/codeql-action/analyze@v3 | ||
| with: | ||
| category: '/language:javascript-typescript' | ||