Le Code Risk Analyzer (CRA) étant en voie d'abandon, les analyses Syft et Grype constituent des alternatives qui offrent la plupart des fonctionnalités du CRA. Consultez la page Désactivation des analyses de Code Risk Analyzer pour désactiver les fonctionnalités de la CRA.

Configuration des analyses d' IBM Cloud Code Risk Analyzer

Vous pouvez utiliser IBM Cloud Code Risk Analyzer pour analyser votre code à la recherche de vulnérabilités et valider la conformité aux règles spécifiées.

Lorsque Code Risk Analyzer évalue votre application, il génère une nomenclature logicielle (SBOM) qui répertorie les dépendances et les informations de licence disponibles pour tous les paquets tiers. Il peut être généré au format cycloneDX-specific si nécessaire. Les packages répertoriés dans le fichier SBOM sont analysés à la recherche de vulnérabilités. Ce fichier peut être généré au format cycloneDX-specific. Vous pouvez également activer l'auto-remédiation des vulnérabilités détectées pour les applications écrites en Node.js, Maven ou Gradle.

  • Tous vos fichiers Kubernetes sont analysés pour leur conformité.
  • Tous vos plans Terraform sont analysés pour leur conformité.

L'analyseur de risque de code est disponible dans toutes les régions IBM Cloud où les chaînes d'outils sont prises en charge. Pour plus d'informations, voir la documentation du plug-in.

Configuration des examens

Pour générer le fichier SBOM, une analyse de Code Risk Analyzer accède aux artefacts dans le chemin de répertoire spécifié et effectue une reconnaissance approfondie pour identifier toutes les dépendances, y compris les dépendances de type trasitive. Aucune variable d'environnement de pipeline spécifique n'est nécessaire pour générer le fichier SBOM et détecter les vulnérabilités, mais si le chemin contient un fichier Dockerfile, l'image de base est extraite et les images sont générées pour chaque étape de génération spécifiée dans le fichier.

Si votre fichier Dockerfile requiert ARGS, définissez un fichier ARG individuel en tant que variable d'environnement dans un script personnalisé et indiquez l'emplacement du script personnalisé en tant que pipeline pouvant être apparié.

Docker variables d'environnement du script
Variables d'environnement Description Obligatoire ou facultatif Objectif
cra-custom-script-path Chemin d'accès au script dans votre répertoire. Optionnel - Définit les variables d'environnement nécessaires au script Docker.

Pour plus d'informations, voir Scripts personnalisés

Par défaut, les fichiers Terraform ne sont pas analysés. Pour analyser votre fichier Terraform, vous devez définir les variables d'environnement de pipeline suivantes.

Variables d'environnement pour l'analyse Terraform
Variables d'environnement Description Obligatoire ou facultatif Objectif
opt-in-tfsec True ou False. Défini sur false par défaut. Facultatif Analyse les fichiers Terraform pour la sécurité.
opt-in-cra-tf-validate True ou False. Défini sur false par défaut. Facultatif Valide les fichiers Terraform.

L'analyse de Code Risk Analyzer utilise la clé d'API fournie pour se connecter à l'interface de ligne de commande IBMCloud et déclenche une génération Docker. La session d'interface de ligne de commande IBM Cloud existante continue d'être utilisée pour le reste de cette étape CRA. Toutefois, la session de l'interface de ligne de commande IBM Cloud expire au bout de 20 minutes pour une connexion par clé d'API standard. Si le processus de génération prend plus de 20 minutes, l'étape CRA échoue avec un message d'erreur 401 car la session a expiré. Une variable d'environnement ibmcloud-enable-session-keep-alive a été introduite pour maintenir la session de l'interface de ligne de commande IBMCloud active pendant de longues opérations.

IBMCloud Live Session pour un travail de longue durée
Variables d'environnement Description Type Obligatoire ou facultatif Objectif
ibmcloud-enable-session-keep-alive 0 ou 1. Valeur par défaut : 0. sélection Facultatif Conservez la session d'interface de ligne de commande IBMCloud active pour les travaux à exécution longue dans l'analyse de Code Risk Analyzer.

Par défaut, la commande deployment-analyze de Code Risk Analyzer exécute des vérifications de configuration sur les manifestes de déploiement Kubernetes. La commande deployment-analyze de Code Risk Analyzer s'exécute avec le jeu d'options --strict. Pour ignorer les fichiers lors du déploiement de Code Risk Analyzer-analyse, la variable d'environnement suivante doit être utilisée.

IBMCloud CRA CIS analyse les variables d'environnement
Variables d'environnement Description Obligatoire ou facultatif Objectif
cra-cis-fileignore-path Chemin du fichier .fileignore dans votre référentiel. Facultatif Indiquez le chemin du fichier .fileignore qui contient les informations des fichiers à ignorer lors du déploiement de Code Risk Analyzer-analyse.

