Script "collect-evidence"
Das collect-evidence Skript hilft Anwendern, Nutzern und Mitwirkenden dabei, ihre Compliance-Daten an den Datenfluss „ DevSecOps “ (Änderungsmanagement)
zu senden.
Durch das Script werden die folgenden Tasks ausgeführt:
- Versucht, Anhänge als Ergebnisse zu verarbeiten, und erstellt Vorfallprobleme aus diesen Ergebnissen. Es wird eine begrenzte Anzahl von Toolausgabeformaten unterstützt.
- Wenn Probleme gefunden werden, wertet das Script ihre Karenzzeiten (Fälligkeitsdaten) und Freistellungsstatus aus.
- Erstellt ein Angabenasset im Angabenfach.
- Erstellt die Angaben selbst und hängt die Probleme und bereitgestellten Anhänge an.
Wenn für den Status success oder failure keine Anhänge in collect-evidence übergeben werden, werden die Pipelineprotokolle für diese bestimmte Task und die Phase als Anhang erfasst.
Das Script collect-evidence wird von der Pipeline bereitgestellt. Es muss nicht installiert werden. Das Skript weist folgende Abhängigkeiten auf:
- bash
libstdc++Gemeinsam genutzte BibliotheklibgccGemeinsam genutzte Bibliothek
Stellen Sie sicher, dass die Abhängigkeiten im Basisimage installiert sind, das dieses Tool für die Berichterstellung von Angaben verwendet.
CLI-Befehlsarchitektur
Die Funktionalität von collect-evidence ist über zwei Schnittstellen verfügbar:
- Shell Script Wrapper (
collect-evidence): Traditionelle Bash-Skript-Schnittstelle, die Abwärtskompatibilität bietet - Direkte CLI-Befehle (
cocoa locker evidence collect): Native CLI-Schnittstelle mit vollem Funktionszugang
Version umschalten
Das Shell-Skript collect-evidence unterstützt zwei Implementierungsversionen, die über die Umgebungseigenschaft collect-evidence-version umgeschaltet werden können:
| Version | Bereitstellung | Status | Beschreibung |
|---|---|---|---|
v1 |
Traditionell | Verfügbar | Ursprüngliche bash-basierte Implementierung mit voller Abwärtskompatibilität |
v2 |
CLI-basiert | Standard | Moderne Implementierung, die den cocoa locker evidence collect CLI-Befehl umschließt |
Verwendung
Das Script collect-evidence erfordert die folgenden Parameter:
--tool-typeDie ID des Tools, das Angabendaten bereitstellt. Zum Beispiel: „owasp-zap-ui“, „cra“--evidence-typeDie ID des Beweis-Typs. Zum Beispiel:com.ibm.image_vulnerability_scan,com.ibm.unit_tests--asset-keyDer Schlüssel in pipelinectl Assets. Für die folgenden Befehleload_artifact <key>oderload_repo <key>--asset-typeDer Anlagentyp aus pipelinectl. Folgende Typen sind möglich:repo,artifact--statusDer Status der Beweismittel kann einer der folgenden sein:success,pending,failure--assetsGeben Sie mehrere Assetschlüssel-und Assettyppaare an. Sie können beispielsweise--assets asset-key1:asset-type1 --assets asset-key2:asset-type2verwenden. Wenn Sie diese Option verwenden, geben Sie den Assetschlüssel und den Assettyp nicht separat an.
Der folgende Parameter ist optional:
--attachmentDie Datei, die als Ergebnis verarbeitet und an die Angaben angehängt werden soll. Der Parameter kann für mehrere Dateien mehrfach angegeben werden. Stellen Sie beim Signieren von Bildern sicher, dass die Signaturdatei mit dem Parameter --attachment angehängt wird. Die Signaturdatei muss die Signaturdetails wie Schlüssel-ID, Algorithmus und signierten Digest enthalten. Gängige Formate sind beispielsweise JSON oder TXT.--metaBeliebige Metadaten, die den Angaben hinzugefügt werden sollen Der Parameter akzeptiert 'key = value' -Paare und kann mehrmals angegeben werden. Sie können für den Image-Signaturvorgang relevante Metadaten einschließen, z. B. die Signaturumgebung oder bestimmte während der Signierung verwendete Konfigurationen.--additional-commentDer Kommentar, der zu einem Problem hinzugefügt wird, wenn eine Pipeline fehlgeschlagen ist.
Verwenden Sie den folgenden Befehl, um Hilfe zu erhalten:
collect-evidence --help
Rückgabewert
collect-evidence gibt die ausgewertete Angabenstatuszeichenfolge in STDOUT aus (entweder success, failure oder pending). Dieser bewertete Wert hängt von den verarbeiteten Ergebnisanhängen,
den gefundenen Vorfallsproblemen und der möglichen Behebung dieser Probleme ab, z. B. der Festlegung eines Fälligkeitsdatums oder der Kennzeichnung mit einer Ausnahmegenehmigung. Weitere Informationen finden Sie unter Vorfallprobleme.
# example on how to read the output into a variable in bash
read -r status < <(collect-evidence "${evidence_params[@]}")
echo $status # success
Umstellung auf v2 (CLI-basierte Implementierung)
Um die neue CLI-basierte Implementierung zu verwenden, legen Sie die Umgebungseigenschaft in Ihrer Pipeline fest:
collect-evidence-version=v2
Direkte Verwendung des CLI-Befehls
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"
Eine vollständige CLI-Befehlsreferenz und alle verfügbaren Parameter finden Sie unter cocoa locker evidence collect.
Beispielverwendung
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
Sie können den Befehl cocoa locker evidence collect direkt verwenden:
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"
Unterstützte Toolformate
Die aktuelle Implementierung unterstützt derzeit die folgenden Tools (bereitgestellt als Parameter --tool-type ):
| Toolname | Beschreibung |
|---|---|
cra |
IBM Code-Risiko-Analysator |
cra-cis |
IBM Code-Risiko-Analysator CIS |
va |
Vulnerability Advisor für IBM Cloud Container Registry |
gosec |
GoLang Sicherheits-Scanner |
xray |
JFrog Xray - Schwachstellen-Scanning & Container-Sicherheit |
owasp-zap |
OWASP Zed Attack Proxy (ZAP) |
owasp-zap-ui |
OWASP Zed Attack Proxy-Benutzeroberfläche (ZAP UI) |
sonarqube |
SonarQube scannen |
peer-review |
Peer-Review-Scan |
twistlock |
TwistLock |
cims |
Container-Image-Multi-Scanner (CIMS) |
mend |
Scan ausbessern |
mend-sast |
SAST-Scan reparieren |
checkov |
Checkov-Scan |
cra-tf |
Code Risk Analyzer für Terraform |
tfsec |
Terraform Sicherheits-Scanner |
fips-scanner |
FIPS-Scanner (Federal Information Processing Standards) |
detect-secrets |
Geheime Schlüssel erkennen |
ciso-code-signing |
CISO-Tool zur Codesignierung |
sysdig |
Sysdig-Scan |
cyclonedx |
CycloneDX Format. Die Werkzeugerkennung für das Problemmanagement erfolgt auf der Grundlage der Metadaten von CycloneDX hier |
grype |
Grype-Scan |
CycloneDX Metadata nutzt die Tool-Erkennung für das Problemmanagement.
Wenn das Script collect-evidence mit einem nicht unterstützten Tooltyp aufgerufen wird, versucht das Script nicht, die Anhänge zu verarbeiten. Außerdem wird die Problembehandlung übersprungen und die Angabensammlung wird nicht gestoppt.
Wenn Ihr Script einen Anhang aus einem unterstützten Tool bereitstellt, der Anhang jedoch nicht verarbeitet werden kann, wird die Problembehandlung übersprungen und die Angabensammlung nicht gestoppt.
Angabentyp
Sie können den Angabentyp mit dem Parameter --evidence-type festlegen. Sie können jeden Typ festlegen, aber IBM Cloud® Compliance Manager unterstützt die folgenden Angabentypen:
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
Sammlung von Belegen und Zuordnung von Instrumenten
| Nachweisart ID | Standardmäßig unterstütztes Werkzeug | Ursprung | Eigentumsrecht | Empfohlener Vermögenswert | Probleme |
|---|---|---|---|---|---|
com.ibm.branch_protection |
cocoa-branch-protection |
CI | Plattform | Repo | Nicht-vorfallbezogene Themen |
com.ibm.unit_tests |
jest |
PR/CI | Benutzer | Repo | Nicht-vorfallbezogene Themen |
com.ibm.detect_secrets |
detect-secrets |
PR/CI/CC | Plattform | Repo | Fragen zu Vorfällen/Nichtvorfällen |
com.ibm.code_vulnerability_scan |
cra-tf, cra, mend Für Infrastruktur als Code: tfsec, checkov |
CI | Plattform | Repo | Fragen zu Vorfällen/Nichtvorfällen |
com.ibm.code_bom_check |
cra-bom, sbom-utility |
PR/CI/CC | Plattform | Repo | Fragen zu Vorfällen/Nichtvorfällen |
com.ibm.code_cis_check |
cra-cis |
PR/CI/CC | Plattform | Repo | Nicht-vorfallbezogene Themen |
com.ibm.peer_review |
peer-review |
CI | Plattform | Repo | Nicht-vorfallbezogene Themen |
com.ibm.static_scan |
sonarqube, gosec Für Infrastruktur als Code: terraform-fmt, terraform-validate, tflint |
CI/CC | Plattform | Repo | Fragen zu Vorfällen/Nichtvorfällen |
com.ibm.cloud.image_signing |
artifact-signing |
CI | Plattform | Repo | Nicht-vorfallbezogene Themen |
com.ibm.acceptance_tests |
jest |
CI | Benutzer | Artefakt | Nicht-vorfallbezogene Themen |
com.ibm.dynamic_scan |
owasp-zap, owasp-zap-ui |
CI | Plattform | Artefakt | Fragen zu Vorfällen/Nichtvorfällen |
com.ibm.cloud.image_vulnerability_scan |
va, sysdig, xray |
CI/CC | Plattform | Artefakt | Fragen zu Vorfällen/Nichtvorfällen |
com.ibm.prod_change_request |
gitlab |
CD | Plattform | Artefakt | Nicht-vorfallbezogene Themen |
com.ibm.close_change_request |
gitlab |
CD | Plattform | Artefakt | Nicht-vorfallbezogene Themen |
com.ibm.cloud.slsa |
tekton-chains |
CI | Plattform | Artefakt | Nicht-vorfallbezogene Themen |
com.ibm.cloud.verify_signature |
ciso-code-signing |
CD | Plattform | Artefakt | Nicht-vorfallbezogene Themen |
com.ibm.pipeline_logs |
Nicht zutreffend | CI/CD/CC | Plattform | Nicht zutreffend | Nicht zutreffend |
com.ibm.pipeline_run_data |
Nicht zutreffend | CI/CD/CC | Plattform | Nicht zutreffend | Nicht zutreffend |
com.ibm.network_compliance |
CI | Plattform | Repo | Fragen zu Vorfällen/Nichtvorfällen |
Wenn ein Scan fehlschlägt oder Anhänge nicht geparst werden können, erstellt das Tool automatisch ein nicht-vorfallbezogenes Problem, um den Fehler zu verfolgen.
Assetanforderungen
Angaben, die mit diesem Tool erfasst werden, sind Teil der V2-Angabensammlung und der zugehörigen Angabenlockaktualisierungen.
Diese neue Methode konzentriert sich auf assetbasierte Angaben, d. h., dass Angaben über die Scans und Tests, die für diese Artefakte oder Repositorys ausgeführt werden, mit dem Artefakt und dem Repository verbunden sind und Ergebnisse für Angaben liefern. Zum Beispiel:
- Ein Repository mit einer bestimmten Festschreibung wird zu einem Festschreibungsasset, das gescannt wird und Angaben für das Festschreibungsasset erstellt.
- Mit demselben Repository und derselben Festschreibung wird ein Image erstellt. Das Bild wird zu einem Asset, das sich auf das Quellenasset, das Repository und das Commit bezieht.
- Das Bild wird gescannt und die Angaben werden erstellt. Alle Scanergebnisse werden über die Angaben, das zugehörige Asset und die zugehörigen Assets verbunden.
Damit dies funktioniert, müssen die Assets, die mit den Parametern --asset-type und --asset-key bereitgestellt werden, einige Anforderungen erfüllen:
repo-Assets, die mit dem Befehl save_repo hinzugefügt wurden
Überprüfen Sie die Befehlsreferenz auf genaue Syntaxinformationen.
Erforderliche Felder:
urlDas Repository URL.commitDer Commit-SHA.
artifact-Assets, die mit dem Befehl save_artifact hinzugefügt wurden
Überprüfen Sie die Befehlsreferenz auf genaue Syntaxinformationen.
Erforderliche Felder:
nameDer Artefaktname. Für ein Bild zum Beispiel: Registry, Namespace und Image (Beispiel:us.icr.io/team-images/service).digestDie Zusammenfassung des Artefakts (Beispiel:sha256:a2292ed2b82c7a51d7d180c3187dbb0f7cc9ab385a68484c4f117e994acd6192).
In 'save_artifact' erforderliche Änderungen für Nicht-Images: Die Erfassung von Angaben unterstützt jetzt alle Assettypen. Für die Erfassung von Angaben zum Arbeiten mit einem beliebigen Assettyp
save_artifact Sie sollten die Datei ausdrücklich mit „ type “ speichern, zum Beispiel „zip
save_artifact artifact-1 type=zip ... “. Im Skript "Beweise sammeln" sollte asset-type ein Artefakt sein und der Typ wird aus dem Artefakt abgefragt. Damit dieser Prozess funktioniert, wurde das Hinzufügen
von Kakao-Schließfachanlagen geändert, um Anlagen beliebigen Typs hinzuzufügen. Nach dem Speichern kann das Script zum Erfassen von Angaben wie folgt aufgerufen werden:
collect-evidence --tool-type toolType --evidence-type artifact --asset-key artifact-1 ...
Bitte beachten Sie unsere Beispielanwendung für eine Beispielimplementierung für deployment den Typ https://us-south.git.cloud.ibm.com/open-toolchain/hello-compliance-app
Mit diesen Änderungen verarbeitet das Script "collect-evidence" alle Artefakttypen, einschließlich Image-und Nicht-Image-Artefakte.
Mehrere Assets in collect-evidence
Durch die Verwendung der Erfassung von Angaben können Sie die gleichzeitige Erfassung von Angaben für mehrere Assets konfigurieren. Sie leiten die Angabensammlung mithilfe des Flags --assets ein, das mehrere Assetschlüssel/Assettyp-Paare
angibt. Beispiel: input --assets asset-key1:asset-type1 --assets asset-key2:asset-type2. Wenn Sie diese Option auswählen, geben Sie Assetschlüssel und Assettyp nicht separat an.
Denken Sie an die folgenden wichtigen Punkte zur Sammlung mit mehreren Assets:
status,attachment,tool-type,evidence-typeundupload-logssind über alle Assets hinweg konstant.- Wenn Sie mehrere Assets festlegen, folgt die Angabenverarbeitung standardmäßig dem traditionellen Ablauf. Wenn Sie ein einzelnes Asset angeben, erfolgt die Angabenverarbeitung über einen Ablauf, der für das Tool oder den Anhang spezifisch ist.
- Im Fehlerfall werden Probleme pro Asset erstellt. Diese Probleme werden nach einer erfolgreichen erneuten Ausführung der Angabensammlung geschlossen. Der Abschluss entspricht den Anlagen, die Sie angegeben haben.
- Es wird eine einzelne Angabendatei generiert, die eine ID enthält, die alle kombinierten Assets umfasst.