지속적인 컴플라이언스 파이프라인

연속 준수 파이프라인 (CC 파이프라인) 은 주기적으로 배치된 아티팩트 및 해당 소스 저장소를 스캔합니다.

CC 파이프라인은 environment-tag 값을 사용하여 inventory 저장소의 항목을 처리하여 확인할 최신 배치 상태를 판별합니다. 아티팩트 및 소스 저장소에서 검사를 스캔하고 실행한 후 파이프라인은 새 인시던트 문제를 작성하거나 인시던트 저장소에서 기존 인시던트 문제를 업데이트합니다. 마지막으로, 파이프라인은 이러한 문제와 결과를 사용하여 증거를 수집하고 증거를 요약하여 발견된 아티팩트의 규정 준수 상태를 업데이트합니다.

스테이지 및 태스크

다음 표에는 CC 파이프라인에서 실행되는 작업이 나열되어 있습니다. 또한 표에서는 이러한 각 단계에 대한 개요를 제공합니다.

  • 태스크 또는 스테이지: 이는 .pipeline-config.yaml 구성 파일에 정의된 스테이지의 이름을 참조합니다.

  • 간단한 설명: 스테이지 실행 중에 수행되는 조치에 대한 간결한 설명을 제공합니다.

  • 사용자 정의 허용 가능: 사용자가 .pipeline-config.yaml 파일에 사용자 정의 스크립트를 삽입하여 스테이지의 기본 동작을 수정하거나 바꿀 수 있는 유연성이 있는지 여부를 표시합니다.

  • 기본 참조 구현: 이는DevSecOps 파이프라인은 단계에 대해 사전 정의되거나 기본 구현과 함께 제공됩니다. 특히, 다음과 같은 특정 단계의 경우 unit-tests 또는 setup,DevSecOps 파이프라인은 즉시 사용 가능한 구현을 제공하지 않습니다. 대신 사용자는 애플리케이션의 요구사항에 맞게 조정된 사용자 정의 스크립트 또는 코드를 제공해야 합니다.

  • 증거 콜렉션: 스테이지가 표준 증거의 콜렉션을 수행하는지 여부를 표시합니다. 언제DevSecOps관로 단계에 대한 참조 구현을 제공하면 증거 수집이 즉시 수행됩니다. 그러나 사용자 가 이러한 사전 정의된 스테이지를 수정하거나 대체하도록 선택하는 경우 해당 사용자 정의 구현에 적절한 증거 콜렉션이 포함되어 있는지 확인해야 합니다. 동일한 책임은 다음 단계에서 사용자에게 있습니다.DevSecOps 파이프라인은 즉시 사용 가능한 구현을 제공하지 않으므로 증거 수집을 수행해야 합니다. 이 열은 증거 콜렉션 수행을 담당하는 엔티티 (사용자/파이프라인) 를 표시합니다.

  • 건너뛰기 허용 가능 (버전 > = v10에 적용 가능): .pipeline-config.yaml 에서 건너뛰기 특성을 true로 설정하여 사용자가 이 단계의 실행을 옵트 아웃할 수 있는지 여부를 표시합니다. 그러나 이 기능을 사용할 때 특히 증거를 수집하도록 설계된 단계에 대해 주의해야 합니다. 이러한 단계를 건너뛰면 빌드에 대한 필수 증거가 누락될 수 있습니다.

지속적 규정 준수 파이프라인 단계 및 작업
작업 또는 단계 간단한 설명 .pipeline-config.yaml 에서 허용되는 사용자 정의 기본 참조 구현 증거 콜렉션 허용되는 건너뛰기
start 파이프라인 환경을 설정하십시오. 아니오 파이프라인 아니오
setup 빌드 및 테스트 환경을 설정하십시오. 아니오 아니오 아니오
detect-secrets 애플리케이션 코드에서 시크릿 발견 스캔을 실행합니다. 파이프라인 아니오
static-scan 애플리케이션 코드에서 정적 스캔 코드를 실행합니다. 파이프라인
dynamic-scan 애플리케이션에서 동적 스캔을 실행합니다. 파이프라인
compliance-checks 앱 저장소에서 코드 위험 분석기 스캔 및 기타 준수 검사를 실행합니다. 파이프라인
scan-artifact 빌드된 아티팩트를 스캔합니다. 파이프라인
finish 로그 파일, 아티팩트 및 증거를 수집하여 증거 로커에 업로드합니다. 파이프라인

