script de collecte d'informations collectées
Le collect-evidence script aide les adoptants, les utilisateurs et les contributeurs à envoyer leurs données de conformité dans le flux de données de gestion des changements de l' DevSecOps.
Le script effectue les tâches suivantes :
- Tente de traiter les pièces jointes en tant que résultats et crée des problèmes d'incident à partir de ces résultats. Un nombre limité de formats de sortie d'outil sont pris en charge.
- Si des problèmes sont détectés, le script évalue leurs délais de grâce (dates d'échéance) et les états d'exemption.
- Crée un actif d'informations collectées dans le casier d'informations collectées.
- Crée les informations collectées elles-mêmes et joint les problèmes et les pièces jointes fournies.
Pour un statut success ou failure, si aucune pièce jointe n'est transmise dans collect-evidence, les journaux de pipeline pour cette tâche particulière et l'étape sont capturés en tant que pièce jointe.
Le script collect-evidence est fourni par le pipeline. Il n'est pas nécessaire de l'installer. Le script présente les dépendances suivantes :
- bash
libstdc++bibliothèque partagéelibgccbibliothèque partagée
Assurez-vous que les dépendances sont installées dans l'image de base qui utilise cet outil pour générer des informations collectées.
Architecture des commandes CLI
La fonctionnalité collect-evidence est disponible via deux interfaces :
- Shell Script Wrapper (
collect-evidence): Interface de script bash traditionnelle qui assure la compatibilité ascendante - Commande CLI directe (
cocoa locker evidence collect): Interface CLI native avec accès à toutes les fonctionnalités
Basculer entre les versions
Le script shell collect-evidence prend en charge deux versions d'implémentation qui peuvent être modifiées à l'aide de la propriété d'environnement collect-evidence-version:
| Version | Implémentation | Statut | Description |
|---|---|---|---|
v1 |
Existant | Disponible | Mise en œuvre originale basée sur bash avec compatibilité ascendante totale |
v2 |
Basé sur l'interface utilisateur | Valeur par défaut | Mise en œuvre moderne qui intègre la commande CLI de cocoa locker evidence collect |
Utilisation
Le script collect-evidence requiert les paramètres suivants:
--tool-typeID de l'outil qui fournit les données d'informations collectées. Exemple : « owasp-zap-ui », « cra »--evidence-typeL'identifiant du type de preuve. Exemple :com.ibm.image_vulnerability_scan,com.ibm.unit_tests--asset-keyClé dans les actifs pipelinectl. Pour les commandes suivantesload_artifact <key>ouload_repo <key>--asset-typeLe type d'actif de pipelinectl peut être l'un des types suivants:repo,artifact--statusLe statut d'une preuve peut être l'un des suivants :success,pending,failure--assetsSpécifiez plusieurs paires actif-clé et actif-type. Par exemple, vous pouvez utiliser--assets asset-key1:asset-type1 --assets asset-key2:asset-type2. Si vous utilisez cette option, ne spécifiez pas la clé d'actif et le type d'actif séparément.
Le paramètre suivant est facultatif :
--attachmentFichier à traiter en tant que résultat et joint aux informations collectées. Le paramètre peut être spécifié plusieurs fois pour plusieurs fichiers. Pour la signature d'images, assurez-vous que le fichier de signature est joint à l'aide du paramètre --attachment. Le fichier de signature doit inclure les détails de la signature, tels que l'identifiant de la clé, l'algorithme et le condensé signé. Les formats courants sont JSON ou TXT.--metaMétadonnées arbitraires à ajouter aux informations collectées. Le paramètre accepte les paires'key = value'et peut être spécifié plusieurs fois. Vous pouvez inclure des métadonnées relatives au processus de signature de l'image, telles que l'environnement de signature ou toute configuration spécifique utilisée lors de la signature.--additional-commentCommentaire ajouté à un problème si un pipeline a échoué.
Pour obtenir de l'aide, utilisez la commande suivante :
collect-evidence --help
Valeur renvoyée
collect-evidence génère la chaîne de statut des informations collectées évaluées sur STDOUT ( success, failure ou pending). Cette valeur évaluée dépend des pièces jointes de résultat traitées,
des problèmes d'incident détectés et de la résolution possible de ces problèmes, par exemple avec une date d'échéance définie ou un libellé d'exemption. Pour plus d'informations, voir Problèmes liés aux incidents.
# example on how to read the output into a variable in bash
read -r status < <(collect-evidence "${evidence_params[@]}")
echo $status # success
Passage à v2 (implémentation basée sur le CLI)
Pour utiliser la nouvelle implémentation basée sur l'interface de programmation, définissez la propriété d'environnement dans votre pipeline :
collect-evidence-version=v2
Utilisation directe de la commande CLI
cocoa locker evidence collect \
--tool-type "sonarqube" \
--evidence-type "com.ibm.static_scan" \
--assets "app-repo:repo" \
--status "success" \
--attachment ./sonarqube-result.json \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
cocoa locker evidence collect \
--tool-type "detect-secrets" \
--evidence-type "com.ibm.detect_secrets" \
--assets "app-repo:repo" \
--status "success" \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
cocoa locker evidence collect \
--tool-type "va" \
--evidence-type "com.ibm.cloud.image_vulnerability_scan" \
--assets "image-0:artifact" \
--status "success" \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--attachment image-0_va-report.json \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
Pour une référence complète de la commande CLI et tous les paramètres disponibles, voir cocoa locker evidence collect.
Exemple d'utilisation
collect-evidence \
--tool-type "sonarqube" \
--evidence-type "com.ibm.static_scan" \
--asset-type "repo" \
--asset-key "app-repo" \
--status "success" \
--attachment ./sonarqube-result-1.json \
--attachment ./sonarqube-result-2.json \
--meta environment=staging
collect-evidence \
--tool-type "ciso-code-signing" \
--evidence-type "com.ibm.cloud.image_signing" \
--asset-type "artifact" \
--asset-key "signed-image" \
--status "success" \
--attachment ./signature.json \ # The signature details in JSON format
--attachment "./${artifact}.fingerprint" \ # The fingerprint is a hash value generated from the artifact, ensuring integrity and authenticity.
--meta environment=production
Vous pouvez utiliser directement la commande cocoa locker evidence collect:
cocoa locker evidence collect \
--tool-type "sonarqube" \
--evidence-type "com.ibm.static_scan" \
--assets "app-repo:repo" \
--status "success" \
--attachment ./sonarqube-result.json \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
Formats d'outil pris en charge
L'implémentation en cours prend actuellement en charge les outils suivants (fournis en tant que paramètre --tool-type ):
| Nom de l'outil | Description |
|---|---|
cra |
IBM Analyseur de risques liés au code |
cra-cis |
IBM Analyseur de risques liés au code CIS |
va |
Vulnerability Advisor pour IBM Cloud Container Registry |
gosec |
GoLang Scanner de sécurité |
xray |
JFrog Xray - Analyse de vulnérabilité et sécurité des conteneurs |
owasp-zap |
Proxy d'attaque OWASP Zed (ZAP) |
owasp-zap-ui |
Interface utilisateur d'OWASP Zed Attack Proxy (ZAP UI) |
sonarqube |
SonarQube scanner |
peer-review |
Examen par les pairs |
twistlock |
TwistLock |
cims |
Multi-scanner d'images de conteneurs (CIMS) |
mend |
Mend Scan |
mend-sast |
Réparer le scan SAST |
checkov |
Scan Checkov |
cra-tf |
Code Risk Analyzer pour Terraform |
tfsec |
Scanner de sécurité Terraform |
fips-scanner |
Scanner FIPS (Federal Information Processing Standards) |
detect-secrets |
Détection de secrets |
ciso-code-signing |
Outil de signature du code CISO |
sysdig |
Analyse Sysdig |
cyclonedx |
CycloneDX format. La détection des outils pour la gestion des problèmes sera effectuée sur la base des métadonnées du site CycloneDX ici |
grype |
Grype Scan |
CycloneDX Metadata utilise la détection des outils pour la gestion des incidents.
Si le script collect-evidence est appelé avec un type d'outil non pris en charge, le script ne tente pas de traiter les pièces jointes. En outre, le traitement des problèmes est ignoré et la collecte des informations collectées
n'est pas arrêtée.
Si votre script fournit une pièce jointe à partir d'un outil pris en charge, mais que la pièce jointe ne peut pas être traitée, le traitement des problèmes est ignoré et la collecte des informations collectées n'est pas arrêtée.
Type d'informations collectées
Vous pouvez définir le type d'informations collectées à l'aide du paramètre --evidence-type. Vous pouvez définir n'importe quel type, mais IBM Cloud® Compliance Manager prend en charge les types d'informations collectées suivants:
com.ibm.unit_testscom.ibm.detect_secretscom.ibm.branch_protectioncom.ibm.static_scancom.ibm.code_vulnerability_scancom.ibm.code_bom_checkcom.ibm.code_cis_checkcom.ibm.cloud.image_vulnerability_scancom.ibm.cloud.image_signingcom.ibm.dynamic_scancom.ibm.cloud.image_signingcom.ibm.acceptance_testscom.ibm.prod_change_requestcom.ibm.close_change_reques
Collecte de données probantes et cartographie des outils
| ID du type de preuve | Outil pris en charge par défaut | Origine | Propriété | Actif recommandé | Problèmes |
|---|---|---|---|---|---|
com.ibm.branch_protection |
cocoa-branch-protection |
intégration continue | Plateforme | référentiel | Questions non liées à un incident |
com.ibm.unit_tests |
jest |
RP/CI | Utilisateur | référentiel | Questions non liées à un incident |
com.ibm.detect_secrets |
detect-secrets |
RP/CI/CC | Plateforme | référentiel | Questions relatives aux incidents et aux non-incidents |
com.ibm.code_vulnerability_scan |
cra-tf, cra, mend Pour l'infrastructure en tant que code : tfsec, checkov |
intégration continue | Plateforme | référentiel | Questions relatives aux incidents et aux non-incidents |
com.ibm.code_bom_check |
cra-bom, sbom-utility |
RP/CI/CC | Plateforme | référentiel | Questions relatives aux incidents et aux non-incidents |
com.ibm.code_cis_check |
cra-cis |
RP/CI/CC | Plateforme | référentiel | Questions non liées à un incident |
com.ibm.peer_review |
peer-review |
intégration continue | Plateforme | référentiel | Questions non liées à un incident |
com.ibm.static_scan |
sonarqube, gosec Pour l'infrastructure en tant que code : terraform-fmt, terraform-validate, tflint |
CI/CC | Plateforme | référentiel | Questions relatives aux incidents et aux non-incidents |
com.ibm.cloud.image_signing |
artifact-signing |
intégration continue | Plateforme | référentiel | Questions non liées à un incident |
com.ibm.acceptance_tests |
jest |
intégration continue | Utilisateur | artefact | Questions non liées à un incident |
com.ibm.dynamic_scan |
owasp-zap, owasp-zap-ui |
intégration continue | Plateforme | artefact | Questions relatives aux incidents et aux non-incidents |
com.ibm.cloud.image_vulnerability_scan |
va, sysdig, xray |
CI/CC | Plateforme | artefact | Questions relatives aux incidents et aux non-incidents |
com.ibm.prod_change_request |
gitlab |
CD | Plateforme | artefact | Questions non liées à un incident |
com.ibm.close_change_request |
gitlab |
CD | Plateforme | artefact | Questions non liées à un incident |
com.ibm.cloud.slsa |
tekton-chains |
intégration continue | Plateforme | artefact | Questions non liées à un incident |
com.ibm.cloud.verify_signature |
ciso-code-signing |
CD | Plateforme | artefact | Questions non liées à un incident |
com.ibm.pipeline_logs |
ND | CI/CD/CC | Plateforme | ND | ND |
com.ibm.pipeline_run_data |
ND | CI/CD/CC | Plateforme | ND | ND |
com.ibm.network_compliance |
intégration continue | Plateforme | référentiel | Questions relatives aux incidents et aux non-incidents |
Lorsqu'une analyse échoue ou que les pièces jointes ne peuvent pas être analysées, l'outil crée automatiquement un problème non incident pour suivre l'échec.
Exigences relatives aux actifs
Les informations collectées collectées qui sont collectées à l'aide de cet outil font partie du travail de collecte d'informations collectées V2 et des mises à jour de casier d'informations collectées associées.
Cette nouvelle méthode met l'accent sur les informations collectées basées sur des actifs, ce qui signifie que les informations collectées sont connectées à l'artefact et au référentiel via les analyses et les tests qui s'exécutent sur ces artefacts ou référentiels, et ont produit des résultats pour les informations collectées. Exemple :
- Un référentiel avec une certaine validation devient un actif de validation, qui est analysé, créant des informations collectées pour l'actif de validation.
- A l'aide du même référentiel et de la même validation, une image est générée. L'image devient un actif lié à l'actif source, au référentiel et à la validation.
- L'image est analysée et des informations collectées sont créées. Tous les résultats d'analyse sont connectés via les informations collectées, son actif et les actifs associés.
Pour que tout cela fonctionne ensemble, les actifs qui sont fournis avec les paramètres --asset-type et --asset-key doivent être conformes à certaines exigences:
Actifs repo ajoutés à l'aide de la commande save_repo
Consultez la référence de commande pour obtenir des informations d'utilisation exactes.
Champs requis :
urlLe dépôt URL.commitLe SHA de validation.
Actifs artifact ajoutés à l'aide de la commande save_artifact
Consultez la référence de commande pour obtenir des informations d'utilisation exactes.
Champs requis :
nameNom de l'artefact. Par exemple, pour une image, il faut inclure le registre, l'espace de noms et l'image (exemple :us.icr.io/team-images/service).digestLe résumé de l'artefact (exemple :sha256:a2292ed2b82c7a51d7d180c3187dbb0f7cc9ab385a68484c4f117e994acd6192).
Modifications requises dans save_artefact pour les non-images: La collecte d'informations collectées prend désormais en charge tous les types d'actif. Pour collecter des informations collectées afin de travailler sur n'importe
quel type d'actif
save_artifact Il convient d'enregistrer explicitement le fichier avec l' type, par exemple « zip »
save_artifact artifact-1 type=zip .... Dans le script de collecte de preuves, le asset-type doit être un artefact et le type est demandé à partir de l'artefact. Pour que ce processus fonctionne, l'ajout d'actif
de casier de cacao a été modifié pour ajouter un actif de n'importe quel type. Une fois sauvegardé, le script de collecte d'informations collectées peut être appelé comme suit:
collect-evidence --tool-type toolType --evidence-type artifact --asset-key artifact-1 ...
Veuillez vous reporter à notre exemple d'application pour un exemple d'implémentation pour deployment le type https://us-south.git.cloud.ibm.com/open-toolchain/hello-compliance-app
Avec ces modifications, le script de collecte d'informations collectées traite tous les types d'artefact, y compris les artefacts d'image et non d'image.
Plusieurs actifs en collection-informations collectées
A l'aide de la fonction de collecte d'informations collectées, vous pouvez configurer la collecte simultanée d'informations collectées pour plusieurs actifs. Vous lancez la collecte d'informations collectées à l'aide de l'indicateur --assets,
qui spécifie plusieurs paires actif-clé et actif-type. Par exemple, input --assets asset-key1:asset-type1 --assets asset-key2:asset-type2. Si vous choisissez cette option, n'indiquez pas la clé d'actif et le type d'actif séparément.
Gardez à l'esprit les points clés suivants concernant la collection multi-actifs:
status,attachment,tool-type,evidence-typeetupload-logssont constants dans tous les actifs.- Par défaut, lorsque vous désignez plusieurs actifs, le traitement des informations collectées suit le flux existant. Si vous spécifiez un actif unique, le traitement des informations collectées s'effectue via un flux spécifique à l'outil ou à la pièce jointe.
- En cas d'échec, des problèmes sont créés par actif. Ces problèmes sont fermés lors de la réexécution réussie de la collecte d'informations collectées. La fermeture est en corrélation avec les actifs que vous avez spécifiés.
- Un fichier d'informations collectées unique est généré, qui comporte un ID englobant tous les actifs combinés.