ASoC et GitLab

. Utilisez AppScan sur Cloud avec GitLab pour exécuter des tests de sécurité d'analyse statique (SAST) sur les fichiers de votre référentiel à chaque requête de fusion, empêchant ainsi les vulnérabilités d'atteindre la branche principale. Les résultats sont stockés dans AppScan sur Cloud.

S'enregistrer

Si vous n'avez pas encore de compte, inscrivez-vous sur HCL AppScan on Cloud (ASOC) pour générer votre clé d'API et votre secret d'API.

Configuration

  1. Générez votre clé d'API ASoC et votre secret d'API sur la page API.

    La clé d'API et le secret d'API correspondent aux paramètres ASOC_KEY et ASOC_SECRET de cette action. Notez la clé et le secret.

  2. Créez l'application dans ASoC.

    Les applications servent de conteneur pour stocker tous les examens liés au même projet.

  3. Copiez l'ID de l'application. Sélectionnez Application > <votre application>, puis cliquez sur Copier en regard d'ID de l'application sous Détails de l'application.

    L'ID de l'application dans ASoC correspond à APP_ID pour cette intégration.

  4. Créez trois variables dans GitLab. Sélectionnez Paramètres > CI/CD > Variables, et définissez les variables comme suit :
    Variable Valeur
    APP_ID ID de l'application d'ASoC
    ASOC_KEY Clé d'API d'ASoC
    ASOC_SECRET Secret d'API d'ASoC

  5. Copiez .gitlab-ci.yaml et Dockerfile à la racine de votre référentiel GitLab.
  6. Générez votre propre outil d'exécution. Sélectionnez Paramètres > CI/CD > Outils d'exécution et suivez les étapes de la section Outils d'exécution spécifiques.
  7. Sur le système sur lequel vous configurez l'outil d'exécution GitLab, connectez-vous et clonez votre référentiel GitLab si celui-ci n'existe pas déjà. Assurez-vous qu'un moteur Docker est installé sur cette machine.
  8. Générez une nouvelle image Docker nommée saclient à partir du Dockerfile. Remplacez le répertoire par la racine du référentiel et exécutez la commande suivante pour créer l'image Docker :
     docker build -t saclient . 
    Important : Le point à la fin indique le répertoire actuel.
  9. Dans GitLab, pour empêcher les fusions en cas d'échec de l'examen, activez Pipelines must succeed dans Settings > Merge requests > Merge checks.
  10. Vérifiez qu'une nouvelle tâche d'examen est lancée lorsque de nouvelles requêtes de fusion sont créées dans Settings > CI/CD > Pipelines.

Exemple

Si vous installez l'outil d'exécution GitLab sur CentOS, générez un outil d'exécution comme suit :
  1. Téléchargez le fichier binaire de votre système d'exploitation :
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
  2. Définissez le droit d'exécution :
    sudo chmod +x /usr/local/bin/gitlab-runner
  3. Créez un utilisateur de l'outil d'exécution GitLab :
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  4. Installez l'outil et exécutez-le en tant que service :
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner 
    sudo gitlab-runner start
  5. Enregistrez l'outil d'exécution :
    sudo gitlab-runner register --url https://gitlab.com/ --registration-token $REGISTRATION_TOKEN

Informations supplémentaires

Le script yaml actuel contient un exemple de vérification de stratégie de sécurité qui échoue à l'analyse si le nombre de problèmes de sécurité autorisés dépasse un certain seuil. Dans l'exemple, maxIssuesAllowed est défini sur 200.