.pipeline-config.yaml 파일을 사용하여 스테이지를 사용자 지정하는 방법에 대한 자세한 내용은 사용자 지정 스크립트파이프라인 매개변수 목록을 참조하세요.

스테이지 및 증거

다음 표는 다양한 유형의 증거와 그 증거가 수집되는 파이프라인 내의 특정 단계 간의 관계를 보여줍니다.

지속적인 통합 단계 및 관련 증거
태스크 또는 스테이지 증거 유형
start 해당사항 없음
setup 해당사항 없음
detect-secrets com.ibm.detect_secrets
static-scan com.ibm.static_scan
compliance-checks com.ibm.code_bom_check, com.ibm.code_cis_check, com.ibm.code_vulnerability_scan, com.ibm.branch_protection
dynamic-scan com.ibm.dynamic_scan
scan-artifact com.ibm.cloud.image_vulnerability_scan
finish com.ibm.pipeline_logs, com.ibm.pipeline_run_data

collect-evidence 스크립트를 사용하여 사용자 정의할 수 있는 사용자 스테이지에서 증거를 수집하는 방법에 대한 자세한 정보는 collect-증거 스크립트 를 참조하십시오.

아티팩트 및 저장소에 대한 인벤토리 처리

시작 단계는 인벤토리를 복제하고 프로덕션 환경에서 최신 항목을 처리합니다. 다음 파이프라인 매개변수를 제공하여 이 환경을 지정할 수 있습니다.

지속적인 규정 준수 파이프라인 아티팩트 및 리포지토리
이름 유형 설명 필수 또는 선택사항
environment-tag 텍스트 재고의 최신 대상 환경을 나타내는 태그입니다. 예: prod_latest 또는 us-south_prod_latest 필수
environment-branch 텍스트 인벤토리의 대상 환경을 나타내는 분기 이름입니다. 예: prod 더 이상 사용되지 않음 - 대신 environment-tag 선호
region-prefix 텍스트 대상 환경에 대한 latest 태그의 접두부로 사용되는 리젼 이름입니다. 예: us-south 더 이상 사용되지 않음 - 대신 environment-tag 선호

인벤토리 항목에는 배치된 아티팩트 및 저장소 소스가 포함되어 있습니다. 파이프라인은 다음 pipelinectl 명령을 사용하여 재고 항목을 처리하고 수집하며 파이프라인 실행을 위해 등록합니다.

또한 시작 단계는 발견된 저장소, 각 저장소 및 각 커미트 쌍을 복제합니다. 따라서 예를 들어, 커미트가 sha1repo1 는 폴더에서 복제되지만 파이프라인은 별도의 폴더에서 커미트가 sha2 인 동일한 repo1 를 복제합니다.

파이프라인은 다음 예제와 같이 단순 이름 지정 표기법을 사용하고 색인을 증분하여 파이프라인 실행을 위한 아티팩트 및 저장소를 등록합니다.

  • repo-1, repo-2, repo-3
  • artifact-1 artifact-2, artifact-3

다음 pipelinectl 명령을 사용하여 사용자 정의 스테이지에서 이러한 항목을 나열할 수 있습니다.

pipelinectl 명령 load_repo "$repo" branch 를 사용하여 CC 파이프라인에서 분기 정보를 검색하는 경우 항상 master 를 분기로 리턴합니다. 따라서 분기가 아닌 commit hashes 를 사용하십시오.

setup 스테이지

CC 파이프라인의 설정 단계는 .pipeline-config.yaml 에 의해 정의되는 setup 단계에 있는 스크립트를 실행합니다. 다음 명령을 사용하여 스크립트가 실행 중인 파이프라인을 판별할 수 있습니다.

get_env pipeline_namespace

이 명령은 실행 중인 파이프라인에 따라 cc, cd, ci 또는 pr 를 리턴합니다. 이 방법을 사용하면 필요한 경우 파이프라인 간에 설정 스크립트를 재사용할 수 있습니다.

시크릿 스캔 발견

IBM Detect Secrets 도구는 앱 코드에서 시크릿이 표시되는 위치를 식별합니다. 스캔을 위한 저장소 설정에 대한 자세한 정보는 여기 에서 사용 가능합니다.

정적 코드 스캔

정적 코드 스캔 스테이지는 지정된 앱 저장소 코드 베이스에서 정적 코드 분석기 도구를 실행합니다.

CC 파이프라인은 스캐너의 인벤토리에서 발견되는 저장소를 제공합니다.

