Code Risk Analyzer(CRA)가 더 이상 지원되지 않게 됨에 따라, Syft 및 Grype 스캔은 CRA의 기능 대부분을 제공하는 대안입니다. CRA 기능을 비활성화하려면 Code Risk Analyzer 스캔 제외 설정 를 참조하십시오.
IBM Cloud Code Risk Analyzer 스캔 구성
IBM Cloud 코드 위험 분석기를 사용하여 코드의 취약점을 분석하고 지정된 규칙에 대한 규정 준수 여부를 검증할 수 있습니다.
코드 위험 분석기가 앱을 평가하면 모든 타사 패키지의 종속성 및 사용 가능한 라이선스 정보를 나열하는 소프트웨어 자재 명세서(SBOM)가 생성됩니다. 필요한 경우 cycloneDX-specific 형식으로 생성할 수 있습니다. SBOM 파일에 나열된 패키지에서 취약성을 스캔합니다. 이 파일은 cycloneDX-specific 형식으로 생성할 수 있습니다. 또는 Node.js, Maven
또는 Gradle 에서 작성된 애플리케이션에서 발견된 취약점을 자동으로 수정하도록 설정할 수 있습니다.
- 모든 Kubernetes 파일이 준수를 위해 분석됩니다.
- 모든 Terraform 플랜이 준수에 대해 분석됩니다.
코드 위험 분석기는 도구 체인이 지원되는 모든 IBM Cloud 리젼에서 사용 가능합니다. 자세한 정보는 플러그인 문서 를 참조하십시오.
스캔 구성
SBOM 파일을 생성하기 위해 코드 위험 분석기 스캔은 지정된 디렉토리 경로의 아티팩트에 액세스하고 심층 검색을 수행하여 모든 종속 항목 (추적 종속 항목 포함) 을 식별합니다. SBOM 파일을 생성하고 취약성을 발견하는 데 필요한 특정 파이프라인 환경 변수는 없지만 경로에 Dockerfile이 포함된 경우 기본 이미지를 가져오고 파일에 지정된 각 빌드 단계에 대해 이미지가 빌드됩니다.
Dockerfile에 ARGS가 필요한 경우 사용자 정의 스크립트에서 개별 ARG를 환경 변수로 설정하고 사용자 정의 스크립트의 위치를 파이프라인 변수로 제공하십시오.
| 환경 변수 | 설명 | 필수 또는 선택적 | 목적 |
|---|---|---|---|
cra-custom-script-path |
리포지토리에 있는 스크립트의 경로입니다. | 선택 사항 | Docker 스크립트에 필요한 환경 변수를 설정합니다. |
자세한 정보는 사용자 정의 스크립트 를 참조하십시오.
기본적으로 Terraform 파일은 분석되지 않습니다. Terraform 파일을 스캔하려면 다음 파이프라인 환경 변수를 설정해야 합니다.
| 환경 변수 | 설명 | 필수 또는 선택사항 | 용도 |
|---|---|---|---|
opt-in-tfsec |
True 또는 false. 기본값인 false로 설정합니다. | 선택사항 | 보안을 위해 Terraform 파일을 스캔합니다. |
opt-in-cra-tf-validate |
True 또는 false. 기본값인 false로 설정합니다. | 선택사항 | Terraform 파일의 유효성을 검증합니다. |
코드 위험 분석기 스캔은 제공된 API키를 사용하여 IBMCloud CLI에 로그인하고 Docker 빌드를 트리거합니다. 기존 IBM Cloud CLI 세션은 이 CRA 단계의 나머지 부분에서 계속 사용됩니다. 그러나 IBM Cloud CLI 세션은 표준 API키 로그인을 위해 20분 후에 만료됩니다. 빌드 프로세스가 20분 이상 걸리는 경우 세션이 만료되었으므로 401오류 메시지와 함께 CRA 단계가 실패합니다. 이러한 장기
조작을 위해 IBMCloud CLI 세션을 활성 상태로 유지하기 위해 환경 변수 ibmcloud-enable-session-keep-alive 가 도입되었습니다.
| 환경 변수 | 설명 | 유형 | 필수 또는 선택사항 | 용도 |
|---|---|---|---|---|
ibmcloud-enable-session-keep-alive |
0 또는 1 기본값은 0으로 설정되어 있습니다. | 선택 | 선택사항 | 코드 위험 분석기 스캔에서 장기 실행 작업을 위해 IBMCloud CLI 세션을 활성 상태로 유지하십시오. |
기본적으로 Code Risk Analyzer 배치 분석 명령은 Kubernetes 배치 Manifest에서 구성 검사 를 실행합니다. 코드 위험 분석기 배치 분석 명령은 --strict 옵션을 설정하여 실행됩니다. Code Risk Analyzer 배치 분석 스캔 중에 파일을 무시하려면
다음 환경 변수를 사용해야 합니다.
| 환경 변수 | 설명 | 필수 또는 선택사항 | 용도 |
|---|---|---|---|
cra-cis-fileignore-path |
저장소에 있는 .fileignore 파일의 경로입니다. | 선택사항 | Code Risk Analyzer 배치 분석 스캔 중에 무시할 파일의 정보를 포함하는 .fileignore 파일의 경로를 지정하십시오. |
취약성을 생략하여 앱 배치
코드 위험 분석기는 자문위원회보다 먼저 취약한 패키지를 찾도록 설계되었습니다. 예외적인 상황에서는 취약한 패키지가 발견되어 아직 수정되지 않은 경우에도 애플리케이션을 배치해야 할 수 있습니다. 가능하면 코드를 다시 배치하기 전에 패키지를 업데이트하거나 제거해야 합니다.
특정 파일을 무시하고 프로덕션으로 푸시를 완료하기 위해 다음 스키마를 사용하여 스캔된 저장소의 루트에서 .cra/.cveignore 라는 파일을 작성할 수 있습니다.
[
{
"cve": "string",
"alwaysOmit": "bool",
"untilRemediationAvailable": "bool",
"expiration": "string"
},
]
다음 코드 스니펫은 샘플 .cveignore 파일을 표시합니다.
[
{
"cve": "CVE-2021-27290",
"alwaysOmit": true
},
{
"cve": "CVE-2020-8244",
"untilRemediationAvailable": true,
},
{
"cve": "CLAIR-JAVA-ORGAPACHEHTTPCOMPONENTS-31517",
"expiration": "2022-02-10T22:08:41+04:00",
"comment": "Additional security measures are in place"
}
]
이 파일은 .craveomit 로 알려져 있었습니다. 원래 파일 형식은 더 이상 사용되지 않으며 .cra/.cveignore 로 대체되었습니다. 최신 파일을 사용하도록 코드를 업데이트하십시오.
코드 위험성 분석기 플러그인의 문서 에 대해 자세히 학습하거나 더 이상 사용되지 않는 CRA 문서 를 확인할 수도 있습니다.
취약성 자동 수정
코드 위험 분석기를 연속 준수 (CC) 파이프라인의 일부로 사용하여 취약성을 찾을 뿐만 아니라 자동으로 취약성을 수정할 수 있습니다. 코드 위험 분석기는 파이프라인의 compliance-check 단계의 일부로 작동합니다. 기본적으로 자동 수정 기능은 비활성화되어 있습니다.
자동 수정은 CC 파이프라인에만 사용 가능합니다.
자동 수정이 켜지면 코드 위험성 분석기는 저장소의 기본 분기에 대해 식별된 수정사항으로 가져오기 요청을 작성하여 취약한 패키지를 비vunlnerable 버전으로 업데이트하려고 시도합니다. 기본적으로 코드 위험 분석기는 기본 취약 패키지 및 종속 패키지의 부 버전 및 패치 버전을 업데이트하지만 패키지의 주 버전은 업데이트하지 않습니다. 가져오기 요청이 허용 가능한 경우 수동으로 승인하고 병합할 수 있습니다. 파이프라인이 실행될 때마다 새 가져오기 요청이 생성되므로 중복을 방지하기 위해 열려 있는 대로 검토하고 병합해야 합니다.
자동 수정은 엔터프라이즈 GitHub 및 GitLab 저장소 모두에 사용 가능하며 다음 표에 지정된 파일을 수정할 수 있습니다.
| Ecosystem | 수정 가능한 파일 |
|---|---|
| Nodejs | package.json 및 package-lock.json |
| Gradle | build.gradle, gradle.lockfile 및 buildscript-gradle.lockfile |
| Maven | pom.xml |
취약성 자동 수정을 시작하려면 파이프라인에 대해 다음 선택적 환경 변수를 설정하십시오.
| 가변 | 설명 | 기본 설정 |
|---|---|---|
opt-in-cra-auto-remediation |
파이프라인에 대한 자동 교정을 사용합니다. | false수정을 시작하려면 이 변수를 true 로 설정하십시오. |
opt-in-cra-auto-remediation-force |
열린 가져오기 요청의 일부로 주요 패키지 업데이트를 강제 실행합니다. | false주요 패키지 업데이트를 강제 실행하려면 이 변수를 true 로 설정하십시오. |
opt-in-cra-auto-remediation-enabled-repos |
자동 교정을 사용하려는 특정 저장소를 지정합니다. | list_repos 가 호출될 때 리턴되는 모든 저장소에 대해 사용으로 설정됩니다. 특정 저장소를 지정하려면 쉼표로 구분된 저장소 이름 목록을 제공하십시오. |
Code Risk Analyzer 스캔 제외 설정
Code Risk Analyzer 스캔을 제외하려면 다음 환경 변수를 설정하십시오.
| 가변 | 유형 | 필수 또는 선택사항 | 거부 설정값 | 기본값 | 대안 |
|---|---|---|---|---|---|
cra-bom-generate |
열거 | 선택사항 | 0 |
1 |
Syft |
cra-vulnerability-scan |
열거 | 선택사항 | 0 |
1 |
Grype |
cra-deploy-analysis |
열거 | 선택사항 | 0 |
1 |
체호프 |
opt-in-cra-tf-validate |
열거 | 선택사항 | 0 |
1 |
체호프 |
취약점 스캔과 배포 분석 스캔은 기본적으로 지점 보호를 위한 필수 점검 항목으로 설정되어 있습니다. 이 두 가지 검사 중 하나를 제외하려면, 규정 준수 검사를 사용자 지정하고 지점 보호 규칙을 구성해야 합니다.