Configuration de l'automatisation de l'examen avec GitHub Action et des conteneurs
Le conteneur d'interface de ligne de commande (CLI) HCL® AppScan® Source, disponible depuis HCL Harbor et HCL FlexNet Operations Portal (FNO), peut être utilisé pour automatiser les examens d'analyse statique avec GitHub, et sans installer une instance complète de AppScan® Source.
- Préparez l'application.
- Préparez GitHub Action à l'aide de l'image du conteneur de HCL FNO.
- Lancez l'examen à l'aide de GitHub Action.
Conditions préalables
- Environnement GitHub Action : Un ou plusieurs exécuteurs GitHub Action basés sur Linux RHEL 7.9 avec Docker installé.
Il s'agit du système destiné à exécuter un examen d'analyse statique à l'aide du conteneur de l'interface de ligne de commande.
-
Une licence valide pour AppScan® Source for Automation et des informations pertinentes sur le serveur de licences.
-
Image du conteneur de l'interface de ligne de commande AppScan® Source
Téléchargez l'image du conteneur de l'interface de ligne de commande AppScan® Source à partir de HCL Harbor ou HCL FNO. Avec une licence valide, votre identifiant HCL vous donne accès à ces emplacements.
-
Script de l'interface de ligne de commande AppScan® Source
Un script est requis pour l'examen avec le conteneur à l'aide de GitHub Action.
- Fichiers de projet (.ppf) et d'application (.paf) AppScan® Source : Utilisez AppScan® Source for Analysis pour générer des fichiers de configuration (nécessite une installation de AppScan® Source sur un système Linux ayant accès à la cible d'examen).
- Accédez au contenu sur GitHub Action à partir du conteneur :
- L'application à examiner doit être présente dans GitHub et accessible à partir de l'exécuteur GitHub Action qui exécute l'examen.
- Les fichiers
.paf
/.ppf
Remarque : Le mappage de volume (mappage du chemin sur l'hôte du conteneur vers un chemin dans le conteneur) est utilisé à cette fin lors de l'instanciation d'un examen.
Préparez l'application à examiner
- Fichiers
.paf
/.ppf
- Examen des dossiers
paf
/ppf
- Générez le fichier
.paf
/.ppf
à l'aide du client HCL® AppScan® Source for Analysis sur un système Linux sur lequel AppScan® Source est installé.Assurez-vous que les fichiers
.paf
et.ppf
se trouvent dans le dossier root de l'application à examiner. - Assurez-vous que les fichiers d'application et les fichiers
paf
/ppf
sont accessibles à partir des exécuteurs GitHub Action.Par exemple, si l'application est accessible au chemin root
/usr/user1/SampleApp
, les fichiers.paf
/.ppf
sont situés dans/usr/user1/SampleApp/SampleApp.paf
et/usr/user1/SampleApp/SampleApp.ppf
. - Le mappage de volume est nécessaire pour permettre au conteneur d'accéder aux fichiers d'application sur le système hôte/agent. Déterminez le nom du volume tel qu'il est vu par le conteneur.Par exemple, mappez l'hôte
/usr/user1
surcvol
dans le conteneur.Remarque : Le mappage de volume est spécifié lors de l'exécution de l'interface de ligne de commande dans le conteneur. - Créez le script de l'interface de ligne de commande. Par exemple,
SampleApp.script
dans /usr/user1/SampleApp
.Dans cet exemple, le script indique au conteneur d'accéder au contenu de l'application à l'aide du chemincvol
. Les commandes répertoriées sont celles utilisées avec l'interface de ligne de commande AppScan® Source (Examen sans intervention manuelle).login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
- Assurez-vous que les fichiers d'application sont accessibles à partir des exécuteurs GitHub Action.
Par exemple, l'application est accessible via le chemin /
usr/user1/SampleApp
sur les exécuteurs GitHub Action. - Déterminez le nom du volume tel qu'il est vu par le conteneur.Par exemple, mappez l'hôte
/usr/user1
surcvol
dans le conteneur.Remarque : Le mappage de volume est spécifié lors de l'exécution de l'interface de ligne de commande dans le conteneur. - Créez le script de l'interface de ligne de commande. Par exemple,
SampleApp.script
dans/usr/user1/SampleApp
.login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
Préparez GitHub Action à l'aide de l'image de conteneur de l'interface de ligne de commande
- Téléchargez le conteneur de l'interface de ligne de commande AppScan® Source dans l'hôte GitHub à partir de HCL FNO ou accédez-y directement à partir de HCL Harbor.
Chargez l'image du conteneur de l'interface de ligne de commande (CLI) à l'aide de la commande
docker load
si elle a été téléchargée à partir de HCL FNO. - Créez un fichier de script
yaml
pour exécuter un examen d'analyse statique à l'aide du conteneur de l'interface de ligne de commande AppScan® Source à partir de HCL Harbor et placez-le dans la branche appropriée. Par exemple :# This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the development branch push: <name of the branch used for running SAST scan> pull_request: <name of the branch used for running SAST scan> # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" SAST_SCAN: # The type of runner that the job will run on , here we used a self-hosted runner runs-on: [ self-hosted ] # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so our job can access it - uses: actions/checkout@v2 # Displays current working path - name: Display current workspace run: echo $GITHUB_WORKSPACE . - name: Docker cleanup run : docker system prune -a -f - name: Docker run run : docker run --rm --env-file $GITHUB_WORKSPACE/env.list -v $GITHUB_WORKSPACE/:/wa hclcr.io/appscan/appscan-src-cli:10.1.0 script /wa/CLI.script - name: Docker cleanup run : docker system prune -a -f - name: Success run: echo Scan completed successfully.
Lancez un examen d'analyse statique à l'aide des exécuteurs GitHub Action
- Assurez-vous que l'exécuteur GitHub Action est en ligne.
Si l'exécuteur est auto-hébergé, exécutez manuellement un script d'exécution téléchargé à partir de GitHub.
- Dans GitHub, sélectionnez
.yaml
présent dans la branche.
pour démarrer un examen d'analyse statique à l'aide du script