다음 방법 중 하나를 사용하여 파이프라인에 정적 코드를 추가할 수 있습니다.

  • SonarQube 도구를 도구 체인에 추가하여 이미 실행 중인 SonarQube 인스턴스 이름, URL, 인증 정보를 제공하십시오. static-scan 작업은 지정된 리포지토리에 대한 검사를 실행합니다.
  • 사용자 지정 구현을 위해 .pipeline-config.yaml 파일의 static-scan 사용자 지정 단계에 코드를 추가하세요.

동적 스캔

동적 스캔 단계는 동적 애플리케이션 보안 테스트 도구를 실행하여 배치된 애플리케이션에서 취약성을 찾습니다.

  • 사용자 지정 구현을 위해 .pipeline-config.yaml 파일의 동적 스캔 사용자 지정 단계에 고유한 동적 스캔 코드를 추가하세요.

OWASP-ZAP를 사용하여 동적 스캔을 구성하는 방법에 대해 자세히 학습하려면 CC 파이프라인에 대한 ZAP 스캔 구성 을 참조하십시오.

규제 준수 검사에서 스캔 및 검사

규정 준수 검사 및 확인
스캔 또는 검사 설명
Code Risk Analyzer 취약성 스캔 모든 앱 패키지 종속성, 컨테이너 기본 이미지, 운영 체제 패키지의 취약성을 찾습니다. Code Risk Analyzer 도구를 사용합니다.
Code Risk Analyzer CIS 검사 Kubernetes 배치 Manifest에서 구성 검사 를 실행합니다. Code Risk Analyzer 도구를 사용합니다.
Code Risk Analyzer 명세서(BOM) 검사 모든 종속성의 가계도를 캡처하는 지정된 저장소의 BOM입니다. 이 BOM은 여러 단위로 수집됩니다. 예를 들어, BOM은 빌드에서 사용되는 기본 이미지의 목록, 기본 이미지의 패키지 목록, 기본 이미지 위에 설치된 앱 패키지의 목록을 캡처합니다. BOM은 분석 결과의 실지 검증 정보로 사용되며 잠재적으로 정책 게이트를 적용하는 데 사용될 수 있습니다. Code Risk Analyzer 도구를 사용합니다.

이러한 스크립트는 파이프라인이 인식하는 모든 앱에서 실행됩니다. CC 파이프라인은 pipelinectl save_repo 인터페이스를 사용하여 인벤토리 항목에서 찾은 저장소를 등록한 후 list_reposload_repo 명령을 사용하여 저장소를 반복하고 이를 스캐너에 전송합니다.

사용자 스크립트 스테이지의 예상 출력에 관한 자세한 정보는 사용자 정의 스크립트를 참조하십시오.

아티팩트 스캔 및 서명

아티팩트 스캔 단계에서는 사용자 정의할 수 있는 단계와 함께 Docker 이미지에 대한 기본 동작을 제공합니다.

  • Container Registry Vulnerability Advisor 스캐닝

CC 파이프라인은 pipelinectl save_artifact 인터페이스를 사용하여 인벤토리 항목에서 찾은 아티팩트를 등록한 후 list_artifactsload_artifact 명령을 사용하여 이러한 아티팩트를 반복합니다.

이 단계를 시작하려면 pipelinectl 인터페이스를 사용하여 파이프라인에 대한 아티팩트를 제공하십시오. 빌드 스크립트 및 .pipeline-config.yaml 구성을 업데이트하지 않아도 됩니다.

다른 스캔 프로세스를 사용하거나 icr.io 에서 Docker 이미지 이외의 아티팩트를 처리하려면 프로젝트에서 .pipeline-config.yaml 구성을 사용하여 이러한 단계를 사용자 지정할 수 있습니다.

빌드 시 규제 준수 데이터 수집

CC 파이프라인은 발견된 모든 CVE, 취약성 또는 경보마다 개별 문제로 결과를 구분하여 검사 및 스캔의 결과를 처리하려고 시도합니다. CC 파이프라인에서 발견되는 문제는 prod 환경에서 발견되는 문제를 식별하는 continuous-compliance-check 레이블로 표시됩니다.

파이프라인은 모든 검사 및 스캔에서 증거 를 수집하고 이를 증거 보관함에 저장합니다. 증거 콜렉터는 Tekton 정의를 포함하는 파이프라인 로그 파일, 파이프라인 데이터 자체도 저장합니다. 스캔 및 검사 결과에 따라 작성된 안건도 증거에 첨부됩니다.