Configuration de l'automatisation de l'examen avec Azure et les conteneurs

Le conteneur de l'interface de ligne de commande (CLI) HCL® AppScan® Source, disponible depuis HCL Harbor et HCL Software License Management Portal, peut être utilisé pour automatiser les examens d'analyse statique avec Azure, 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 l'environnement de pipeline Azure DevOps.
  3. Lancez l'analyse à partir de l'image du conteneur.

Conditions préalables

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
  • Environnement Azure, comprenant un ou plusieurs agents/hôtes Linux 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 Portail de gestion des licences logicielles HCL. Avec une licence valide, votre ID HCL accorde l'accès à ces emplacements.

  • Script de l'interface de ligne de commande AppScan® Source

    Un script est nécessaire pour analyser le conteneur dans un pipeline Jenkins.

  • Accès au contenu de l'hôte/agent Azure à partir du conteneur :

    L'application à analyser doit être accessible depuis l'hôte Azure qui exécute l'analyse.

    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éparer 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 depuis l'hôte/agent Jenkins.

    Par exemple, si l'application est accessible au chemin root /usr/user1/SampleApp sur l'hôte/agent Jenkins, les fichiers paf/ppf sont situés dans /usr/user1/SampleApp/SampleApp.paf et /usr/user1/SampleApp/SampleApp.ppf.

  3. Déterminez le nom du volume tel que le conteneur le voit.
    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 de l'application sont accessibles à partir de l'hôte/agent Jenkins.

    Par exemple, l'application est accessible via le chemin /usr/user1/SampleApp sur l'hôte/agent Jenkins.

  2. Déterminez le nom du volume tel que le conteneur le voit.
    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 l'environnement de pipeline Azure DevOps

Il existe trois façons de préparer l'environnement :
  • Utilisation de l'image de conteneur de HCL Software License Management Portal à l'aide de l'éditeur classique.
  • Utilisation de l'image de conteneur de HCL Harbor à l'aide de l'éditeur classique.
  • Utilisation de l'image de conteneur de HCL Harbor à l'aide d'un fichier de configuration YAML.
Pour préparer l'Azure DevOps Pipeline à l'aide de l'image de conteneur de Portail de gestion des licences logicielles HCL et de l'éditeur classique :
  1. Téléchargez le conteneur CLI AppScan® Source sur la machine virtuelle Azure à partir de Portail de gestion des licences logicielles HCL.
  2. Chargez l'image du conteneur CLI à l'aide de la commande docker load.
  3. Au sein de l'organisation Azure DevOps, créez un nouveau pipeline à l'aide de l'éditeur classique. Cliquez sur Utiliser l'éditeur classique.
  4. Sélectionnez le référentiel et la branche dans lesquels le projet doit être analysé et le script CLI est stocké, puis cliquez sur Continuer.
    1. Sélectionnez Azure Repos Git comme source.
    2. Sélectionnez Projet d'équipe.
    3. Sélectionnez le Référentiel.
  5. Sélectionnez le Pool d'agents dans lequel la machine virtuelle Azure configurée avec AppScan® Source le conteneur CLI est présente.
  6. Ajoutez une nouvelle tâche Docker pour charger une image. Inclure les spécifications suivantes :
    • Version de la tâche : 0
    • Nom affiché : Spécifiez une requête ou utilisez celle par défaut.
    • Type de registre du conteneur : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez une requête ou utilisez celle par défaut.
    • Action : Exécutez une commande Docker
    • Commande : load -i /usr/user1/appscan-src-cli-10.2.0.tar.gz
  7. Ajoutez une nouvelle tâche Docker pour exécuter une image avec les spécifications suivantes :
    • Version de la tâche : 1
    • Nom affiché : Spécifiez une requête ou utilisez celle par défaut.
    • Type de registre du conteneur : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez une requête ou utilisez celle par défaut.
    • Commande : exécutez
    • Arguments : --rm
    • Nom de l'image : appscan/appscan-src-cli:10.2.0
    • Volumes : /usr/user1:/wa
    • Variables d'environnement :
      • AS_INSTALL_MODE=autonome
      • AS_LICENSE_TYPE=CLS
      • AS_LICENSE_SERVER_ID=<l'ID du serveur de licences>
      • AS_LICENSE_SERVER=hclsoftware
    • Commande de conteneur : script /wa/cli.script
  8. Ajoutez une nouvelle tâche Docker pour le nettoyage avec les spécifications suivantes :
    • Version de la tâche : 0
    • Nom affiché : Spécifiez une requête ou utilisez celle par défaut.
    • Type de registre du conteneur : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez une requête ou utilisez celle par défaut.
    • Action : Exécutez une commande Docker
    • Commande : rmi appscan/appscan-src-cli:10.2.0
