Exécution d'une analyse statique pour un projet Maven

Pour lancer une analyse de vos fichiers, vous devez générer un fichier IRX que vous envoyez vers le cloud. Le plug-in Maven HCL AppScan on Cloud est utilisé pour automatiser les examens des projets jar, war et ear dans Maven. Il génère un fichier IRX pour les projets Maven dotés de types de packages « jar », « war » et « ear ». Il peut également envoyer automatiquement le fichier IRX généré au service ASoC pour analyse. Si vous souhaitez examiner un projet Maven, procédez comme suit pour créer ce fichier.

Pourquoi et quand exécuter cette tâche

Cette tâche décrit comment exécuter une analyse statique pour un projet Maven à l'aide du plug-in HCL AppScan on Cloud Maven :

Procédure

  1. Dans l'invite de commande, exécutez une commande pour changer de répertoire et vous placer dans celui qui contient votre projet Maven (le dossier qui contient le fichier pom.xml).
  2. Définissez la variable d'environnement APPSCAN_OPTS pour spécifier les options globales avant d'exécuter un examen.
    Utilisez APPSCAN_OPTS pour définir la vitesse d'examen, activer l'examen des secrets, activer la journalisation du débogage, etc.
  3. Exécutez l'une de ces commandes :
    • Pour générer le fichier IRX uniquement, exécutez :
      mvn com.hcl.security:appscan-maven-plugin:prepare
      Cette commande génère un seul fichier IRX pour tous les projets jar, war et ear de la génération. Le fichier IRX est généré par défaut dans le répertoire cible du projet root. Vous pouvez envoyer le fichier IRX à ASoC ultérieurement.
    • Pour générer le fichier IRX et l'envoyer au service ASoC pour analyse, exécutez
      mvn package com.hcl.security:appscan-maven-plugin:analyze
      Cette commande génère un fichier IRX et l'envoie au service ASoC pour analyse. Cette tâche exige un ID de l'application (appId), une clé d'API (appscanKey) et un secret d'API (appscanSecret).
      Remarque : Si votre projet Maven dépend du temps de compilation d'un autre projet dans la même génération de réacteur, un bogue Maven existant peut entraîner l'échec de la commande. Pour éviter ce problème, exécutez l'objectif package en même temps que l'objectif prepare ou analyze. Exemple :
      mvn package com.hcl.security:appscan-maven-plugin:prepare
      ou
      mvn package com.hcl.security:appscan-maven-plugin:analyze
    Tableau 1. Options configurables pour le plug-in Maven
    Option Valeur par défaut Description
    output
    <root project>/target/<root project name>.irx
    Nom et/ou emplacement du fichier IRX généré. Si le chemin sélectionné n'existe pas, le chemin par défaut est appliqué (<root project>/target/<root project name>.irx)
    appId

    Null. Requis pour analyze.

    L'ID de l'application dans le service cloud.
    appscanKey

    Null. Requis pour analyze.

    L'ID de la clé d'API de l'utilisateur pour identification.
    appscanSecret

    Null. Requis pour analyze.

    Le secret de la clé d'API de l'utilisateur pour authentification.
    namespaces Null. Remplacez la détection automatique des espaces de noms. Définissez sur "" pour désactiver la détection d'espace de noms.
    Conseil : L'Utilitaire de ligne de commande contient un compilateur JSP Tomcat. Ce compilateur JSP est utilisé par défaut lors de la génération de fichiers IRX. Si vous générez un fichier IRX pour un fichier war ou ear et que vous souhaitez utiliser un compilateur JSP différent, exécutez la commande avec l'option -DjspCompiler. Exemple :
    mvn com.hcl.security:appscan-maven-plugin:prepare -DjspCompiler=<jsp_compiler>

    <jsp_compiler> correspond au chemin d'accès au compilateur JSP que vous souhaitez utiliser (spécifiez le répertoire root du serveur).

    Conseil : Par défaut, le code tiers n'est pas examiné lors de la génération de fichiers IRX. Vous pouvez modifier les paramètres d'exclusion de code tiers en suivant les instructions de la section Gestion d'exclusions Java et .NET tierces. Pour inclure le code tiers, exécutez la commande avec l'option -DthirdParty.

    Si vous êtes un développeur de code tiers qui serait normalement exclu dans un examen, vous pouvez utiliser le paramètre permettant d'inclure le code tiers.

    Conseil : La commande ci-dessus peut être raccourcie de l'une des deux manières suivantes :
    • Ajoutez les éléments suivants à la section <plugins> de votre fichier pom.xml :
      <plugin>
        <groupId>com.hcl.security</groupId>
        <artifactId>appscan-maven-plugin</artifactId>
        <version>1.0.10</version>
      </plugin>
      Avec cette méthode, vous pouvez modifier votre fichier pom.xml, et tous les autres utilisateurs obtiennent alors la modification automatiquement. Toutefois, le numéro de version doit être spécifié. Par conséquent, le fichier pom.xml doit être modifié et mis à jour manuellement lorsque des versions plus récentes seront disponibles.
    • Ajoutez notre groupId (com.hcl.security) à la liste des groupes de plug-ins de votre fichier settings.xml Maven. Par exemple, ajoutez les éléments suivants à ~/.m2/settings.xml ou ${maven.home}/conf/settings.xml :
      <pluginGroups>
        <pluginGroup>com.hcl.security</pluginGroup>
      </pluginGroups>
      Après cette modification, vous pouvez exécuter l'objectif prepare à l'aide du préfixe appscan. Exemple :
      mvn appscan:prepare

    Pour plus d'informations, voir Configuration de Maven pour rechercher des plug-ins.

    Remarque : Pour passer outre le comportement des espaces de noms par défaut, utilisez l'option de ligne de commande -Dnamespaces="<semi-colon delimited list of namespaces to scan>". Par défaut, ASoC détecte les espaces de nom des fichiers source pour le projet donné et ajoute à la liste autorisée les classes examinées pour n'inclure que celles qui existent dans le même espace de noms. La définition de cette propriété sur une chaîne vide ("") désactive complètement la mise sur liste blanche.
    Remarque : Si vous souhaitez apporter vos propres modifications au plug-in, vous pouvez trouver la source ici.