Omission des vulnérabilités pour le déploiement de votre application

L'analyseur de risque de code est conçu pour trouver les paquets vulnérables avant qu'un comité consultatif ne le fasse. Dans des circonstances exceptionnelles, vous devrez peut-être déployer votre application même si des packages vulnérables ont été détectés et n'ont pas encore été corrigés. Dans la mesure du possible, vous devez mettre à jour les packages ou les supprimer avant de redéployer votre code.

Pour ignorer des fichiers spécifiques et terminer votre envoi en production, vous pouvez créer un fichier appelé .cra/.cveignore dans la racine du référentiel analysé avec le schéma suivant:

[
  {
    "cve": "string",
    "alwaysOmit": "bool",
    "untilRemediationAvailable": "bool",
    "expiration": "string"
  },
]

Le fragment de code suivant montre un exemple de fichier .cveignore :

[
  {
    "cve": "CVE-2021-27290",
    "alwaysOmit": true
  },
  {
    "cve": "CVE-2020-8244",
    "untilRemediationAvailable": true,
  },
  {
    "cve": "CLAIR-JAVA-ORGAPACHEHTTPCOMPONENTS-31517",
    "expiration": "2022-02-10T22:08:41+04:00",
    "comment": "Additional security measures are in place"
  }
]

Ce fichier s'appelait auparavant .craveomit. Le format de fichier d'origine a été déprécié et remplacé par .cra/.cveignore. Mettez à jour votre code pour utiliser le fichier le plus récent.

Vous pouvez en savoir plus sur les documents du plug-in de Code Risk Analyzer ou consulter les documents CRA obsolètes.

Correction automatique des vulnérabilités

Vous pouvez utiliser Code Risk Analyzer dans le cadre du pipeline Continuous Compliance (CC) pour non seulement rechercher des vulnérabilités, mais également les corriger automatiquement. Code Risk Analyzer fonctionne dans le cadre de l'étape compliance-check du pipeline. Par défaut, la correction automatique est désactivée.

La résolution automatique est disponible uniquement pour le pipeline CC.

Lorsque la résolution automatique est activée, Code Risk Analyzer tente de mettre à jour un package vulnérable vers une version non vunlnerable en créant une demande d'extraction avec les correctifs identifiés par rapport à la branche par défaut de votre référentiel. Par défaut, Code Risk Analyzer met à jour les versions mineures et les versions de correctif pour le package vulnérable principal ainsi que les packages dépendants, mais ne met pas à jour la version majeure d'un package. Si la demande d'extraction est acceptable, vous pouvez l'approuver et la fusionner manuellement. Chaque fois que le pipeline est exécuté, une nouvelle demande d'extraction est générée. Par conséquent, veillez à vérifier et à fusionner à mesure qu'ils sont ouverts afin d'éviter les doublons.

La résolution automatique est disponible pour les référentiels Enterprise GitHub et GitLab et peut modifier les fichiers spécifiés dans le tableau suivant.

Écosystèmes soutenus
Ecosystème Fichiers modifiables
nodejs package.json et package-lock.json
Gradle build.gradle, gradle.lockfile et buildscript-gradle.lockfile
Maven pom.xml

Pour commencer à corriger automatiquement les vulnérabilités, définissez les variables d'environnement facultatives suivantes pour votre pipeline.

Écosystèmes soutenus
Variable Description Paramètres par défaut
opt-in-cra-auto-remediation Active la résolution automatique pour votre pipeline. false
Pour commencer à résoudre le problème, définissez cette variable sur true.
opt-in-cra-auto-remediation-force Force une mise à jour de package majeure dans le cadre de la demande d'extraction qui est ouverte. false
Pour forcer la mise à jour d'un package majeur, définissez cette variable sur true.
opt-in-cra-auto-remediation-enabled-repos Indique les référentiels spécifiques dans lesquels vous souhaitez activer la résolution automatique. Activé pour tous les référentiels renvoyés lorsque list_repos est appelé. Pour spécifier des référentiels spécifiques, indiquez une liste de noms de référentiel séparés par des virgules.

Désactivation des analyses de Code Risk Analyzer

Définissez les variables d'environnement suivantes pour désactiver les analyses de Code Risk Analyzer.

Variable Type Obligatoire ou facultatif valeur de désactivation Valeur par défaut Alternatif
cra-bom-generate Enumération Facultatif 0 1 But
cra-vulnerability-scan Enumération Facultatif 0 1 Grype
cra-deploy-analysis Enumération Facultatif 0 1 Checkov
opt-in-cra-tf-validate Enumération Facultatif 0 1 Checkov

Par défaut, l'analyse des vulnérabilités et l'analyse du déploiement sont définies comme des contrôles obligatoires pour la protection des succursales. Si vous souhaitez désactiver l'une ou l'autre de ces analyses, veillez à personnaliser les contrôles de conformité et à configurer les règles de protection des branches.