Configuration de l'automatisation des examens avec Azure et des conteneurs

Le conteneur de l'interface de ligne de commande (CLI) HCL®AppScan® Source, disponible depuis HCL Harbor et depuis le portail HCL FlexNet Operations (FNO), 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 d'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'examen à partir de l'image du conteneur.

Prérequis

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
  • Environnement Azure, y compris un autre agent/hôte Linux sur lequel Docker est installé.

    Il s'agit du système ciblé pour exécuter un examen d'analyse statique à l'aide du conteneur de l'interface de ligne de commande.

  • Licence valide pour AppScan® Source for Automation et informations relatives au serveur de licences pertinentes.

  • Image de 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 depuis HCL Harbor ou HCL FNO. Avec une licence valide, votre ID HCL accorde l'accès à ces emplacements.

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

    Un script est requis pour l'examen avec le conteneur dans un pipeline Jenkins.

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

    L'application à examiner doit être accessible à partir de l'hôte Azure exécutant l'examen.

    Remarque : Le mappage de volume (chemin de mappage 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 options suivantes :
  • Fichiers paf/ppf
  • examen de dossier
Préparer 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 avec AppScan® Source installé.

    Assurez-vous que les fichiers paf et ppf se trouvent à la racine de l'application à examiner.

  2. Assurez-vous que les fichiers d'application et paf/ppf sont accessibles à partir de l'hôte/agent Jenkins.

    Par exemple, si l'application est accessible au chemin racine /usr/user1/SampleApp sur l'hôte/agent Jenkins, les fichiers paf/ppf se trouvent au niveau de /usr/user1/SampleApp/SampleApp.paf et de /usr/user1/SampleApp/SampleApp.ppf.

  3. Déterminez le nom du volume tel que le conteneur le voit.
    Par exemple, mappez /usr/user1 sur l'hôte à 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 d'interface de ligne de commande. Par exemple, SampleApp.script dans /usr/user1/SampleApp.
    Pour 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 de dossier :
  1. Assurez-vous que les fichiers d'application sont accessibles à partir de l'hôte/agent Jenkins.

    Par exemple, l'application est accessible au 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 /usr/user1 sur l'hôte à 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 d'interface de ligne de commande. Par exemple, SampleApp.script dans /usr/user1/SampleApp.
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout

Préparer l'environnement de pipeline Azure DevOps

Il existe trois façons de préparer l'environnement :
  • Utilisation de l'image du conteneur à partir d'HCL FlexNet Operations à l'aide de l'éditeur classique.
  • Utilisation de l'image du conteneur à partir d'HCL Harbor à l'aide de l'éditeur classique.
  • Utilisation de l'image du conteneur à partir d'HCL Harbor à l'aide d'un fichier de configuration YAML.
Pour préparer le pipeline Azure DevOps à l'aide de l'image de conteneur d'HCL FlexNet Operations et de l'éditeur classique :
  1. Téléchargez le conteneur de l'interface de ligne de commande AppScan® Source sur la machine virtuelle Azure à partir d'HCL FlexNet Operations (FNO).
  2. Chargez l'image du conteneur de l'interface de ligne de commande à l'aide de la commande docker load.
  3. Dans l'organisation Azure DevOps, créez un pipeline à l'aide de l'éditeur classique. Cliquez sur Utiliser l'éditeur classique.
  4. Sélectionnez le référentiel et la branche où le projet à examiner et le script de l'interface de ligne de commande sont stockés, 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 Azure dans lequel la machine virtuelle Azure configurée avec AppScan® Source le conteneur de l'interface de ligne de commande est présente.
  6. Ajoutez une nouvelle tâche Docker pour charger une image. Incluez les spécifications suivantes :
    • Version de la tâche : 0
    • Nom affiché : Indiquez un nom ou utilisez la valeur par défaut.
    • Type Container Registry : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez une connexion ou utilisez la valeur par défaut.
    • Action : Exécuter 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é : Indiquez un nom ou utilisez la valeur par défaut.
    • Type Container Registry : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez une connexion ou utilisez la valeur par défaut.
    • Commande : run
    • Arguments : --rm
    • Nom de l'image : appscan/appscan-src-cli:10.2.0
    • Volumes : /usr/user1:/wa
    • Variables d'environnement :
      • AS_INSTALL_MODE=standalone
      • 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é : Indiquez un nom ou utilisez la valeur par défaut.
    • Type Container Registry : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Connexion au service de registre Docker : Spécifiez une connexion ou utilisez la valeur par défaut.
    • Action : Exécuter une commande Docker
    • Commande : rmi appscan/appscan-src-cli:10.2.0
Pour préparer le pipeline Azure DevOps à l'aide de l'image de conteneur d'HCL Harbor avec 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'un examen. Incluez les informations requises suivantes :
    • AS_INSTALL_MODE=standalone

    • AS_LICENSE_TYPE=CLS

    • AS_LICENSE_SERVER_ID=<the license server ID>

    Vous trouverez une liste complète des paramètres ici.

  2. Dans l'organisation Azure DevOps, créez un pipeline à l'aide de l'éditeur classique. Cliquez sur Utiliser l'éditeur classique.
  3. Sélectionnez le référentiel et la branche où le projet à examiner et le script de l'interface de ligne de commande sont stockés, 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 Azure dans lequel la machine virtuelle Azure configurée avec AppScan® Source le conteneur de l'interface de ligne de commande 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é : Indiquez un nom ou utilisez la valeur par défaut.
    • Container Registry : Spécifiez le type de registre ou utilisez la valeur par défaut.
    • Action : Exécuter une commande Docker
    • Commande : run
    • Arguments : --rm --env-file /usr/user1/env.list -v $(Agent.BuildDirectory)/s:/wa script hclcr.io/appscan/appscan-src-cli:10.2.0 /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é : Indiquez un nom ou utilisez la valeur par défaut.
    • Type Container Registry : 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écuter une commande Docker
    • Commande : rmi appscan/appscan-src-cli:10.2.0

Pour préparer le pipeline Azure DevOps à l'aide de l'image de conteneur d'HCL Harbor avec YAML

Utilisez l'exemple de script suivant comme guide pour exécuter un examen d'analyse statique à l'aide d'un conteneur d'interface de ligne de commande AppScan Source à partir d'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'

Lancer un examen d'analyse statique à l'aide de l'image du conteneur

Pour lancer l'examen à l'aide de pipeline :

  1. Dans Azure, assurez-vous que la machine virtuelle Azure dans le 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'examen d'analyse statique.