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

Pour lancer une analyse de vos fichiers, vous devez générer un fichier IRX que vous envoyez vers le cloud. Le plug-in HCL AppScan on Cloud Gradle est utilisé pour automatiser l'examen de Java et des projets Web Java dans Gradle. Celui-ci génère un fichier IRX pour les projets Gradle dans lesquels le plug-in "java" et/ou les plug-ins "war" sont utilisés. Il peut également soumettre automatiquement le fichier IRX généré au service ASoC pour analyse. Pour plus d'informations sur l'application du plug-in et pour déterminer la dernière version du plug-in, voir Plug-in Gradle.

Procédure

Pour générer un fichier IRX pour un projet Gradle :
  1. Dans l'invite de commande, émettez une commande pour changer de répertoire et vous placer dans celui qui contient votre projet Gradle.
  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 appscan-prepare.

      Cette commande génère un fichier IRX pour tous les projets Java et War de la génération. Le fichier IRX est généré par défaut dans le répertoire de génération du projet racine. Vous pouvez soumettre le fichier IRX à ASoC ultérieurement.

    • Pour générer le fichier IRX et l'envoyer au service ASoC pour analyse, exécutez appscan-analyze.

      Cette commande génère un fichier IRX et le soumet au service ASoC pour analyse. Cette tâche nécessite une clé d'API, un mot de passe et un ID d'application.

    Options configurables

    Les options suivantes peuvent être définies via les paramètres JVM sur la ligne de commande en utilisant la syntaxe -Doption=value ou via un bloc appscanSettings dans le script de génération.

    Tableau 1. Options configurables pour le plug-in Gradle
    Option Valeur par défaut Description
    irxName Le nom du projet racine. Le nom du fichier .irx généré.
    irxDir Le répertoire de génération du projet racine. L'emplacement du fichier .irx généré.
    appId Null. Requis pour appscan-analyze L'ID de l'application dans le service ASoC.
    appscanKey Null. Requis pour appscan-analyze La clé API de l'utilisateur pour l'authentification.
    appscanSecret Null. Requis pour appscan-analyze Le mot de passe de clé API de l'utilisateur pour l'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.
    Exemple 1 : spécification des options sur la ligne de commande :
    gradle appscan-prepare -DirxName=MyApp
    Exemple 2 : spécification des options dans le script de génération :
    appscanSettings {
    	irxName="MyApp"
    	irxDir="/myApplication/sample"
    }
    
    Remarque : Les options appscanKey et appscanSecret peuvent être spécifiées dans le fichier gradle.properties de l'utilisateur. Cette action évite d'avoir à spécifier des informations d'authentification dans le script de génération ou dans la ligne de commande. Par exemple, ajoutez les lignes suivantes à ~/.gradle/gradle.properties (créez le fichier s'il n'existe pas) :
    appscanKey="2358cd02-3fs3-322c-62c9-b5cc63c61f2a"
    appscanSecret="qU939siTXgF7csk3jSig+Vza7ilWLu/Uy/ReWye5E/c="
    
    Vous pouvez générer ici un couple clé/mot de passe d'API. Voir Génération de clés d'API pour des informations supplémentaires.
    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 Gradle

Pourquoi et quand exécuter cette tâche

Pour chiffrer votre secret d'API, utilisez le plug-in de données d'identification Gradle avec appscan-gradle-plugin.
Remarque : La dernière version du plug-in de données d'identification nécessite Gradle 5.0 ou une version plus récente. Pour plus d'informations sur le plug-in, consultez gradle-credentials-plugin.

Procédure

  1. Appliquez le plug-in de données d'identification dans votre projet avec appscan-gradle-plugin :
    plugins {
    	id 'nu.studer.credentials' version '2.1'
    	id ' com.hcl.security.appscan' version '1.0.2'
    }
  2. Exécutez la commande suivante pour chiffrer votre secret d'API :
    gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
    Par défaut, la valeur chiffrée sera stockée et extraite de ~/.gradle/ gradle.encrypted.properites. Spécifiez un emplacement différent à l'aide de la propriété credentialsLocation.
    gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1 -PcredentialsLocation=/some/directory
  3. Définissez la valeur appscanKey et la valeur appscanSecret chiffrée à l'aide d'un bloc appscanSettings dans le script de génération :
    appscanSettings {
    	appscanKey=22iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
    	appscanSecret=credentials.appscanSecret
    appId=95e69f47-9547-4378-ab93-f5d48ada52cc1
    }
    Vous pouvez également définir ASoC appId ici.
  4. Exécutez appscan-analyze :
    gradle appscan-analyze
    Si vous n'avez pas spécifié appId dans le script de génération, définissez-le sur la ligne de commande au moment de l'exécution :
    gradle appscan-analyze -DappId=95e69f47-9547-4378-ab93-f5d48ada52cc1
    Si vous avez utilisé la propriété credentialsLocation lors du chiffrement de la valeur appscanSecret, spécifiez également cette propriété au moment de l'exécution :
    gradle appscan-analyze -PcredentialsLocation=/some/directory