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.

Les principales étapes de l'examen à l'aide d'un conteneur sont les suivantes :
  1. Préparez l'application.
  2. Préparez GitHub Action à l'aide de l'image du conteneur de HCL FNO.
  3. Lancez l'examen à l'aide de GitHub Action.

Conditions préalables

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
  • 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

Préparez l'application pour l'examen à l'aide de l'une des méthodes suivantes :
  • Fichiers .paf/.ppf
  • Examen des dossiers
Préparez l'application à examiner à l'aide des fichiers paf/ppf
  1. 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.

  2. 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.

  3. 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 sur cvol 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.
  4. 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 chemin cvol. 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
Préparez l'application pour l'examen du dossier:
  1. 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.

  2. Déterminez le nom du volume tel qu'il est vu par le conteneur.
    Par exemple, mappez l'hôte /usr/user1 sur cvol 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.
  3. 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

Pour préparer l'environnement d'exécution sur GitHub Action :
  1. 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 directement à partir de HCL Harbor.

    Chargez l'image du conteneur de l'interface de ligne de commande à l'aide de la commande docker load si elle a été téléchargée à partir de HCL FNO.

  2. 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

Pour exécuter un examen d'analyse astatique :
  1. 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.

  2. Dans GitHub, sélectionnez Actions > Exécuter le flot de travail pour démarrer un examen d'analyse statique à l'aide du script .yaml présent dans la branche.