chore: add security
This commit is contained in:
@@ -1,69 +1,87 @@
|
|||||||
# This workflow uses actions that are not certified by GitHub.
|
name: API Security Scan
|
||||||
# They are provided by a third-party and are governed by
|
|
||||||
# separate terms of service, privacy policy, and support
|
|
||||||
# documentation.
|
|
||||||
|
|
||||||
# APIsec addresses the critical need to secure APIs before they reach production.
|
|
||||||
# APIsec provides the industry’s 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:
|
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:
|
push:
|
||||||
branches: ["main"]
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- "backend/**"
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: ["main"]
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- "backend/**"
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "38 15 * * 1"
|
- cron: "0 6 * * 1" # Lundi 6h00 UTC
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Trigger_APIsec_scan:
|
govulncheck:
|
||||||
permissions:
|
name: Go Vulnerability Check (CVE)
|
||||||
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
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: APIsec scan
|
- uses: actions/checkout@v4
|
||||||
uses: apisec-inc/apisec-run-scan@025432089674a28ba8fb55f8ab06c10215e772ea
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
# The APIsec username with which the scans will be executed
|
go-version: "1.24.4"
|
||||||
apisec-username: ${{ secrets.apisec_username }}
|
cache-dependency-path: backend/gestion/go.sum
|
||||||
# The Password of the APIsec user with which the scans will be executed
|
|
||||||
apisec-password: ${{ secrets.apisec_password}}
|
- name: Install govulncheck
|
||||||
# The name of the project for security scan
|
run: go install golang.org/x/vuln/cmd/govulncheck@latest
|
||||||
apisec-project: "VAmPI"
|
|
||||||
# The name of the sarif format result file The file is written only if this property is provided.
|
- name: Run govulncheck
|
||||||
sarif-result-file: "apisec-results.sarif"
|
working-directory: backend/gestion
|
||||||
- name: Import results
|
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
|
uses: github/codeql-action/upload-sarif@v3
|
||||||
with:
|
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
|
||||||
|
|||||||
+26
-27
@@ -3,30 +3,28 @@
|
|||||||
# separate terms of service, privacy policy, and support
|
# separate terms of service, privacy policy, and support
|
||||||
# documentation.
|
# documentation.
|
||||||
|
|
||||||
# This workflow helps you trigger a SonarCloud analysis of your code and populates
|
# This workflow helps you trigger a SonarQube analysis of your code and populates
|
||||||
# GitHub Code Scanning alerts with the vulnerabilities found.
|
# GitHub Code Scanning alerts with the vulnerabilities found.
|
||||||
# Free for open source project.
|
# (this feature is available starting from SonarQube 9.7, Developer Edition and above)
|
||||||
|
|
||||||
# 1. Login to SonarCloud.io using your GitHub account
|
# 1. Make sure you add a valid GitHub configuration to your SonarQube (Administration > DevOps platforms > GitHub)
|
||||||
|
|
||||||
# 2. Import your project on SonarCloud
|
# 2. Import your project on SonarQube
|
||||||
# * Add your GitHub organization first, then add your repository as a new project.
|
# * Add your repository as a new project by clicking "Create project" from your homepage.
|
||||||
# * Please note that many languages are eligible for automatic analysis,
|
|
||||||
# which means that the analysis will start automatically without the need to set up GitHub Actions.
|
|
||||||
# * This behavior can be changed in Administration > Analysis Method.
|
|
||||||
#
|
#
|
||||||
# 3. Follow the SonarCloud in-product tutorial
|
# 3. Select GitHub Actions as your CI and follow the tutorial
|
||||||
# * a. Copy/paste the Project Key and the Organization Key into the args parameter below
|
# * a. Generate a new token and add it to your GitHub repository's secrets using the name SONAR_TOKEN
|
||||||
# (You'll find this information in SonarCloud. Click on "Information" at the bottom left)
|
# (On SonarQube, click on your avatar on top-right > My account > Security or ask your administrator)
|
||||||
#
|
#
|
||||||
# * b. Generate a new token and add it to your Github repository's secrets using the name SONAR_TOKEN
|
# * b. Copy/paste your SonarQube host URL to your GitHub repository's secrets using the name SONAR_HOST_URL
|
||||||
# (On SonarCloud, click on your avatar on top-right > My account > Security
|
#
|
||||||
# or go directly to https://sonarcloud.io/account/security/)
|
# * c. Copy/paste the project Key into the args parameter below
|
||||||
|
# (You'll find this information in SonarQube by following the tutorial or by clicking on Project Information at the top-right of your project's homepage)
|
||||||
|
|
||||||
# Feel free to take a look at our documentation (https://docs.sonarcloud.io/getting-started/github/)
|
# Feel free to take a look at our documentation (https://docs.sonarqube.org/latest/analysis/github-integration/)
|
||||||
# or reach out to our community forum if you need some help (https://community.sonarsource.com/c/help/sc/9)
|
# or reach out to our community forum if you need some help (https://community.sonarsource.com/c/sq/10)
|
||||||
|
|
||||||
name: SonarCloud analysis
|
name: SonarQube analysis
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -36,32 +34,33 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: read # allows SonarCloud to decorate PRs with analysis results
|
pull-requests: read # allows SonarQube to decorate PRs with analysis results
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Analysis:
|
Analysis:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Analyze with SonarCloud
|
- name: Analyze with SonarQube
|
||||||
|
|
||||||
# You can pin the exact commit or the version.
|
# You can pin the exact commit or the version.
|
||||||
# uses: SonarSource/sonarcloud-github-action@v2.2.0
|
# uses: SonarSource/sonarqube-scan-action@v1.1.0
|
||||||
uses: SonarSource/sonarcloud-github-action@4006f663ecaf1f8093e8e4abb9227f6041f52216
|
uses: SonarSource/sonarqube-scan-action@7295e71c9583053f5bf40e9d4068a0c974603ec8
|
||||||
env:
|
env:
|
||||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Generate a token on Sonarcloud.io, add it to the secrets of this repo with the name SONAR_TOKEN (Settings > Secrets > Actions > add new repository secret)
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information
|
||||||
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Generate a token on SonarQube, add it to the secrets of this repo with the name SONAR_TOKEN (Settings > Secrets > Actions > add new repository secret)
|
||||||
|
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} # add the URL of your instance to the secrets of this repo with the name SONAR_HOST_URL (Settings > Secrets > Actions > add new repository secret)
|
||||||
with:
|
with:
|
||||||
# Additional arguments for the SonarScanner CLI
|
# Additional arguments for the sonarcloud scanner
|
||||||
args:
|
args:
|
||||||
# Unique keys of your project and organization. You can find them in SonarCloud > Information (bottom-left menu)
|
# Unique key of your project. You can find it in SonarQube > [my project] > Project Information (top-right menu)
|
||||||
# mandatory
|
# mandatory
|
||||||
-Dsonar.projectKey=
|
-Dsonar.projectKey=
|
||||||
-Dsonar.organization=
|
|
||||||
# Comma-separated paths to directories containing main source files.
|
# Comma-separated paths to directories containing main source files.
|
||||||
#-Dsonar.sources= # optional, default is project base directory
|
#-Dsonar.sources= # optional, default is project base directory
|
||||||
|
# When you need the analysis to take place in a directory other than the one from which it was launched
|
||||||
|
#-Dsonar.projectBaseDir= # optional, default is .
|
||||||
# Comma-separated paths to directories containing test source files.
|
# Comma-separated paths to directories containing test source files.
|
||||||
#-Dsonar.tests= # optional. For more info about Code Coverage, please refer to https://docs.sonarcloud.io/enriching/test-coverage/overview/
|
#-Dsonar.tests= # optional. For more info about Code Coverage, please refer to https://docs.sonarcloud.io/enriching/test-coverage/overview/
|
||||||
# Adds more detail to both client and server-side analysis logs, activating DEBUG mode for the scanner, and adding client-side environment variables and system properties to the server-side log of analysis report processing.
|
# Adds more detail to both client and server-side analysis logs, activating DEBUG mode for the scanner, and adding client-side environment variables and system properties to the server-side log of analysis report processing.
|
||||||
#-Dsonar.verbose= # optional, default is false
|
#-Dsonar.verbose= # optional, default is false
|
||||||
# When you need the analysis to take place in a directory other than the one from which it was launched, default is .
|
|
||||||
projectBaseDir: .
|
|
||||||
|
|||||||
Reference in New Issue
Block a user