chore: add security

This commit is contained in:
2026-03-11 20:39:44 +01:00
parent 49836a4fa7
commit ee4e92057a
2 changed files with 96 additions and 79 deletions
+70 -52
View File
@@ -1,69 +1,87 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: API Security Scan
# APIsec addresses the critical need to secure APIs before they reach production.
# APIsec provides the industrys only automated and continuous API testing platform that uncovers security vulnerabilities and logic flaws in APIs.
# Clients rely on APIsec to evaluate every update and release, ensuring that no APIs go to production with vulnerabilities.
# How to Get Started with APIsec.ai
# 1. Schedule a demo at https://www.apisec.ai/request-a-demo .
#
# 2. Register your account at https://cloud.apisec.ai/#/signup .
#
# 3. Register your API . See the video (https://www.youtube.com/watch?v=MK3Xo9Dbvac) to get up and running with APIsec quickly.
#
# 4. Get GitHub Actions scan attributes from APIsec Project -> Configurations -> Integrations -> CI-CD -> GitHub Actions
#
# apisec-run-scan
#
# This action triggers the on-demand scans for projects registered in APIsec.
# If your GitHub account allows code scanning alerts, you can then upload the sarif file generated by this action to show the scan findings.
# Else you can view the scan results from the project home page in APIsec Platform.
# The link to view the scan results is also displayed on the console on successful completion of action.
# This is a starter workflow to help you get started with APIsec-Scan Actions
name: APIsec
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
# Customize trigger events based on your DevSecOps processes.
push:
branches: ["main"]
branches: [main]
paths:
- "backend/**"
pull_request:
branches: ["main"]
branches: [main]
paths:
- "backend/**"
schedule:
- cron: "38 15 * * 1"
# Allows you to run this workflow manually from the Actions tab
- cron: "0 6 * * 1" # Lundi 6h00 UTC
workflow_dispatch:
permissions:
contents: read
security-events: write
jobs:
Trigger_APIsec_scan:
permissions:
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
govulncheck:
name: Go Vulnerability Check (CVE)
runs-on: ubuntu-latest
steps:
- name: APIsec scan
uses: apisec-inc/apisec-run-scan@025432089674a28ba8fb55f8ab06c10215e772ea
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
# The APIsec username with which the scans will be executed
apisec-username: ${{ secrets.apisec_username }}
# The Password of the APIsec user with which the scans will be executed
apisec-password: ${{ secrets.apisec_password}}
# The name of the project for security scan
apisec-project: "VAmPI"
# The name of the sarif format result file The file is written only if this property is provided.
sarif-result-file: "apisec-results.sarif"
- name: Import results
go-version: "1.24.4"
cache-dependency-path: backend/gestion/go.sum
- name: Install govulncheck
run: go install golang.org/x/vuln/cmd/govulncheck@latest
- name: Run govulncheck
working-directory: backend/gestion
run: govulncheck ./...
trivy:
name: Trivy - Dependency & Code Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Trivy scan (filesystem)
uses: aquasecurity/trivy-action@0.28.0
with:
scan-type: fs
scan-ref: backend/gestion
format: sarif
output: trivy-results.sarif
severity: CRITICAL,HIGH,MEDIUM
exit-code: "1"
- name: Upload Trivy SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ./apisec-results.sarif
sarif_file: trivy-results.sarif
gosec:
name: Gosec - Security Hotspots
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.24.4"
cache-dependency-path: backend/gestion/go.sum
- name: Run gosec
uses: securego/gosec@master
with:
args: -fmt sarif -out gosec-results.sarif -exclude-dir=vendor ./...
working-directory: backend/gestion
- name: Upload gosec SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: backend/gestion/gosec-results.sarif