Pour préparer l'Azure DevOps Pipeline à l'aide de l'image de conteneur de HCL Harbor en utilisant l'éditeur classique :
  1. Créez un fichier (par exemple, env.list) contenant les variables d'environnement qui doivent être mises à la disposition du conteneur CLI lors d'une analyse. Entrez les informations requises suivantes :
    • AS_INSTALL_MODE=standalone

    • AS_LICENSE_TYPE=CLS

    • AS_LICENSE_SERVER_ID=<the license server ID>

    Une liste complète des paramètres est disponible ici.

  2. Au sein de l'organisation Azure DevOps, créez un nouveau pipeline à l'aide de l'éditeur classique. Cliquez sur Utiliser l'éditeur classique.
  3. Sélectionnez le référentiel et la branche dans lesquels le projet doit être analysé et le script CLI est stocké, puis cliquez sur Continuer.
    1. Sélectionnez Azure Repos Git comme source.
    2. Sélectionnez Projet d'équipe.
    3. Sélectionnez le Référentiel.
  4. Sélectionnez le Pool d'agents dans lequel la machine virtuelle Azure configurée avec AppScan® Source le conteneur CLI est présente.
  5. Ajoutez une nouvelle tâche Docker pour exécuter une image avec les spécifications suivantes :
    • Version de la tâche : 2
    • Nom affiché : Spécifiez une requête ou utilisez celle par défaut.
    • Registre de conteneur : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Action : Exécutez une commande Docker
    • Commande : exécutez
    • Arguments : --RM --env-file /usr/user1/env.list -v $(Agent BuildDirectory)/s:/wa hclcr.io/appscan/appscan-src-cli:10.2.0 script /wa/cli.script
  6. Ajoutez une nouvelle tâche Docker pour le nettoyage avec les spécifications suivantes :
    • Version de la tâche : 0
    • Nom affiché : Spécifiez une requête ou utilisez celle par défaut.
    • Type de registre du conteneur : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Action : Exécutez une commande Docker
    • Commande : rmi appscan/appscan-src-cli:10.2.0

Pour préparer l'Azure DevOps Pipeline à l'aide de l'image de conteneur de HCL Harbor en utilisant YAML

Utilisez l'exemple de script suivant comme guide pour exécuter une analyse statique à l'aide d'un conteneur CLI AppScan Source de HCL Harbor.

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- main

pool:
  name: Ubuntu-VM-pool
  #vmImage: ubuntu-latest

#steps:
#- script: echo Hello, world!
#  displayName: 'Run a one-line script'

steps:
- task: CmdLine@2
  inputs:
    script: |
- task: Docker@1
  displayName: 'Run an image'
  inputs:
    containerregistrytype: 'Container Registry'
    dockerRegistryEndpoint: 'MyConnection’
    command: 'Run an image'
    arguments: '--rm'
    imageName: 'hclcr.io/appscan/appscan-src-cli:10.2.0 '
    volumes: '$(Agent.WorkFolder)<path to downloaded source files>:/wa'
    envVars: |
     AS_INSTALL_MODE=standalone
     AS_LICENSE_TYPE=CLS
     AS_LICENSE_SERVER_ID=<specify the license server ID>
     AS_LICENSE_SERVER=<specify the license server name>
    containerCommand: 'script /wa/cli.script'
    runInBackground: false
- task: Docker@0
  displayName: Clean
  inputs:
    containerregistrytype: 'Container Registry'
    dockerRegistryConnection: 'MyConnection'
    action: 'Run a Docker command'
    customCommand: ' rmi hclcr.io/appscan/appscan-src-cli:10.2.0'

Lancez une analyse statique à partir de l'image du conteneur

Pour lancer l'analyse à l'aide du pipeline :

  1. Dans Azure, assurez-vous que la machine virtuelle Azure du pool d'agents Azure est en ligne.
  2. Sur la page pipelines, sélectionnez le pipeline à exécuter.
  3. Sélectionnez Exécuter le pipeline pour démarrer l'analyse statique.