collect-증거 스크립트

collect-evidence 스크립트는 채택자, 사용자 및 기여자가 준수 데이터를 DevSecOps 변경 관리 데이터 흐름으로 전송하는 데 도움을 줍니다.

스크립트는 다음 태스크를 수행합니다.

  • 첨부 파일을 결과로 처리하려고 시도하고 해당 결과에서 인시던트 문제를 작성합니다. 제한된 수의 도구 출력 형식이 지원됩니다.
  • 문제가 발견되면 스크립트는 유예 기간 (만기 날짜) 및 면제 상태를 평가합니다.
  • 증거 로커에서 증거 자산을 작성합니다.
  • 증거 자체를 작성하고 안건 및 제공된 첨부를 첨부합니다.

success 또는 failure 상태의 경우 collect-evidence 내에 첨부 파일이 전달되지 않으면 해당 특정 태스크 및 단계에 대한 파이프라인 로그가 첨부 파일로 캡처됩니다.

collect-evidence 스크립트는 파이프라인에서 제공됩니다. 설치할 필요가 없습니다. 이 스크립트에는 다음과 같은 종속성이 있습니다:

  • bash
  • libstdc++ 공유 라이브러리
  • libgcc 공유 라이브러리

이 도구를 사용하여 증거를 보고하는 기본 이미지에 종속 항목이 설치되어 있는지 확인하십시오.

CLI 명령 아키텍처

collect-evidence 기능은 두 가지 인터페이스를 통해 사용할 수 있습니다:

  1. 셸 스크립트 래퍼 (collect-evidence): 이전 버전과의 호환성을 제공하는 기존 bash 스크립트 인터페이스
  2. 직접 CLI 명령 (cocoa locker evidence collect): 모든 기능에 액세스할 수 있는 기본 CLI 인터페이스

버전 토글

collect-evidence 셸 스크립트는 collect-evidence-version 환경 속성을 사용하여 토글할 수 있는 두 가지 구현 버전을 지원합니다:

버전 구현 상태 설명
v1 레거시 사용 가능 이전 버전과의 완벽한 호환성을 갖춘 오리지널 bash 기반 구현
v2 CLI 기반 기본 cocoa locker evidence collect CLI 명령을 래핑하는 최신 구현

사용량

collect-evidence 스크립트에는 다음 매개변수가 필요합니다.

  • --tool-type 증거 데이터를 제공하는 도구의 ID입니다. 예를 들어, 다음과 같습니다. "오와스프-잽-ui", "크라"
  • --evidence-type 증거 유형의 ID. 예를 들어, 다음과 같습니다. com.ibm.image_vulnerability_scan, com.ibm.unit_tests
  • --asset-key pipelinectl 자산의 키입니다. 다음 명령의 경우 load_artifact <key> or load_repo <key>
  • --asset-type pipelinectl의 자산 유형이며 다음 유형 중 하나일 수 있습니다. repo, artifact
  • --status 증거의 상태는 다음 중 하나일 수 있습니다: success, pending, failure
  • --assets 여러 개의 자산-키 및 자산-유형 쌍을 지정하십시오. 예를 들어, --assets asset-key1:asset-type1 --assets asset-key2:asset-type2 를 사용할 수 있습니다. 이 옵션을 사용하는 경우에는 asset-key및 asset-type을 별도로 지정하지 마십시오.

다음 매개변수는 선택 사항입니다:

  • --attachment 결과로 처리되고 증거에 첨부될 파일입니다. 여러 파일에 대해 매개변수를 여러 번 지정할 수 있습니다. 이미지 서명의 경우 --attachment 매개변수를 사용하여 서명 파일이 첨부되었는지 확인하세요. 서명 파일에는 키 ID, 알고리즘, 서명된 다이제스트와 같은 서명 세부 정보가 포함되어야 합니다. 일반적인 형식에는 JSON이나 TXT가 있습니다.
  • --meta 증거에 추가될 임의의 메타데이터입니다. 매개변수는 'key = value' 쌍을 허용하며 여러 번 지정할 수 있습니다. 서명 환경이나 서명 중에 사용된 특정 구성 등 이미지 서명 프로세스와 관련된 메타데이터를 포함할 수 있습니다.
  • --additional-comment 파이프라인이 실패한 경우 문제에 추가되는 주석입니다.

도움을 보려면 다음 명령을 사용하십시오:

collect-evidence --help

리턴 값

collect-evidence 는 평가된 증거 상태 문자열을 STDOUT ( success, failure 또는 pending 중 하나) 에 출력합니다. 이 평가된 값은 처리된 결과 첨부 파일, 발견된 인시던트 문제 및 해당 문제의 가능한 조치방안 (예: 만기 날짜가 설정되어 있거나 면제 레이블이 있음) 에 따라 달라집니다. 자세한 정보는 인시던트 문제 를 참조하십시오.

# example on how to read the output into a variable in bash
read -r status < <(collect-evidence "${evidence_params[@]}")
echo $status # success

v2 로 전환(CLI 기반 구현)

새로운 CLI 기반 구현을 사용하려면 파이프라인에서 환경 속성을 설정하세요:

collect-evidence-version=v2

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"

전체 CLI 명령 참조 및 사용 가능한 모든 매개변수는 코코아 락커 증거 수집을 참조하세요.

사용 예제

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

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"

지원되는 도구 형식

현재 구현은 현재 다음 도구를 지원합니다 ( --tool-type 매개변수로 제공됨).

도구 이름 설명
cra IBM 코드 리스크 분석기
cra-cis IBM 코드 리스크 분석기 CIS
va Vulnerability Advisor ~을 위해 IBM Cloud Container Registry
gosec GoLang 보안 스캐너
xray JFrog Xray - 취약점 스캔 및 컨테이너 보안
owasp-zap OWASP 제드 공격 프록시(ZAP)
owasp-zap-ui OWASP 제드 공격 프록시 UI(ZAP UI)
sonarqube SonarQube 스캔
peer-review 동료 검토 스캔
twistlock TwistLock
cims 컨테이너 이미지 멀티 스캐너(CIMS)
mend 스캔 수정
mend-sast Mend SAST 스캔
checkov Checkov 스캔
cra-tf Terraform용 코드 위험 분석기
tfsec 테라폼 보안 스캐너
fips-scanner FIPS(연방 정보 처리 표준) 스캐너
detect-secrets 시크릿 감지
ciso-code-signing CISO 코드 서명 도구
sysdig Sysdig 스캔
cyclonedx CycloneDX 형식입니다. 이슈 관리를 위한 도구 감지는 여기 CycloneDX 메타데이터를 기반으로 수행됩니다
grype Grype 스캔

CycloneDX 메타데이터는 이슈 관리를 위해 도구 감지 기능을 사용하고 있습니다.

collect-evidence 스크립트가 지원되지 않는 도구 유형으로 호출되는 경우 스크립트는 첨부 파일을 처리하려고 시도하지 않습니다. 또한 안건 처리를 건너뛰고 증거 콜렉션이 중지되지 않습니다.

스크립트가 지원되는 도구에서 첨부 파일을 제공하지만 첨부 파일을 처리할 수 없는 경우 문제 처리를 건너뛰고 증거 콜렉션이 중지되지 않습니다.

증거 유형

--evidence-type 매개변수를 사용하여 증거 유형을 설정할 수 있습니다. 모든 유형을 설정할 수 있지만 IBM Cloud® Compliance Manager 은 다음 증거 유형을 지원합니다.

  • com.ibm.unit_tests
  • com.ibm.detect_secrets
  • com.ibm.branch_protection
  • com.ibm.static_scan
  • com.ibm.code_vulnerability_scan
  • com.ibm.code_bom_check
  • com.ibm.code_cis_check
  • com.ibm.cloud.image_vulnerability_scan
  • com.ibm.cloud.image_signing
  • com.ibm.dynamic_scan
  • com.ibm.cloud.image_signing
  • com.ibm.acceptance_tests
  • com.ibm.prod_change_request
  • com.ibm.close_change_reques

증거 유형 수집 및 도구 매핑

증거를 위한 지원 도구
증거 유형 ID 기본 지원 도구 출처 소유권 추천 자산 문제
com.ibm.branch_protection cocoa-branch-protection CI 플랫폼 저장소 비인시던트 문제
com.ibm.unit_tests jest PR/CI 사용자 저장소 비인시던트 문제
com.ibm.detect_secrets detect-secrets PR/CI/CC 플랫폼 저장소 인시던트/비인시던트 문제
com.ibm.code_vulnerability_scan cra-tf, cra, mend
코드형 인프라의 경우: tfsec, checkov
CI 플랫폼 저장소 인시던트/비인시던트 문제
com.ibm.code_bom_check cra-bom, sbom-utility PR/CI/CC 플랫폼 저장소 인시던트/비인시던트 문제
com.ibm.code_cis_check cra-cis PR/CI/CC 플랫폼 저장소 비인시던트 문제
com.ibm.peer_review peer-review CI 플랫폼 저장소 비인시던트 문제
com.ibm.static_scan sonarqube, gosec
코드형 인프라의 경우: terraform-fmt, terraform-validate, tflint
CI/CC 플랫폼 저장소 인시던트/비인시던트 문제
com.ibm.cloud.image_signing artifact-signing CI 플랫폼 저장소 비인시던트 문제
com.ibm.acceptance_tests jest CI 사용자 아티팩트(artifact) 비인시던트 문제
com.ibm.dynamic_scan owasp-zap, owasp-zap-ui CI 플랫폼 아티팩트(artifact) 인시던트/비인시던트 문제
com.ibm.cloud.image_vulnerability_scan va, sysdig, xray CI/CC 플랫폼 아티팩트(artifact) 인시던트/비인시던트 문제
com.ibm.prod_change_request gitlab CD 플랫폼 아티팩트(artifact) 비인시던트 문제
com.ibm.close_change_request gitlab CD 플랫폼 아티팩트(artifact) 비인시던트 문제
com.ibm.cloud.slsa tekton-chains CI 플랫폼 아티팩트(artifact) 비인시던트 문제
com.ibm.cloud.verify_signature ciso-code-signing CD 플랫폼 아티팩트(artifact) 비인시던트 문제
com.ibm.pipeline_logs 해당사항 없음 CI/CD/CC 플랫폼 해당사항 없음 해당사항 없음
com.ibm.pipeline_run_data 해당사항 없음 CI/CD/CC 플랫폼 해당사항 없음 해당사항 없음
com.ibm.network_compliance CI 플랫폼 저장소 인시던트/비인시던트 문제

