IBM Cloud Docs
Plug-in Code Risk Analyzer pour IBM Cloud

Plug-in Code Risk Analyzer pour IBM Cloud

L'interface de ligne de commande ( IBM Cloud® ) fournit des commandes pour l'analyse des risques liés au code. Vous pouvez utiliser l'interface CLI IBM Cloud pour analyser votre code afin de détecter les vulnérabilités et la conformité à certaines règles. Code Risk Analyzer est disponible dans toutes les régions d' IBM Cloud, dans lesquelles les chaînes d'outils sont prises en charge.

Utilisez l'interface de ligne de commande pour effectuer les tâches suivantes :

  • Générez une nomenclature (BOM) qui répertorie les dépendances et les informations de licence disponibles de tous les packages de système d'exploitation tiers et de tous les packages d'application. Vous pouvez également générer cette sortie au format CycloneDX-specific.
  • Découvrir les vulnérabilités dans les colis qui sont répertoriés dans la nomenclature. Vous pouvez également consulter le rapport généré au format CycloneDX-specific, ou utiliser la correction automatique des vulnérabilités pour les applications Node.js, Maven ou Gradle (Groovy).
  • Analyser un plan Terraform pour le respect de certaines règles.
  • Analyser des fichiers Kubernetes pour le respect de certaines règles.

A partir de janvier 2024, Code Risk Analyzer utilise les données de vulnérabilité fournies par le projet open source Clair au lieu des données de la société commerciale Snyk Limited. Aucune action spécifique n'est requise de votre part à la suite de cette modification. Toutefois, vous pouvez observer des différences dans les détails des CVE signalés par Code Risk Analyzer.

Contenu pris en charge

Code Risk Analyzer prend en charge les langages Java™, Node.js, Python et Go. Le tableau suivant répertorie et décrit le contenu pris en charge par Code Risk Analyzer.

Contenu pris en charge
de contenu Description
Java Le repo nécessite Maven ou Gradle pour l'automatisation de la construction. Maven utilise le fichier pom.xml pour calculer les dépendances, et Gradle utilise le fichier build.gradle(.kts). Code Risk Analyzer peut automatiser la correction des risques pour Maven et Groovy ( Gradle ).
Node.js package-lock.json calcule les dépendances. Pour Node.js, l'analyseur de risque de code peut également automatiser la correction. Assurez-vous que la version npm installée correspond à la version npm du projet.
Python Les dépendances sont calculées à l'aide du fichier requirements.txt.
Golang Prend en charge la gestion des dépendances go mod et go dep. Pour go mod, le fichier go.sum doit se trouver dans le référentiel. Pour go dep, le fichier Gopkg.lock doit se trouver dans le référentiel.
Dockerfiles Les fichiers du référentiel avec le modèle Dockerfile sont pris en compte. Pour les images de conteneurs, les distributions Debian, Red Hat Enterprise Linux®, Alpine et Ubuntu Linux sont prises en charge.
Kubernetes Les fichiers avec les suffixes .yaml et .yml sont pris en compte. La valeur d' kind doit être définie sur Pod, ReplicaSet, ReplicationController, Deployment, Daemonset, Statefulset, Job, CronJob, NetworkPolicy ou Ingress.
Calico Les fichiers avec les suffixes .yaml et .yml sont pris en compte. La valeur kind doit être définie sur NetworkPolicy, GlobalNetworkPolicy, Profile, NetworkSet, GlobalNetworkSet ou HostEndpoint.
Terraform Le fichier de plan Terraform doit être généré à l'aide de IBM Cloud en tant que fournisseur Terraform.

Code Risk Analyzer examine les dépendances de code source et d'image dans vos référentiels pour détecter les vulnérabilités. Le tableau suivant présente les sources d'informations de vulnérabilité que Code Risk Analyzer consulte pour différents types de dépendances.

Dépendances prises en charge par Code Risk Analyzer pour la recherche de vulnérabilités
Dépendance Versions prises en charge Source des avis de sécurité
Image Alpine Toutes les versions stables avec prise en charge de la sécurité des fournisseurs. Base de donnéesAlpine SecDB.
Image Debian Toutes les versions stables avec prise en charge de la sécurité du fournisseur.

Les CVE des packages binaires qui sont associés au Debian linux, tel que linux-libc-dev, ne sont pas signalées. La plupart de ces packages binaires sont des modules de noyau et de noyau, qui ne sont pas exécutés dans des images de conteneur.

Debian Security Bug Tracker.
GoogleContainerTools image sans distorsion Toutes les versions stables avec prise en charge de la sécurité des fournisseurs. GoogleContainerTools sans distorsion
Red Hat® Enterprise Linux® (RHEL) image RHEL 6, RHEL/UBI 7, RHEL/UBI 8 et RHEL/UBI 9 API de données de sécuritéRed Hat.
Image Ubuntu Toutes les versions stables avec prise en charge de la sécurité des fournisseurs. Ubuntu CVE Tracker.
Go, npm ( JavaScript ), Maven ( Java ), PyPI ( Python ), RubyGems ( Ruby ), et Packagist (PHP) Toutes les versions stables avec prise en charge de la sécurité des fournisseurs. Base de données Open Source Vulnerability.

Problèmes connus de Code Risk Analyzer

Code Risk Analyzer ne peut pas reconnaître les vulnérabilités des packages d'application qui n'utilisent pas un schéma de gestion des versions, tel que major.minor.patch. Par exemple, les versions préliminaires ou les versions contenant des métadonnées de génération ne sont pas prises en charge.

Prérequis

  • Installez l'interface de ligne de commande IBM Cloud. Pour plus d'informations, voir Download IBM Cloud CLI.

  • Installez le plug-in de l'interface de ligne de commande Code Risk Analyzer en exécutant la commande suivante :

ibmcloud plugin install cra
  • Vérifiez que vous pouvez accéder à une chaîne d'outils dans l'une des régions prises en charge. La chaîne d'outils n'est pas obligée d'avoir des outils. Pour plus d'informations sur les chaînes d'outils, voir Création d'une chaîne d'outils à partir d'une application.

  • Indiquez l'ID de la chaîne d'outils en définissant la variable d'environnement TOOLCHAIN_ID :

export TOOLCHAIN_ID=e22195a5-11e3-44ba-9533-e7c18a3a61a7
  • Connectez-vous à une région spécifique de IBM Cloud en exécutant la commande suivante, où [region] correspond à la région où la chaîne d'outils a été créée.
ibmcloud login -r [region]
  • En option, pour un contrôle et une sécurité accrus de vos données lors de l'utilisation de CLI, vous avez la possibilité d'utiliser des routes privées vers des points de terminaison d' IBM Cloud. Vous devez d'abord activer le routage et le transfert virtuels dans votre compte, puis vous pouvez activer l'utilisation des noeuds finaux de service privés IBM Cloud. Pour plus d'informations sur la configuration de votre compte pour prendre en charge l'option de connectivité privée, voir Activation de VRF et de noeuds finaux de service.

Utilisez la commande suivante pour vous connecter à un point de terminaison privé où [region] est la région où la chaîne d'outils a été créée.

ibmcloud login -a private.cloud.ibm.com -r [region]

Commandes liées à l'utilisation de l'interface de ligne de commande

Vous recevez des notifications sur la ligne de commande lorsque des mises à jour de l'interface de ligne de commande et des plug-ins IBM Cloud sont disponibles. Veillez à maintenir votre interface de ligne de commande à jour afin de pouvoir utiliser les dernières commandes. Vous pouvez afficher la version en cours de tous les plug-ins installés en exécutant la commande ibmcloud plugin list.

Aide Code Risk Analyzer

La commande suivante affiche la liste des commandes Code Risk Analyzer :

ibmcloud cra --help

Aide sur la commande Code Risk Analyzer

La commande suivante affiche les détails des indicateurs qui sont utilisés avec une commande. Utilisez ibmcloud cra --help pour afficher les commandes disponibles.

ibmcloud cra <command> --help

Nomenclature (BOM)

La commande bom-generate accède aux artefacts dans le chemin de répertoire spécifié et effectue une reconnaissance approfondie pour identifier toutes les dépendances, notamment les dépendances transitives. La commande identifie également les licences sous lesquelles ces dépendances sont distribuées. Une nomenclature est créée pour capturer un instantané de toutes les dépendances. Vous pouvez générer la nomenclature au format standard ou au format SBOM d' CycloneDX's.

ibmcloud cra bom-generate

Exigences liées à la commande BOM

La commande bom-generate dépend de certaines commandes externes :

  • Si le chemin contient des fichiers Docker, cette commande extrait les images de base et construit des images pour chaque étape de génération dans chaque fichier Docker. Dans ce scénario, la commande bom-generate requiert que les commandes Docker cli et tar soient disponibles.
  • Si le chemin contient des fichiers Maven, cette commande utilise mvn pour générer une liste de dépendances. Dans ce scénario, la commande bom-generate requiert que la commande mvn soit disponible.
  • Si le chemin contient des fichiers Gradle, cette commande utilise gradle pour générer une liste de dépendances. Dans ce scénario, la commande bom-generate requiert que la commande gradle soit disponible.
  • Si le chemin contient des fichiers Node.js package-json et que cette commande est utilisée pour générer un fichier package-lock.json correspondant, la commande bom-generate utilise npm pour générer le fichier package-lock.json. Dans ce scénario, la commande requiert que la commande npm soit disponible.
  • Si le chemin contient le fichier Python requirements.txt, la commande utilise pip pour générer les dépendances du package. Dans ce scénario, la commande bom-generate requiert que la commande pip soit disponible. Python version 2 et Python version 3 sont pris en charge.