Chiffrement d'appscanSecret à l'aide du plug-in Maven

Pourquoi et quand exécuter cette tâche

Utilisez appscan-maven-plugin pour chiffrer votre secret d'API. Consultez les conseils et astuces pour chiffrer les mots de passe Maven ici.

Procédure

  1. Exécutez la commande suivante pour générer un mot de passe maître chiffré :
    mvn -emp myMasterPassword
  2. Copiez la sortie dans ~/.m2/settings-security.xml et placez-la dans la valeur de la balise <master> :
    <settingsSecurity>
      <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master>
    </settingsSecurity>
    Remarque : Vous pouvez stocker le fichier settings-security.xml à un autre emplacement. Dans ce cas, vous devez spécifier l'emplacement au moment de l'exécution en utilisant l'option -Dsettings.security=path/to/security-settings.xml.
  3. Exécutez la commande suivante pour générer un secret d'API chiffré :
    mvn -ep apiSecret
  4. Copiez la sortie de la commande dans ~/.m2/settings.xml et placez-la dans la valeur de la balise <password>. La balise <username> doit contenir la valeur de la clé d'API de l'utilisateur :
    <settings>
      <servers>
        <server>
          <id>appscan</id>
                    <username>MyapiKey</username>
    <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password>
        </server>
      </servers>
      ...
    </settings>
  5. Exécutez l'objectif analyze avec le plug-in Maven :
    mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO
    Si vous avez placé votre fichier settings-security.xml dans un emplacement autre que l'emplacement par défaut, vous devez spécifier cet emplacement au moment de l'exécution :
    mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO -Dsettings.security=path/to/security-settings.xml