스캔이 실패하거나 첨부파일을 구문 분석할 수 없는 경우, 이 도구는 자동으로 비사고 문제를 생성하여 실패를 추적합니다.

자산 요구사항

이 도구를 사용하여 수집된 증거는 V2 증거 콜렉션 작업 및 관련 증거 보관 업데이트의 일부입니다.

이 새 메소드는 자산 기반 증거에 초점을 맞춥니다. 즉, 해당 아티팩트 또는 저장소에서 실행되고 증거에 대한 결과를 생성한 스캔 및 테스트를 통해 증거가 아티팩트 및 저장소에 연결됩니다. 예를 들어, 다음과 같습니다.

  • 특정 커미트가 있는 저장소는 커미트 자산이 되며, 이는 스캔되어 커미트 자산에 대한 증거를 작성합니다.
  • 동일한 저장소 및 커미트를 사용하여 이미지가 빌드됩니다. 이미지는 소스 자산, 저장소 및 커미트와 관련된 자산이 됩니다.
  • 이미지가 스캔되고 증거가 작성됩니다. 모든 스캔 결과는 증거, 해당 자산 및 관련 자산을 통해 연결됩니다.

이 모든 작업을 함께 수행하려면 --asset-type--asset-key 매개변수와 함께 제공되는 자산이 일부 요구사항을 준수해야 합니다.

save_repo 명령을 사용하여 추가된 repo 자산

정확한 사용법 정보는 명령 참조 를 확인하십시오.

필수 필드:

  • url URL 저장소.
  • commit 커미트 SHA입니다.

save_artifact 명령을 사용하여 추가된 artifact 자산

정확한 사용법 정보는 명령 참조 를 확인하십시오.

필수 필드:

  • name 아티팩트 이름입니다. 예를 들어 이미지의 경우 레지스트리, 네임스페이스 및 이미지를 포함합니다(예: us.icr.io/team-images/service).
  • digest 아티팩트 다이제스트(예: sha256:a2292ed2b82c7a51d7d180c3187dbb0f7cc9ab385a68484c4f117e994acd6192).

비이미지에 대한 save_artifact에 필요한 변경사항: 이제 증거 수집이 모든 자산 유형을 지원합니다. 모든 자산 유형에 대해 작업할 증거 수집 save_artifact 예를 들어, type 를 사용하여 자산(zip)을 명시적으로 저장해야 합니다. save_artifact artifact-1 type=zip .... 증거 수집 스크립트에서 asset-type 는 아티팩트여야 하며 유형은 아티팩트에서 쿼리됩니다. 이 프로세스가 작동하기 위해 코코아 라커 자산 추가가 모든 유형의 자산을 추가하도록 수정되었습니다. 일단 저장되면 아래와 같이 증거 수집 스크립트를 호출할 수 있습니다.

collect-evidence --tool-type toolType --evidence-type artifact --asset-key artifact-1 ...

해당 유형에 deployment 대한 샘플 구현 예시는 저희 샘플 애플리케이션을 참조해 주십시오. https://us-south.git.cloud.ibm.com/open-toolchain/hello-compliance-app

이러한 변경사항을 사용하여 수집 증거 스크립트는 이미지 및 비이미지 아티팩트를 포함하여 모든 유형의 아티팩트를 처리합니다.

수집 중인 다중 자산-증거

수집 증거를 사용하여 여러 자산에 대한 증거의 동시 콜렉션을 구성할 수 있습니다. 여러 자산-키 및 자산-유형 쌍을 지정하는 --assets 플래그를 사용하여 증거 콜렉션을 시작합니다. 예를 들어, input --assets asset-key1:asset-type1 --assets asset-key2:asset-type2입니다. 이 옵션을 선택하는 경우 자산 키 및 자산 유형을 별도로 표시하지 마십시오.

다중 자산 콜렉션에 대한 다음과 같은 핵심 사항을 기억하십시오.

  • status, attachment, tool-type, evidence-typeupload-logs 는 모든 자산에서 일정합니다.
  • 기본적으로 여러 자산을 지정할 때 증거 처리는 레거시 플로우를 따릅니다. 단일 자산을 지정하는 경우 도구 또는 첨부에 특정한 플로우를 통해 증거 처리가 발생합니다.
  • 장애가 발생하는 경우 자산별로 문제가 작성됩니다. 이러한 안건은 증거 수집을 성공적으로 다시 실행하면 닫힙니다. 종결은 사용자가 지정한 자산과 상관됩니다.
  • 결합된 모든 자산을 포함하는 ID가 특징인 단일 증거 파일이 생성됩니다.