Si vous utilisez des fichiers Docker, connectez-vous à votre registre de conteneurs à partir duquel les images de base doivent être extraites.

Si votre fichier Docker requiert ARGS, définissez un ARG individuel comme variable d'environnement avant d'exécuter la commande. Par exemple, si le fichier Docker utilise un ARG IAM_USER, exportez une variable d'environnement nommée IAM_USER : export IAM_USER='value'. L'interface de ligne de commande transmet automatiquement ces variables d'environnement à la commande docker build.

Vous pouvez également spécifier explicitement l'indicateur DOCKERBUILDFLAGS. Pour exporter DOCKERBUILDFLAGS avec l'indicateur ARGS Docker, entrez la commande suivante :

export DOCKERBUILDFLAGS="--build-arg IAM_USER --build-arg API_KEY"

Options de la commande BOM

Le tableau suivant répertorie les options de commande que vous pouvez utiliser pour générer une nomenclature avec la commande BOM ( bom-generate ).

Options de commande pour la génération d'une nomenclature
Options de commande Obligatoire ou facultatif Description
--path Obligatoire Chemin du répertoire du projet à analyser.
-r, --report Obligatoire Nom du fichier dans lequel stocker le rapport BOM.
-a, --asset-type Facultatif Contrôles de sécurité à exécuter (applications, image, système d'exploitation, tout). Par défaut, cette option est définie sur all. L'option apps permet de limiter la reconnaissance aux packages d'applications. L'option image permet de limiter la reconnaissance aux images de base utilisées dans les fichiers Docker. L'option os permet de limiter la reconnaissance aux étapes de génération dans les fichiers Docker uniquement. Vous pouvez indiquer plusieurs valeurs en utilisant une virgule pour délimiter les valeurs, telles que -a os,image,apps.
-p, --prev-report Facultatif Utilisez le rapport BOM précédent pour accélérer la commande. Par exemple, si un fichier Docker n'a pas été mis à jour depuis la génération du dernier rapport, la commande ignore la reconnaissance des packages de ce fichier Docker. Le même scénario s'applique aux autres fichiers manifestes, tels que le fichier package-lock.json.
-c, --dockerbuildcontext Facultatif Si spécifié, CRA utilise le répertoire dans le paramètre de chemin comme contexte de génération Docker lors de l'analyse de l'étape de génération.
-o, --output Facultatif Sélectionnez le format de rapport BOM. Vous pouvez générer la sortie au format Standard BOM (standard) ou au format SBOM de CycloneDX (cyclonedx). La valeur par défaut est standard. Vous pouvez stocker les deux formats en saisissant chaque format séparé par une virgule, sans espace.
-f, --dockerbuildflags Facultatif Personnalisez la commande de génération Docker pour l'analyse de l'étape de génération. Au lieu d'utiliser cet indicateur de ligne de commande, vous pouvez spécifier la valeur dans une variable d'environnement nommée DOCKERBUILDFLAGS. Par défaut, cette option de commande est définie sur ''. Si vous utilisez cette option, assurez-vous qu'il s'agit du dernier indicateur fourni à la commande.
-d, --dockerfilepattern Facultatif Modèle permettant d'identifier le fichier Docker dans le référentiel.
-g, --gradle.excludeconfigurations Facultatif Excluez les configurations Gradle, par exemple : runtimeClasspath,testCompileClasspath. Par défaut, cette option de commande est définie sur ''.
-l, --gradleprops Facultatif Personnalisez la commande Gradle avec les propriétés de l'analyse de dépendance Gradle.
-m, --maven.excludescopes Facultatif Excluez les portées Maven, par exemple : test,compile. Exemple : "test, compilation". Par défaut, cette option de commande est définie sur ''.
-n, --nodejs.createpackagelock Facultatif Activez la tâche de génération du fichier package-lock.json pour les projets node.js.
--region Facultatif Région ibmcloud dans laquelle se trouve la chaîne d'outils.
--toolchainid Facultatif ID de la chaîne d'outils cible à utiliser.
-v, --verbose Facultatif Activez les messages de journal prolixe.

Ignorer les fichiers

Si le chemin contient le fichier .cra/.fileignore, les fichiers spécifiés dans le fichier .fileignore ne sont pas analysés pour les dépendances. Le fichier d' .fileignore s doit respecter les règles des fichiers d' .gitignore s. Semblable à un fichier d' .gitignore, le fichier d' .fileignore peut inclure des commentaires, des répertoires à ignorer, des fichiers à ignorer et d'autres modèles.

L'exemple de fichier .fileignore suivant montre comment exclure les scripts bash, les modules de noeud node_module et le fichier Dockerfile :

# Ignore nested functional_tests directory
**/functional_tests

# Ignore bash scripts
**/*.sh

# This should allow this one file
!test/gatling_tests/loginTobx.sh

# Ignore node_modules
node_modules

# Exclude the dockerfile from scanning
Dockerfile

Définition de plusieurs contextes de construction d' Docker

Lorsque vous travaillez avec plusieurs Dockerfiles au sein d'un même projet, vous pouvez définir des contextes de construction distincts pour chaque Dockerfile. Cela peut être réalisé en utilisant un fichier d' .cra/.dockerbuildcontext, qui est un fichier JSON qui mappe les chemins d'accès Dockerfile à leurs contextes de construction correspondants.

Si un fichier d' .cra/.dockerbuildcontext s existe dans votre répertoire de projet, les commandes de construction de l' Docker e CRA utiliseront les chemins d'accès spécifiés dans ce fichier comme contextes de construction pour les Dockerfiles associés. Les clés de l'objet JSON représentent les chemins d'accès relatifs aux Dockerfiles, tandis que les valeurs spécifient les chemins d'accès relatifs aux contextes de construction respectifs.

Voici un exemple de fichier d' .dockerbuildcontext s qui définit différents contextes de construction pour plusieurs Dockerfiles :

{
  "Dockerfile": "./",
  "path/to/different/Dockerfile": "./another/Path"
}

Exemple

Les fragments de code suivants montrent comment utiliser la commande bom-generate :

ibmcloud cra bom-generate --path PATH --report REPORT [--asset-type ASSET-TYPE] [--dockerbuildcontext] [--dockerbuildflags DOCKERBUILDFLAGS] [--dockerfilepattern DOCKERFILEPATTERN] [--gradle.excludeconfigurations GRADLE.EXCLUDECONFIGURATIONS] [--maven.excludescopes MAVEN.EXCLUDESCOPES] [--nodejs.createpackagelock] [--prev-report PREV-REPORT] [--region REGION] [--toolchainid TOOLCHAINID] [--verbose]
ibmcloud cra bom --path . --report bomreport.json

Analyse de vulnérabilité

La commande vulnerability-scan attend une nomenclature au format standard en entrée et détecte les vulnérabilités dans les packages d'application et les packages de système d'exploitation qui sont répertoriés dans la nomenclature. Sur la base de renseignements riches sur les menaces collectées à partir de plusieurs sources de CVE (Common Vulnerabilities and Exposures), des recommandations de correction ciblées sont fournies. Code Risk Analyzer peut également effectuer une résolution automatique sur les packages vulnérables pour les applications basées sur Node.js uniquement. Vous pouvez également générer ce rapport au format standard ou au format VEX ( CycloneDX's ).

ibmcloud cra vulnerability-scan

Options de la commande d'analyse de vulnérabilité

Le tableau suivant répertorie les options d'utilisation de la commande vulnerability-scan.

Options de commande pour effectuer une analyse de vulnérabilité
Options de commande Obligatoire ou facultatif Description
-b, --bom Obligatoire Le chemin d'accès du fichier de nomenclature qui a été généré à l'aide de la commande bom-generate. Ce BOM doit être au format standard.
-a, --autofix Facultatif Corrige des types spécifiques de vulnérabilités d'application. Cette option est disponible uniquement pour les applications Node.js, Maven et Gradle.
-f, --commentfile Facultatif Indique le fichier dans lequel le rapport de démarque est créé. Cette commande est disponible uniquement avec autofix.
-c, --cveignore Facultatif Chemin du fichier CVE Ignore qui contient la liste des CVE à ignorer.
-e, --excludedev Facultatif Indique que vous ne souhaitez pas que la commande signale les CVE pour les dépendances de développement.
--force Facultatif Force une mise à jour pour les packages de noeud de niveau supérieur, même lorsque la version principale est différente. Cette commande est disponible uniquement avec autofix.
--include-nofix Facultatif Incluez ou excluez la génération de rapports sur les CVE qui n'ont pas de mesures correctives connues. Par défaut, cette option est définie sur app. L'option app est utilisée pour inclure uniquement les CVE de package d'application sans correctif. L'option os est utilisée pour inclure uniquement les CVE de package de système d'exploitation sans correctif. L'option all est utilisée pour inclure des CVE d'application et de package de système d'exploitation sans aucun correctif. L'option none est utilisée pour exclure les CVE d'application et de package de système d'exploitation sans correctifs.
--path Obligatoire si --autofix est activé Chemin du répertoire du projet à analyser. Cette commande est disponible uniquement avec autofix.
--region Facultatif Région ibmcloud de la chaîne d'outils.
-r, --report Facultatif Chemin d'accès au rapport généré.
-o, --output Facultatif Sélectionne le format de rapport CVE. Vous pouvez générer la sortie au format Standard CVE (standard) ou au format VEX de CycloneDX (cyclonedx). La valeur par défaut est standard.
-s, --strict Facultatif Entraîne l'échec de la commande (état de sortie 2) si des vulnérabilités sont détectées.
--toolchainid Facultatif L'ID de la chaîne d'outils cible.

Ignorer les vulnérabilités

Si le paramètre -c ou --cveignore est indiqué, la commande recherche ce fichier et ne rapporte pas les CVE spécifiés dans le fichier. Vous pouvez configurer les CVE pour les omettre indéfiniment jusqu'à ce qu'une résolution soit disponible ou jusqu'à une date d'expiration spécifiée.

L'exemple suivant montre un schéma JSON pour le fichier .cveignore :

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

Les propriétés suivantes sont prises en charge pour chaque entrée du fichier .cveignore :

  • cve - La vulnérabilité à omettre. La valeur de ce bien est un identifiant CVE.
  • alwaysOmit - Si cette propriété est définie sur true, la vulnérabilité est omise jusqu'à ce qu'elle soit modifiée. Cette propriété est prioritaire sur les autres valeurs de propriété.
  • untilRemediationAvailable - Si cette propriété est définie sur true, la vulnérabilité est omise jusqu'à ce qu'un chemin de résolution soit disponible. Si une résolution devient disponible, la vulnérabilité n'est pas omise et un message s'affiche. Cette propriété est prioritaire sur la valeurs de la propriété d'arrivée à expiration.
  • expiration - Si cette propriété est définie sur true et que la date d'expiration n'est pas atteinte, la vulnérabilité est omise. Si la date d'arrivée à expiration est atteinte, la vulnérabilité n'est pas omise et un message s'affiche. Utilisez le format d'heure RFC3339 (yyyy-MM-ddTHH:mm:ss[+-]Z) pour définir cette propriété.

Code Risk Analyzer utilise uniquement ces propriétés définies. Vous pouvez ajouter des propriétés sans effet sur les fonctions. Si une vulnérabilité définie dans .cveignore n'est pas omise, un journal est généré pour en expliquer la raison. Si une vulnérabilité définie dans le fichier .cveignore est omise, aucun journal individuel n'est affiché. Le nombre d'omissions et la liste des ID de vulnérabilité, avec le nom du package, qui sont omis sont consignés après l'achèvement d'un rapport.

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

[
    {
        "cve": "CVE-2021-27290",
        "alwaysOmit": true
    },
    {
        "cve": "CVE-2020-8244",
        "untilRemediationAvailable": true,
    }
]

Exemple

Les fragments de code suivants montrent comment utiliser la commande vulnerability-scan :

ibmcloud cra vulnerability-scan --bom BOM [--cveignore CVEIGNORE] [--report REPORT] [--excludedev] [--include-nofix app,os,all,none] [--region REGION] [--strict] [--toolchainid TOOLCHAINID] [--output OUTPUTFILE]
ibmcloud cra cve --bom ./bom-file.json --cveignore ./cveignore-example.json --report ./output-vulnerability-report.json --excludedev --include-nofix all --strict

Déploiement

La commande deployment-analyze exécute des vérifications de configuration sur les manifestes de déploiement Kubernetes.

ibmcloud cra deployment-analyze

Cette commande fournit des instructions prescriptives pour l'établissement d'une situation de configuration sécurisée pour les conteneurs Docker. Code Risk Analyzer utilise ces configurations de sécurité comme point de référence et identifie les contrôles de sécurité permettant de vérifier les artefacts de déploiement, tels que les fichiers .yaml, pour les applications Kubernetes. Cette commande fournit également des évaluations des risques pour chaque échec de contrôle.

Le tableau suivant répertorie les contrôles que vous pouvez mettre en œuvre dans DevSecOps,, tels qu'identifiés sur CIS Docker 1.13.0. Des contrôles supplémentaires sont ajoutés en fonction des références open source de Kubernetes Common Configuration Scoring System(KCCSS).

contrôles de sécurité
ID Règle Risque
5.3 Vérifiez que les conteneurs ne disposent pas de la fonction CAP_SYS_ADMIN. Elevé
5.3 Vérifiez que les conteneurs ne disposent pas de la fonction CAP_NET_RAW. Elevé
5.4 Assurez-vous que les conteneurs privilégiés ne sont pas utilisés. Elevé
5.5 Assurez-vous que les répertoires sensibles du système hôte ne sont pas montés sur les conteneurs. Moyen
5.7 Assurez-vous que les ports privilégiés ne sont pas mappés dans des conteneurs. Faible
5.9 Vérifiez que l'espace de nom réseau de l'hôte n'est pas partagé. Moyen
5.10 Vérifiez que l'utilisation de la mémoire pour le conteneur est limitée. Moyen
5.11 Vérifiez que la priorité d'UC appropriée est définie sur le conteneur. Moyen
5.12 Vérifiez que le système de fichiers racine du conteneur est monté en lecture seule. Moyen
5.15 Vérifiez que l'espace de nom de processus de l'hôte n'est pas partagé. Moyen
5.16 Vérifiez que l'espace de nom IPC de l'hôte n'est pas partagé. Moyen
5.31 Vérifiez que le socket Docker n'est pas monté dans des conteneurs. Elevé
Assurez-vous que les conteneurs n'autorisent pas une allocation non sécurisée des ressources d'UC. Moyen
Assurez-vous que les conteneurs n'autorisent pas l'escalade des privilèges. Moyen
Assurez-vous que les conteneurs n'exposent pas les parties non sécurisées de /proc. Moyen
Assurez-vous que les conteneurs ne sont pas exposés via un port d'hôte partagé. Moyen

Options de la commande de déploiement

Le tableau suivant répertorie les options de commande que vous pouvez utiliser pour la commande deployment-analyze.

Options de commande pour l'analyse du déploiement.
Options de commande Obligatoire ou facultatif Description
--path Obligatoire Chemin du répertoire du projet à analyser.
-r, --report Obligatoire Nom du fichier dans lequel créer le rapport.
-f, --fileignore Facultatif Chemin du fichier .fileignore.
-s, --strict Facultatif Résultats de l'échec de la commande (état de sortie 2) lorsque des risques de déploiement sont détectés.

Exemple

Les fragments de code suivants montrent comment utiliser la commande deployment-analyze :

ibmcloud cra deployment-analyze --path PATH --report REPORT [--fileignore FILE_IGNORE] [--strict]
ibmcloud cra depl --path ./sampleDir --report deployment-report.json --strict

Analyseur Terraform

Vous pouvez utiliser la commande terraform-validate pour analyser la conformité d'un plan Terraform avant d'appliquer le plan à un environnement. Cette commande analyse le fichier de plan Terraform spécifié pour la conformité avec les règles spécifiées dans IBM Cloud® Security and Compliance Center. Cette commande génère un rapport de conformité.

Vous pouvez spécifier un fichier de stratégie qui répertorie les règles et les paramètres à utiliser pour la validation. Si aucun fichier de stratégie n'est spécifié, cette commande analyse le plan pour l'ensemble de règles par défaut.

ibmcloud cra terraform-validate

Options de la commande Terraform

Le tableau suivant répertorie les options que vous pouvez utiliser pour la commande terraform-validate.

Options de commande pour effectuer une analyse Terraform
Options de commande Obligatoire ou facultatif Description
-r, --report Obligatoire Chemin d'accès au rapport généré.
-t, --tf-plan Obligatoire Chemin d'accès au fichier de plan Terraform d'entrée.
-p, --policy-file Facultatif Chemin d'accès au profil de règle. Cet indicateur peut accepter un profil Security and Compliance Center V2 ou un fichier JSON personnalisé avec un ensemble de règles Security and Compliance Center.
-q, --quiet Facultatif Affiche uniquement des informations récapitulatives.
-s, --strict Facultatif Entraîne l'échec de la commande (état de sortie 2) si les règles échouent.
-v, --verbose Facultatif Affiche la liste des règles Security and Compliance Center de transmission après la liste des règles ayant échoué.
-a, --attachment-file Facultatif Cet indicateur accepte un fichier qui possède un code JSON pour les pièces jointes Security and Compliance Center V2. Pour utiliser cet indicateur, un profil Security and Compliance Center V2 doit être spécifié avec l'indicateur -p.

Exemple

Les fragments de code suivants montrent comment utiliser la commande terraform-validate :

ibmcloud cra terraform-validate --tf-plan TFPLANFILE --report REPORT [--policy-file POLICYFILE] [--quiet] [--region REGION] [--strict] [--toolchainid TOOLCHAINID] [--verbose] [--attachment-file ATTACHMENT_FILE]
ibmcloud cra tf -r report-user-profile.json -t ./tfplan.json  -p ./user-profile.json --verbose

Exemple de fichier de plan Terraform pour la commande terraform-validate

{
    "format_version": "0.2",
    "terraform_version": "1.0.2",
    "planned_values": {
        "root_module": {
            "child_modules": [
                {
                    "resources": [
                        {
                            "address": "module.instance.ibm_resource_instance.cos_instance",
                            "mode": "managed",
                            "type": "ibm_resource_instance",
                            "name": "cos_instance",
                            "provider_name": "registry.terraform.io/ibm-cloud/ibm",
                            "schema_version": 0,
                            "values": {
                                "location": "global",
                                "parameters": null,
                                "plan": "lite",
                                "service": "cloud-object-storage",
                                "timeouts": null
                            },
                            "sensitive_values": {
                                "extensions": {},
                                "last_operation": {},
                                "plan_history": [],
                                "tags": []
                            }
                        }
                    ],
                    "address": "module.instance"
                },
                {
                    "resources": [
                        {
                            "address": "module.instance_config.ibm_cos_bucket.bad_resource_cos_bucket_missing_all_configuration[0]",
                            "mode": "managed",
                            "type": "ibm_cos_bucket",
                            "name": "bad_resource_cos_bucket_missing_all_configuration",
                            "index": 0,
                            "provider_name": "registry.terraform.io/ibm-cloud/ibm",
                            "schema_version": 0,
                            "values": {
                                "activity_tracking": [],
                                "allowed_ip": null,
                                "archive_rule": [],
                                "cross_region_location": null,
                                "endpoint_type": "public",
                                "expire_rule": [],
                                "force_delete": true,
                                "key_protect": null,
                                "metrics_monitoring": [],
                                "region_location": "us-south",
                                "retention_rule": [],
                                "single_site_location": null,
                                "storage_class": "standard",
                                "timeouts": null
                            },
                            "sensitive_values": {
                                "activity_tracking": [],
                                "archive_rule": [],
                                "expire_rule": [],
                                "metrics_monitoring": [],
                                "retention_rule": []
                            }
                        },
                        {
                            "address": "module.instance_config.ibm_cos_bucket.bad_resource_cos_bucket_missing_all_configuration[1]",
                            "mode": "managed",
                            "type": "ibm_cos_bucket",
                            "name": "bad_resource_cos_bucket_missing_all_configuration",
                            "index": 1,
                            "provider_name": "registry.terraform.io/ibm-cloud/ibm",
                            "schema_version": 0,
                            "values": {
                                "activity_tracking": [],
                                "allowed_ip": null,
                                "archive_rule": [],
                                "cross_region_location": null,
                                "endpoint_type": "public",
                                "expire_rule": [],
                                "force_delete": true,
                                "key_protect": null,
                                "metrics_monitoring": [],
                                "region_location": "us-south",
                                "retention_rule": [],
                                "single_site_location": null,
                                "storage_class": "standard",
                                "timeouts": null
                            },
                            "sensitive_values": {
                                "activity_tracking": [],
                                "archive_rule": [],
                                "expire_rule": [],
                                "metrics_monitoring": [],
                                "retention_rule": []
                            }
                        }
                    ],
                    "address": "module.instance_config"
                }
            ]
        }
    },
    "resource_changes": [
        {
            "address": "module.instance.ibm_resource_instance.cos_instance",
            "module_address": "module.instance",
            "mode": "managed",
            "type": "ibm_resource_instance",
            "name": "cos_instance",
            "provider_name": "registry.terraform.io/ibm-cloud/ibm",
            "change": {
                "actions": [
                    "create"
                ],
                "before": null,
                "after": {
                    "location": "global",
                    "parameters": null,
                    "plan": "lite",
                    "service": "cloud-object-storage",
                    "timeouts": null
                },
                "after_unknown": {
                    "account_id": true,
                    "allow_cleanup": true,
                    "created_at": true,
                    "created_by": true,
                    "crn": true,
                    "dashboard_url": true,
                    "deleted_at": true,
                    "deleted_by": true,
                    "extensions": true,
                    "guid": true,
                    "id": true,
                    "last_operation": true,
                    "locked": true,
                    "name": true,
                    "plan_history": true,
                    "resource_aliases_url": true,
                    "resource_bindings_url": true,
                    "resource_controller_url": true,
                    "resource_crn": true,
                    "resource_group_crn": true,
                    "resource_group_id": true,
                    "resource_group_name": true,
                    "resource_id": true,
                    "resource_keys_url": true,
                    "resource_name": true,
                    "resource_plan_id": true,
                    "resource_status": true,
                    "restored_at": true,
                    "restored_by": true,
                    "scheduled_reclaim_at": true,
                    "scheduled_reclaim_by": true,
                    "service_endpoints": true,
                    "state": true,
                    "status": true,
                    "sub_type": true,
                    "tags": true,
                    "target_crn": true,
                    "type": true,
                    "update_at": true,
                    "update_by": true
                },
                "before_sensitive": false,
                "after_sensitive": {
                    "extensions": {},
                    "last_operation": {},
                    "plan_history": [],
                    "tags": []
                }
            }
        },
        {
            "address": "module.instance_config.ibm_cos_bucket.bad_resource_cos_bucket_missing_all_configuration[0]",
            "module_address": "module.instance_config",
            "mode": "managed",
            "type": "ibm_cos_bucket",
            "name": "bad_resource_cos_bucket_missing_all_configuration",
            "index": 0,
            "provider_name": "registry.terraform.io/ibm-cloud/ibm",
            "change": {
                "actions": [
                    "create"
                ],
                "before": null,
                "after": {
                    "activity_tracking": [],
                    "allowed_ip": null,
                    "archive_rule": [],
                    "cross_region_location": null,
                    "endpoint_type": "public",
                    "expire_rule": [],
                    "force_delete": true,
                    "key_protect": null,
                    "metrics_monitoring": [],
                    "region_location": "us-south",
                    "retention_rule": [],
                    "single_site_location": null,
                    "storage_class": "standard",
                    "timeouts": null
                },
                "after_unknown": {
                    "activity_tracking": [],
                    "archive_rule": [],
                    "bucket_name": true,
                    "crn": true,
                    "expire_rule": [],
                    "id": true,
                    "metrics_monitoring": [],
                    "resource_instance_id": true,
                    "retention_rule": [],
                    "s3_endpoint_private": true,
                    "s3_endpoint_public": true
                },
                "before_sensitive": false,
                "after_sensitive": {
                    "activity_tracking": [],
                    "archive_rule": [],
                    "expire_rule": [],
                    "metrics_monitoring": [],
                    "retention_rule": []
                }
            }
        },
        {
            "address": "module.instance_config.ibm_cos_bucket.bad_resource_cos_bucket_missing_all_configuration[1]",
            "module_address": "module.instance_config",
            "mode": "managed",
            "type": "ibm_cos_bucket",
            "name": "bad_resource_cos_bucket_missing_all_configuration",
            "index": 1,
            "provider_name": "registry.terraform.io/ibm-cloud/ibm",
            "change": {
                "actions": [
                    "create"
                ],
                "before": null,
                "after": {
                    "activity_tracking": [],
                    "allowed_ip": null,
                    "archive_rule": [],
                    "cross_region_location": null,
                    "endpoint_type": "public",
                    "expire_rule": [],
                    "force_delete": true,
                    "key_protect": null,
                    "metrics_monitoring": [],
                    "region_location": "us-south",
                    "retention_rule": [],
                    "single_site_location": null,
                    "storage_class": "standard",
                    "timeouts": null
                },
                "after_unknown": {
                    "activity_tracking": [],
                    "archive_rule": [],
                    "bucket_name": true,
                    "crn": true,
                    "expire_rule": [],
                    "id": true,
                    "metrics_monitoring": [],
                    "resource_instance_id": true,
                    "retention_rule": [],
                    "s3_endpoint_private": true,
                    "s3_endpoint_public": true
                },
                "before_sensitive": false,
                "after_sensitive": {
                    "activity_tracking": [],
                    "archive_rule": [],
                    "expire_rule": [],
                    "metrics_monitoring": [],
                    "retention_rule": []
                }
            }
        }
    ],
    "configuration": {
        "provider_config": {
            "ibm": {
                "name": "ibm",
                "version_constraint": "1.25.0",
                "expressions": {
                    "ibmcloud_api_key": {
                        "constant_value": "BYwB2M3TJdDMlCpHaxaWilNHVod05TVkqjIbGqrlm9Iz"
                    }
                }
            },
            "module.instance:ibm": {
                "name": "ibm",
                "version_constraint": "1.25.0",
                "module_address": "module.instance",
                "expressions": {
                    "ibmcloud_api_key": {
                        "constant_value": "BYwB2M3TJdDMlCpHaxaWilNHVod05TVkqjIbGqrlm9Iz"
                    }
                }
            },
            "module.instance_config:ibm": {
                "name": "ibm",
                "version_constraint": "1.25.0",
                "module_address": "module.instance_config"
            }
        },
        "root_module": {
            "module_calls": {
                "instance": {
                    "source": "./instance_module",
                    "module": {
                        "outputs": {
                            "cos_instance_id": {
                                "expression": {
                                    "references": [
                                        "ibm_resource_instance.cos_instance.id",
                                        "ibm_resource_instance.cos_instance"
                                    ]
                                }
                            }
                        },
                        "resources": [
                            {
                                "address": "ibm_resource_instance.cos_instance",
                                "mode": "managed",
                                "type": "ibm_resource_instance",
                                "name": "cos_instance",
                                "provider_config_key": "instance:ibm",
                                "expressions": {
                                    "location": {
                                        "constant_value": "global"
                                    },
                                    "name": {},
                                    "plan": {
                                        "constant_value": "lite"
                                    },
                                    "service": {
                                        "constant_value": "cloud-object-storage"
                                    }
                                },
                                "schema_version": 0
                            }
                        ]
                    }
                },
                "instance_config": {
                    "source": "./instance_config_module",
                    "expressions": {
                        "cos_instance_id": {
                            "references": [
                                "module.instance.cos_instance_id",
                                "module.instance"
                            ]
                        }
                    },
                    "module": {
                        "resources": [
                            {
                                "address": "ibm_cos_bucket.bad_resource_cos_bucket_missing_all_configuration",
                                "mode": "managed",
                                "type": "ibm_cos_bucket",
                                "name": "bad_resource_cos_bucket_missing_all_configuration",
                                "provider_config_key": "instance_config:ibm",
                                "expressions": {
                                    "bucket_name": {},
                                    "region_location": {
                                        "constant_value": "us-south"
                                    },
                                    "resource_instance_id": {
                                        "references": [
                                            "var.cos_instance_id"
                                        ]
                                    },
                                    "storage_class": {
                                        "constant_value": "standard"
                                    }
                                },
                                "schema_version": 0,
                                "count_expression": {
                                    "constant_value": 2
                                }
                            }
                        ],
                        "variables": {
                            "cos_instance_id": {
                                "description": "COS Instance ID"
                            }
                        }
                    },
                    "depends_on": [
                        "module.instance"
                    ]
                }
            }
        }
    }
}

Exemple de schéma de fichier de profil SCC V2 pour la commande terraform-validate

{
	"title": "User Profile Standard v2 Schema",
	"type": "object",
	"properties": {
		"id": {
			"type": "string"
		},
		"profile_name": {
			"type": "string"
		},
		"profile_version": {
			"type": "string"
		},
		"controls": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"control_specifications": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"assessment_count": {
									"type": "number"
								},
								"assessments": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"assessment_type": {
												"type": "string"
											},
											"assessment_method": {
												"type": "string"
											},
											"assessment_description": {
												"type": "string"
											},
											"assessment_id": {
												"type": "string"
											},
											"parameter_count": {
												"type": "number"
											},
											"parameters": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"parameter_name": {
															"type": "string"
														},
														"parameter_display_name": {
															"type": "string"
														},
														"parameter_type": {
															"type": "string"
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"default_parameters": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"assessment_type":  {
						"type": "string"
					},
					"assessment_id": {
						"type": "string"
					},
					"parameter_name": {
						"type": "string"
					},
					"parameter_default_value": {
						"type": "string"
					},
					"parameter_display_name": {
						"type": "string"
					},
					"parameter_type": {
						"type": "string"
					}
				}
			}
		}
	},
	"required": ["default_parameters", "controls", "profile_name", "profile_version"]

Exemple de fichier de profil classique SCC V2 pour la commande terraform-validate

Vous pouvez préfixer l'ID de règle avec rule-.

{
  "schema_version": "2.0",
  "scc_rules": [
    {
      "scc_rule_id": "548a3321-6a39-400c-9c2d-0df9a13afd02"
    },
    {
      "scc_rule_id": "726ec899-505e-4de9-ac1b-9578ef62f89f"
    },
    {
      "scc_rule_id": "962e2bde-2a4f-4e07-a352-ce17708b1e85"
    },
    {
      "scc_rule_id": "9653d2c7-6290-4128-a5a3-65487ba40370"
    },
    {
      "scc_rule_id": "d8d13c3e-5ca0-46c5-a055-2475852c4ec6"
    },
    {
      "scc_rule_id": "0f7e7e60-a05c-43a7-be74-70615f14a342"
    },
    {
      "scc_rule_id": "979fd713-d39f-4efe-ba02-bf6fc07e57bb"
    },
    {
      "scc_rule_id": "rule-e76a3a81-b0d0-41fc-947d-13dc9cfff379"
    },
    {
      "scc_rule_id": "caf5e45d-ccc8-4e35-b124-e1b4c8bcab71"
    },
    {
      "scc_rule_id": "rule-1edc74ae-0dad-4ea1-865d-89e3214d240f"
    },
    {
      "scc_rule_id": "064d9004-8728-4988-b19a-1805710466f6"
    },
    {
      "scc_rule_id": "rule-caf5e45d-ccc8-4e35-b124-e1b4c8bcab71"
    }
  ],
  "scc_parameters": {
    "ibm_minimum_password_length": 12,
    "ibm_password_reuse_prevention": 4,
    "allowed_admins_per_account": "10",
    "api_keys_rotated_days": 90,
    "account_owner_last_login_days": 30,
    "no_of_admins_for_iam": 3,
    "no_of_service_id_admins_for_iam": 3,
    "no_of_managers_for_iam": 0,
    "no_of_service_id_managers_for_iam": 0,
    "iam_service_ids_max_count": 3,
    "ssh_port": 25,
    "rdp_port": 3390,
    "no_pre_shared_key_characters": 30,
    "dns_port": 60,
    "vm_nic_count": 1,
    "no_of_admins_for_container_registry ": 3,
    "no_of_service_id_admins_for_container_registry": 3,
    "no_of_managers_for_container_registry": 0,
    "no_of_service_id_managers_for_container_registry": 0,
    "access_tokens_expire": 120
  }
}

Règles Security and Compliance Center

Terraform Analyzer prend en charge les règles d' Security and Compliance Center s suivantes :

rule-f8722625-1968-4d7a-93cb-4b0f8da726da - Check whether IBMid password policy requires at least one uppercase letter
rule-789cb35b-5bdf-46d3-8b59-e1377e3b211c - Check whether IBMid password policy requires at least one lowercase letter
rule-81b36ae4-0f15-41c7-adac-fa9586ff46ab - Check whether IBMid password policy requires at least one number
rule-979fd713-d39f-4efe-ba02-bf6fc07e57bb - Check whether IBMid password policy requires minimum length of 12 characters
rule-e76a3a81-b0d0-41fc-947d-13dc9cfff379 - Check whether IBMid password policy prevents password reuse below the minimum of #
rule-759d504b-9eed-4602-8b5b-7244bf3f5690 - Check whether IBMid password can contain only printable ASCII characters (in the range 33 - 126)
rule-bcbd57e1-3cdc-4b6d-820b-2c63bc777e19 - Check whether IBMid password policy contains spaces or any of the following characters: ;:("?)<>
rule-fa06f6f2-b98e-49ac-aa55-d57de9e320d3 - Check whether IBMid uses a password meter that coaches users to create strong passwords that exceed the minimum requirements
rule-548a3321-6a39-400c-9c2d-0df9a13afd02 - Check whether IAM roles are used to create IAM policies for IBM resources
rule-726ec899-505e-4de9-ac1b-9578ef62f89f - Check whether a support role has been assigned in IAM to manage cases in the IBM Cloud Support Center
rule-962e2bde-2a4f-4e07-a352-ce17708b1e85 - Check whether API keys are not created in IAM during the initial setup of IAM users
rule-61fa114a-2bb9-43fd-8068-b873b48bdf79 - Check whether IAM users are attached to at least one access group
rule-4d86c074-097e-4ff3-a763-ccff128388e2 - Check whether multifactor authentication (MFA) is enabled at the account level
rule-0704e840-e443-4781-b9be-ec57469d09c1 - Check whether permissions for API key creation are limited and configured in IAM settings for the account owner
rule-d61c20c9-c0be-443b-af0c-0d900601e154 - Check whether Cloud Object Storage public access is disabled in IAM settings (not applicable to ACLs managed using S3 APIs)
rule-0244c010-fde6-4db3-95aa-8952bd292ac3 - Check whether permissions for service ID creation are limited and configured in IAM settings for the account owner
rule-ed64fa73-81e5-4920-8519-acfad845dd6c - Check whether Identity and Access Management (IAM) is enabled with audit logging
rule-b2232217-34a6-4fe8-a791-5903f1cc89ca - Check whether Cloud Shell is disabled in account settings
rule-10de7433-19e4-40a7-aebf-eddf1f75a68c - Check whether Cloud Object Storage is enabled with encryption
rule-7c86bb59-d677-422d-875c-0259053fad20 - Check whether Cloud Object Storage is enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-222d6531-1fc7-4485-8771-35eb46c78877 - Check whether Cloud Object Storage is accessible only through HTTPS
rule-7c52a1ce-26cd-4cde-baa7-3bfb3703cf74 - Check whether Cloudant is accessible only through HTTPS
rule-f6197ee2-31bf-4d73-aacd-316c41a48df3 - Check whether Cloud Object Storage is accessible only by using private endpoints
rule-8cbd597c-7471-42bd-9c88-36b2696456e9 - Check whether Cloud Object Storage network access is restricted to a specific IP range
rule-c97259ee-336d-4c5f-b436-1868107a9558 - Check whether Cloud Object Storage is enabled with customer-managed encryption and Keep Your Own Key (KYOK)
rule-ef1db4bb-2490-48a9-883c-a20fea3db0e5 - Check whether Databases for MongoDB is enabled with encryption
rule-7f7ca588-9412-40a9-9bd8-0e5d19141e98 - Check whether Databases for MongoDB is enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-77b99b6f-51dc-4290-b20c-7003941c7a46 - Check whether Databases for MongoDB is accessible only through HTTPS
rule-7b210b18-f849-4fa8-bd92-8e47921de51d - Check whether Databases for MongoDB is accessible only by using private endpoints
rule-c58bb2b9-7942-45ab-b9d4-e39c8430f570 - Check whether Databases for Redis is enabled with encryption
rule-e3cad136-17a8-4227-b8af-0be609da1da0 - Check whether Databases for Redis is enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-90e3908d-27c3-4050-bb12-413dfc606f5c - Check whether Databases for Redis is accessible only through HTTPS
rule-c48dfb73-ede0-4ebf-b912-214379cd4ce7 - Check whether Databases for Redis is accessible only by using private endpoints
rule-ac09e136-8581-416a-a865-e9fc35a758be - Check whether Databases for Elasticsearch is enabled with encryption
rule-871594ca-0a70-492b-8a42-6f9474445f01 - Check whether Databases for Elasticsearch is enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-47ca5017-27e9-4b8b-95d3-c2529271fbb1 - Check whether Databases for Elasticsearch is accessible only through HTTPS
rule-026e6d36-6a15-4623-846d-cab6f3b789d9 - Check whether Databases for Elasticsearch is accessible only by using private endpoints
rule-d634caeb-e5a6-467a-a4ac-8da8fd39f9ef - Check whether Databases for etcd is enabled with encryption
rule-42612696-2b8e-4fa7-8c17-78f191d2e1a0 - Check whether Databases for etcd is accessible only through HTTPS
rule-458decc2-a081-4c49-8f31-eeaf4833d8c8 - Check whether Databases for etcd is accessible only by using private endpoints
rule-4d7e56d6-f657-418c-9e49-6d248b2cf5a6 - Check whether Databases for PostgreSQL is enabled with encryption
rule-041ff30b-7167-4411-985d-5ad32ab6f850 - Check whether Databases for PostgreSQL is enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-872db4fc-2f7c-4ba0-ace7-dc468f6813c7 - Check whether Databases for PostgreSQL is accessible only through HTTPS
rule-094495cf-c092-4dcb-96b8-3654c4bcf787 - Check whether Databases for PostgreSQL is accessible only by using private endpoints
rule-beb7b289-706b-4dc0-b01d-b1d15d4331e3 - Check whether Databases for MongoDB network access is restricted to a specific IP range
rule-04d856f1-68ce-4cba-b800-ba49f3c4f1a1 - Check whether Databases for Redis network access is restricted to specific IP range
rule-b5c06228-3f38-4d98-837f-2fe10d6ff9d5 - Check whether Databases for Elasticsearch network access is restricted to a specific IP range
rule-18540c4e-b96d-4ab9-a619-d541cc5a2824 - Check whether Databases for etcd network access is restricted to a specific IP range
rule-9b2d8054-bc93-44fd-901b-91f677287e84 - Check whether Databases for PostgreSQL network access is restricted to a specific IP range
rule-f6b7a692-8e48-4e74-b957-f5d591a7a15d - Check whether Key Protect has high availability
rule-d0725d07-27e6-4079-a3bc-746d5ccae00f - Check whether Hyper Protect Crypto Services instance is enabled with a dual authorization deletion policy
rule-da567ec9-8e24-4c65-993b-ad290bfdb855 - Check whether Cloud Object Storage buckets are enabled with IBM Activity Tracker
rule-0fb54bb2-773b-4cec-81b0-1ca7d8049ba0 - Check whether Cloud Object Storage buckets are enabled with IBM Cloud Monitoring
rule-5910ed25-7ad7-42d0-8e42-905df0123346 - Check whether IBM Activity Tracker is provisioned in multiple regions in an account
rule-d592e06a-8756-4efc-a401-1ec215168f48 - Check whether IBM Activity Tracker trails are integrated with LogDNA logs
rule-c98fab05-5119-451a-b100-35df840d2326 - Check whether IBM Activity Tracker logs are encrypted at rest
rule-1cdad315-c39e-4d7e-99ef-8af88ba410c1 - Check whether Cloud Internet Services (CIS) has web application firewall enabled
rule-564ed93b-1927-4562-8a90-fbae173cdee1 - Check whether Cloud Internet Services (CIS) has DDoS protection enabled
rule-7c5f6385-67e4-4edf-bec8-c722558b2dec - Check whether Virtual Private Cloud (VPC) security groups have no inbound rules that specify source IP 0.0.0.0/0 to SSH port
rule-9653d2c7-6290-4128-a5a3-65487ba40370 - Check whether Virtual Private Cloud (VPC) security groups have no inbound rules that specify source IP 0.0.0.0/0 to RDP port
rule-96527f89-1867-4581-b923-1400e04661e0 - Check whether Virtual Private Cloud (VPC) has no rules in the default security group
rule-4f477e09-c9aa-4bfb-a6b1-eaeaca15c06a - Check whether Virtual Private Cloud (VPC) security groups have no inbound ports open to the internet (0.0.0.0/0)
rule-9407e5a8-ec51-4228-a01a-0f32364224a6 - Check whether Virtual Private Cloud (VPC) security groups have no outbound ports open to the internet (0.0.0.0/0)
rule-65f42d91-d537-4532-a2c8-c5cd377500a7 - Check whether all virtual server instances have at least one Virtual Private Cloud (VPC) security group attached
rule-9e16b8a4-1255-474e-a8a3-afed67de2627 - Check whether all network interfaces of a virtual server instance have at least one Virtual Private Cloud (VPC) security group attached
rule-9ecf7e84-aa51-42ad-875e-58e9522a5e65 - Check whether VPN for VPC has Internet Key Exchange (IKE) policy encryption that is not set to "triple_des"
rule-b4c58eff-4d19-4d33-840e-56b2ac76585a - Check whether VPN for VPC has Internet Key Exchange (IKE) policy authentication that is set to minimum "sha256"
rule-a8a69cd6-a902-4144-b652-8be68600a029 - Check whether VPN for VPC has a Diffie-Hellman group set to at least group #
rule-f98453ba-ebb9-4d96-aa13-09ef808fb4ba - Check whether VPN for VPC has IPsec policy encryption that is not set to "triple_des"
rule-09298b01-e2c5-43f1-a1b4-0b413fe4f998 - Check whether VPN for VPC has IPsec policy authentication that is set to minimum "sha256"
rule-115eb377-e256-459d-9e17-a868e128bd0c - Check whether VPN for VPC has an IPsec policy that does not have Perfect Forward Secrecy (PFS) disabled
rule-d8d13c3e-5ca0-46c5-a055-2475852c4ec6 - Check whether VPN for VPC authentication is configured with a strong pre-shared key with at least # characters
rule-53895d42-9190-47d8-9a70-0c1ebea5f7c7 - Check whether VPN for VPC has a Dead Peer Detection policy that is set to "restart"
rule-200dc6e7-96f1-49a9-9999-7e4645dc7ea6 - Check whether Application Load Balancer for VPC has public access disabled
rule-0e5151b1-9caf-433c-b4e5-be3d505e458e - Check whether Application Load Balancer for VPC is configured with multiple members in the pool
rule-bfc9d304-a086-43c0-b3ba-d0f101f616df - Check whether Application Load Balancer for VPC listener is configured with default pool
rule-8c923215-afdc-41b1-886c-64ce78741f8c - Check whether Application Load Balancer for VPC has health check configured when created
rule-d491a44c-e7bc-46bc-af07-231da0bb6501 - Check whether Application Load Balancer for VPC has a health check protocol that is either HTTP or HTTPS
rule-cb1180b7-2f8c-40ba-b2dd-207bee6bc17f - Check whether Application Load Balancer for VPC pool uses the HTTPS protocol for HTTPS listeners
rule-65b61a0f-ffdb-41ba-873d-ad329e7fc0ee - Check whether Application Load Balancer for VPC is configured to convert HTTP client requests to HTTPS
rule-d544f217-3723-4376-b3aa-037c5f201e8d - Check whether Application Load Balancer for VPC uses HTTPS (SSL & TLS) instead of HTTP
rule-773385ab-4654-4088-883d-fe9d58bc4ecb - Check whether Block Storage for VPC is enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-8ffe83cb-0ba1-47d6-a1e0-53e9932a5691 - Check whether Block Storage for VPC is enabled with customer-managed encryption and Keep Your Own Key (KYOK)
rule-f87929f7-0787-4749-a1ce-35c1f2320401 - Check whether data disks are encrypted with customer-managed keys
rule-390aa9af-c497-4ebc-9958-d572a5b7be3d - Check whether unattached disks are encrypted with customer-managed keys
rule-0f7e7e60-a05c-43a7-be74-70615f14a342 - Check whether Security Groups for VPC contains no outbound rules in security groups that specify source IP 8.8.8.8/32 to DNS port
rule-c4d50b06-9331-4f5c-a3f8-9fe8060efc9b - Check whether Security Groups for VPC doesn't allow PING for the default security group
rule-936158a6-40ff-48ca-91a1-f184aa9b0dff - Check whether Virtual Private Cloud (VPC) classic access is disabled
rule-64c0bea0-8760-4a6b-a56c-ee375a48961e - Check whether Virtual Private Cloud (VPC) has no public gateways attached
rule-64e628f7-4f3a-4c0e-85a4-40300bafe856 - Check whether Virtual Private Cloud (VPC) network access control lists don't allow ingress from 0.0.0.0/0 to any port
rule-f9137be8-2490-4afb-8cd5-a201cb167eb2 - Check whether Virtual Private Cloud (VPC) network access control lists don't allow ingress from 0.0.0.0/0 to SSH port
rule-f1e80ee7-88d5-4bf2-b42f-c863bb24601c - Check whether Virtual Private Cloud (VPC) network access control lists don't allow ingress from 0.0.0.0/0 to RDP port
rule-faacfd1f-454f-4e60-95d7-8fe01158840d - Check whether Virtual Private Cloud (VPC) network access control lists don't allow egress from 0.0.0.0/0 to any port
rule-c0314fad-f377-465e-9f16-fa5aa3d5ebbe - Check whether Virtual Servers for VPC instance has the minimum # interfaces
rule-17b54156-373a-48f9-b340-a7e47acd87b6 - Check whether Virtual Servers for VPC instance doesn't have a floating IP
rule-1af31459-ec38-4a58-91b0-956a17a38954 - Check whether Virtual Servers for VPC boot volumes are enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-4aead0cd-fe26-44f1-b552-8ffdbb86422a - Check whether Virtual Servers for VPC boot volumes are enabled with customer-managed encryption and Keep Your Own Key (KYOK)
rule-a99b5f58-98ef-4208-9a23-e4fa25115d79 - Check whether Virtual Servers for VPC data volumes are enabled with customer-managed encryption and Bring Your Own Key (BYOK)
rule-df7323fd-0b20-493c-89fe-c0b287817c99 - Check whether Virtual Servers for VPC data volumes are enabled with customer-managed encryption and Keep Your Own Key (KYOK)
rule-6970e312-329d-44dc-b683-5ab14acd6a42 - Check whether Virtual Servers for VPC is provisioned from an encrypted image
rule-24e259fb-608e-486f-bb9d-99b78ae0383c - Check whether Virtual Servers for VPC instances are identifable by the workload they are running based on the Auto Scale for VPC instance group definition
rule-250a7311-0cfd-4b43-8987-e5629f8d99ae - Check whether Application Load Balancer for VPC has application port of the workload that is identifiable by the Auto Scale for VPC instance group definition
rule-c2dd768e-9a49-4d6d-8ac5-8fcfb233a7b0 - Check whether Virtual Private Cloud (VPC) has no subnet with public gateway attached
rule-24508beb-c00a-4c6b-bd04-d38dd8cb7d71 - Check whether App ID user data is encrypted
rule-65196a37-ddcc-422d-8096-09955c4b4e5d - Check whether Event Streams is accessible through public endpoints
rule-3b2768e5-d783-4b0c-a47f-81479af34689 - Check whether Event Streams is accessible only by using private endpoints
rule-c471b983-9dc5-4659-8fb1-4d20c9d516cc - Check whether App ID redirect URIs are using HTTPS only
rule-f4d30138-01c1-409d-a469-fa99a23f2fbd - Check whether App ID redirect URIs are not using localhost or 127.0.0.1
rule-6e0c618d-523d-4352-a1d1-12bb9905b914 - Check whether App ID redirect URIs are not using wildcards (*)
rule-1d2287c7-954e-4425-897b-351c30be723c - Check whether App ID Cloud Directory users aren't able to update their own accounts
rule-9786160b-ee91-45ab-b84b-9806541e0fc6 - Check whether App ID Cloud Directory users aren't able to self-sign up to applications
rule-d9247d0e-dce5-4854-849a-4a9033c8fe8d - Check whether App ID anonymous authentication is disabled
rule-9246d682-f7c5-4aac-8751-3947e4f27b0b - Check whether App ID password strength regex is configured
rule-168f8081-dbd6-4cbc-bf19-f9934b39d59c - Check whether App ID advanced password policies are enabled
rule-dd1600d2-2e69-4ada-bca5-9e70b76ccd21 - Check whether App ID avoid password reuse policy is enabled
rule-5b662adf-fcac-4081-a10d-1aa7109aba4e - Check whether App ID password expiration policy is enabled
rule-59cb7d09-feab-48fc-b18b-ee581ca1761e - Check whether App ID prevent username in password policy is enabled
rule-0b082506-2481-4212-a150-d198357fcc3a - Check whether App ID multifactor authentication (MFA) is enabled for Cloud Directory users
rule-91734f9f-b8ff-4bfd-afb3-db4f789ac38f - Check whether App ID access tokens are configured to expire within # minutes
rule-ded212fe-7def-44ce-9480-0487067b64c4 - Check whether Kubernetes Service clusters are accessible only by using private endpoints
rule-2325054a-c338-474a-9740-0b7034487e40 - Check whether OpenShift clusters are accessible only by using private endpoints
rule-de84afba-b83a-41d6-8c80-d0b6acafe039 - Check whether OpenShift version is up-to-date

Analyse de NetworkPolicy

Il s'agit d'une fonctionnalité bêta disponible à des fins d'évaluation et de test.

La commande netpol-analyze exécute des vérifications de configuration sur les manifestes Kubernetes et Calico NetworkPolicy.

ibmcloud cra netpol-analyze

Cette commande vérifie la situation de configuration de la connectivité d'une application Kubernetes par rapport au contrôle NIST SP 800-53 SC-7(5). Il vérifie que la connectivité de chaque charge de travail est contrôlée par au moins une ressource NetworkPolicy et que les ports non sécurisés sont bloqués à la fois pour l'entrée et la sortie.

La commande netpol-analyze peut également fournir un rapport de connectivité pour l'application analysée, indiquant toutes les connexions autorisées entre les charges de travail de l'application. Vous pouvez utiliser ce rapport comme preuve de conformité ou pour faciliter le débogage des problèmes de connectivité. Vous pouvez également utiliser cette commande pour fournir des résultats lint pour les règles réseau analysées, puis utiliser ces résultats pour améliorer l'efficacité et la lisibilité des règles réseau. Dans certains cas, les résultats de lint peuvent également indiquer une erreur dans les définitions de règle réseau.

Options de la commande d'analyse NetworkPolicy

Le tableau suivant répertorie les options de commande que vous pouvez utiliser pour la commande netpol-analyze.

Options de commande pour effectuer l'analyse de la politique réseau
Options de commande Obligatoire ou facultatif Description
--path Obligatoire Chemin du répertoire du projet à analyser.
-r, --report Obligatoire Le nom du fichier dans lequel créer le rapport de conformité.
-c, --connectivity Facultatif Le nom du fichier dans lequel créer le rapport de connectivité.
-l, --lint Facultatif Le nom du fichier dans lequel créer le rapport de lint.
-s, --strict Facultatif Résultats en échec de commande (état de sortie 2) lorsque des risques de connectivité sont détectés.

Exemple

Les exemples de fragment de code suivants montrent comment utiliser la commande netpol-analyze :

ibmcloud cra netpol-analyze --path PATH --report REPORT [--connectivity CONNFILE] [--lint LINTFILE] [--strict]
ibmcloud cra np --path ./sampleDir --report netpol-report.json --strict

Image de l'analyseur de configuration de réseau

La commande netpol-analyze s'exécute dans le cadre de Network Config Analyzer(NCA)d' IBM. Etant donné que cette commande exécute NCA en tant qu'image Docker, vous devez installer Docker sur votre ordinateur.

L' URL-image de l'analyseur de politique réseau est icr.io/continuous-delivery/cra/nca.

Si l'image de l'analyseur ne se trouve pas déjà dans votre registre local, la commande netpol-analyze extrait l'image de l'analyseur la plus récente (y compris les correctifs pour les vulnérabilités) du IBM Cloud® Container Registryglobal.

Utilisation de Code Risk Analyzer dans des pipelines Tekton

Vous pouvez utiliser la tâche task-cra dans les pipelines Tekton. Utilisez la définition de pipeline Tekton lorsque vous créez une demande d'extraction, un déclencheur manuel ou que vous émettez une validation. Vous pouvez également créer vos propres tâches Tekton et exécuter Code Risk Analyzer à partir de ces tâches.

Utilisation de Code Risk Analyzer dans DevSecOps

Vous pouvez utiliser Code Risk Analyzer dans DevSecOps. Le tableau suivant répertorie et décrit les paramètres Code Risk Analyzer pris en charge pour DevSecOps.

Pour plus d'informations sur les commandes d'utilitaire dépendantes requises par l'image de pipeline pour exécuter la commande bom-generate, voir BOM requirements. Si des commandes sont manquantes, vous pouvez utiliser le paramètre cra-custom-script-path pour faire référence à un script pour installer ces commandes.

DevSecOps Code Paramètres basés sur l'analyseur de risques
Nom Type Description Obligatoire ou facultatif
artifactory-dockerconfigjson SECRET Fichier Docker config.json codé en base64 dans lequel sont stockées les données d'identification pour Artifactory. Facultatif
baseimage-auth-user texte Données d'identification de l'image de base du fichier Docker de l'application qui est requis par l'analyse Code Risk Analyzer. Facultatif
baseimage-auth-email texte Données d'identification de l'image de base du fichier Docker de l'application qui est requis par l'analyse Code Risk Analyzer. Facultatif
baseimage-auth-host texte Données d'identification de l'image de base du fichier Docker de l'application qui est requis par l'analyse Code Risk Analyzer. Facultatif
baseimage-auth-password SECRET Données d'identification de l'image de base du fichier Docker de l'application qui est requis par l'analyse Code Risk Analyzer. Facultatif
cra-cveignore-path texte Chemin d'accès au fichier cveignore relatif à la racine du référentiel d'application. Le chemin d'accès au fichier par défaut est .cra/.cveignore. Facultatif
cra-custom-script-path texte Chemin d'accès à un script personnalisé qui s'exécute avant l'analyse de Code Risk Analyzer. Ce script a pour but de fournir la possibilité de définir des variables ENV dans le contexte de l'outil de nomenclature Code Risk Analyzer. Facultatif
cra-docker-buildflags texte Commande de génération Docker personnalisée pour l'analyse de l'étape de génération. Ce paramètre est vide par défaut. Facultatif
cra-docker-build-context texte Si cet attribut est spécifié, Code Risk Analyzer utilise le répertoire dans le paramètre path comme contexte de génération Docker. Facultatif
cra-exclude-devdependencies texte Indique s'il convient d'exclure des dépendances de développement de l'analyse (true ou false). La valeur par défaut est false. Facultatif
cra-gradle-exclude-configs texte Indique les configurations Gradle dont il faut exclure les dépendances lors de l'analyse. Par exemple, runtimeClasspath,testCompileClasspath. Ce paramètre est vide par défaut. Facultatif
cra-maven-exclude-scopes texte Indique les portées Maven dont il faut exclure les dépendances lors de l'analyse. Par exemple, test,compile. Ce paramètre est vide par défaut. Facultatif
cra-nodejs-create-package-lock texte Active la reconnaissance Code Risk Analyzer pour générer le fichier package-lock.json pour les référentiels node.js. Ce paramètre est défini sur false par défaut. Facultatif
ibmcloud-api-key SECRET Clé d'API IBM Cloud® qui interagit avec l'outil d'interface de ligne de commande ibmcloud. Obligatoire
pipeline-dockerconfigjson SECRET Fichier Docker config.json codé en base64 qui permet d'extraire des images d'un registre privé. Facultatif
onepipeline-dockerconfigjson SECRET Obsolète. Fichier Docker config.json codé en base64 qui permet d'extraire des images d'un registre privé. Facultatif
pipeline-debug sélection Commutateur du mode débogage de pipeline. Facultatif
opt-in-in-auto-remédiation texte Permet à Code Risk Analyzer d'exécuter la commande cra auto remediation (true ou false). La valeur par défaut est false. Cette commande est prise en charge uniquement dans le pipeline de conformité continue. Facultatif
opt-in-cra-auto-remédiation-enabled-repos texte Indique la liste des noms de référentiel séparés par des virgules à activer pour la commande cra auto remediation. Ce paramètre est pris en compte uniquement si opt-in-cra-auto-remediation est défini sur true et est pris en charge uniquement dans Continuous Compliance Pipeline. Facultatif
opt-in-cra-auto-remédiation-force texte Force la commande cra auto remediation à mettre à jour les packages même si la version principale est différente de la version de package vulnérable actuelle (true ou false). Ce paramètre est pris en compte uniquement si opt-in-cra-auto-remediation est défini sur true et est pris en charge uniquement dans Continuous Compliance Pipeline. Facultatif

Exemples de scripts personnalisés pour DevSecOps

Si votre fichier Docker requiert ARGS, vous pouvez utiliser le paramètre cra-custom-script-path pour définir un ARG individuel comme variable d'environnement avant d'exécuter la commande. Le chemin de script personnalisé est le chemin d'accès à un script qui réside dans le projet de l'utilisateur. Par exemple, si le fichier Docker utilise IAM_USER ARG, exportez une variable d'environnement dans le script nommé IAM_USER: export IAM_USER='value'. Si l'ARG requis par votre fichier Docker est défini en tant que propriété d'environnement dans les chaînes d'outils, vous pouvez utiliser get_env pour obtenir la valeur. Dans ce cas, vous pouvez exporter une variable d'environnement dans le script IAM_USER: export IAM_USER=$(get_env iam_user_environment_property_name). La tâche run-cra sélectionne automatiquement ces variables d'environnement et les transmet aux commandes de génération Docker.

L'exemple suivant montre comment utiliser le cra-custom-script pour exporter la variable ENV :

#!/usr/bin/env bash

if [[ "${PIPELINE_DEBUG:-0}" == 1 ]]; then
    trap env EXIT
    env | sort
    set -x
fi

export IAM_USER=$(get_env iam_user_environment_property_name)

Vous pouvez également utiliser le paramètre cra-custom-script-path pour les scénarios dans lesquels les versions de l'outil d'image de base DevSecOps peuvent être obsolètes, en fonction de votre projet. Par exemple, vous pouvez mettre à jour des commandes telles que pip/pip3 pour la reconnaissance des packages Python qui nécessitent une version pip ultérieure.

L'exemple suivant montre comment utiliser le cra-custom-script pour mettre à jour la version pip :

#!/usr/bin/env bash

if [[ "${PIPELINE_DEBUG:-0}" == 1 ]]; then
    trap env EXIT
    env | sort
    set -x
fi

python3 -m pip install --upgrade pip

Si votre fichier Docker utilise une image d'un registre Docker privé, vous pouvez utiliser le paramètre cra-custom-script-path pour vous authentifier auprès d'un registre Docker privé avant d'exécuter Code Risk Analyzer et de lui permettre d'extraire cette image pour l'analyse.

L'exemple suivant montre comment utiliser le cra-custom-script pour s'authentifier auprès du registre de conteneur ibmcloud :

#!/usr/bin/env bash

if [[ "${PIPELINE_DEBUG:-0}" == 1 ]]; then
    trap env EXIT
    env | sort
    set -x
fi

ibmcloud cr login

Débogage de Code Risk Analyzer dans DevSecOps

Pour faciliter le débogage, vous pouvez exécuter Code Risk Analyzer localement en tant qu'interface de ligne de commande (CLI) sur votre propre machine locale. Pour plus d'informations sur l'exécution de la commande ibmcloud cra bom-generate pour générer un BOM, voir Nomenclature(BOM). Après avoir généré le BOM, utilisez la commande ibmcloud cra cve pour répertorier les vulnérabilités. Pour plus d'informations sur l'exécution de la commande ibmcloud cra cve, voir Analyse de vulnérabilité.

Assurez-vous que la tâche run-cra ne contient aucune erreur. Si la tâche contient des erreurs, vérifiez si votre pipeline utilise la version actuelle de DevSecOps. Si le problème n'est pas résolu en vérifiant la version de DevSecOps, les exemples suivants fournissent des erreurs courantes et proposent des solutions.

FAILED
Error executing docker pull cmd: [docker pull us.icr.io/opentoolchain/ibmnode:14ubisecure]

Vous pouvez vérifier que vous avez accès au registre privé. Si vous n'y avez pas accès, vous pouvez utiliser le paramètre cra-custom-script-path et indiquer le chemin d'accès à un script personnalisé qui s'exécute avant Code Risk Analyzer pour vous authentifier auprès du registre privé.

FAILED
Error executing docker build cmd for stage-0: exit status 1

Si votre fichier Docker requiert ARGS, la commande docker build pour les étapes de génération échoue en raison de l'ARGS manquant. cra-custom-script-path est requis pour configurer les ARGS comme variables d'environnement. Pour plus d'informations sur la configuration du script personnalisé, voir Exemples de scripts personnalisés pour DevSecOps.

FAILED
Error executing docker build cmd for stage-0: exit status 1
...
COPY file-to-copy.js file-to-copy.js:
------
failed to compute cache key: "/file-to-copy.js" not found: not found

Par défaut, la commande Code Risk Analyzer bom-generate génère les fichiers Docker à partir du contexte de l'emplacement du fichier Docker lui-même. Si vous souhaitez générer les fichiers Docker à partir du contexte du répertoire racine du projet, utilisez le paramètre cra-docker-build-context pour permettre à Code Risk Analyzer de générer les fichiers Docker à partir de ce contexte.

Suppression des données Code Risk Analyzer stockées

Le plug-in Code Risk Analyzer ne stocke aucune donnée client dans ses bases de données. Cependant, les versions antérieures des tâches Code Risk Analyzer Tekton stockaient en toute sécurité les résultats des analyses de vulnérabilité dans sa base de données.

Pour demander la suppression de toute donnée client susceptible d'être stockée dans le Code Risk Analyzer, contactez le support IBM.

Foire aux questions

Obtenez des réponses aux questions fréquemment posées sur l'utilisation de l'interface de ligne de commande Code Risk Analyzer.

Comment puis-je déterminer la raison de l'échec de l'interface de ligne de commande ?

Avant d'appeler l'interface de ligne de commande Code Risk Analyzer, définissez la variable d'environnement IBMCLOUD_TRACE sur true pour activer le journal de débogage.

export IBMCLOUD_TRACE=true

Observez les appels d'API et les réponses affichées dans le journal pour déterminer la raison exacte de l'échec.

Comment puis-je déboguer une commande BOM qui ne parvient pas à extraire une image de base d'un registre privé ?

Assurez-vous que vous êtes authentifié auprès du registre dans lequel réside l'image de base à l'aide de la commande ibmcloud cr login ou de la commande docker login.

Comment puis-je déboguer une commande BOM qui n'est pas en mesure d'analyser un fichier Docker ?

  • Vérifiez que le fichier Docker ne présente aucun problème en exécutant la commande docker build et en vous assurant qu'elle aboutit.
  • Si votre fichier Docker requiert la transmission d'ARG, assurez-vous que l'ARG est défini comme variable d'environnement. Vous pouvez également utiliser la variable d'environnement DOCKERBUILDFLAG.
  • Authentifiez-vous auprès du registre qui contient les images de base.

Je vois des résultats faux positifs inattendus. Que dois-je faire ?

Exécutez le pipeline de déploiement continu ( DevSecOps, CD) pour générer une SBOM mise à jour dans le coffre-fort des preuves. Cela pourrait permettre de résoudre une cause potentielle de faux positifs résultant de la présence d'une SBOM plus ancienne générée par le pipeline de conformité continue ( DevSecOps ) de CC.

Pourquoi la gravité du rapport ou du problème diffère-t-elle de celle du lien de vulnérabilité associé?

Comme notre source d'informations sur les vulnérabilités a récemment changé, vous pouvez constater que la gravité associée à une vulnérabilité particulière a changé. Code Risk Analyzer détermine la gravité optimale en fonction d'un calcul de toutes les sources de vulnérabilités.