이 문서에서는 아티팩트 분석에 저장된 취약점 악용 가능성 교환 (VEX) 문을 확인하고 VEX 상태를 사용하여 취약점을 필터링하는 방법을 설명합니다.
보안 및 정책 시행자는 이러한 기능을 사용하여 보안 문제 완화 작업 중 우선순위를 지정할 수 있습니다. VEX 데이터를 사용하여 아티팩트 구성을 증명하여 조직이 규제 요구사항을 충족하도록 할 수도 있습니다.
필요한 역할
VEX 평가를 업로드하고 취약점의 VEX 상태를 확인하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.
-
취약점 발생 횟수를 보려면 다음 단계를 따르세요.
컨테이너 분석 어커런스 뷰어 (
roles/containeranalysis.occurrences.viewer
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
Google Cloud 콘솔에서 VEX 상태 보기
Artifact Registry에 저장된 컨테이너 이미지의 VEX 정보를 보려면 다음 단계를 따르세요.
Artifact Registry 저장소 페이지를 엽니다.
페이지에 저장소 목록이 표시됩니다.
저장소 목록에서 저장소 이름을 클릭합니다.
이미지 목록에서 이미지 이름을 클릭합니다.
이미지 다이제스트 목록이 열립니다.
다이제스트 목록에서 다이제스트 이름을 클릭합니다.
탭이 한 줄로 표시된 다이제스트 세부정보 페이지가 열립니다. 기본적으로 개요 탭이 열려 있습니다.
탭 행에서 취약점 탭을 선택합니다.
페이지에는 VEX 상태 섹션이 포함된 스캔 결과 개요가 표시됩니다.
VEX 상태 요약 섹션에는 각 VEX 상태 유형별로 분류된 패키지 수가 표시됩니다. 특정 VEX 상태의 모든 패키지를 보려면 상태 유형 옆에 있는 숫자를 클릭합니다.
취약점 탭에는 취약점 목록에 있는 각 패키지의 VEX 상태도 표시됩니다.
취약점 목록을 필터링하려면 다음 단계를 따르세요.
- 취약점 목록 위에서 취약점 필터링을 클릭합니다.
- 필터 목록에서 필터를 선택합니다.
- 목록 필터링에 사용할 값을 지정합니다.
Cloud Build에서 VEX 상태 보기
Cloud Build를 사용하는 경우 Google Cloud 콘솔의 보안 통계 측면 패널에서 VEX 정보를 확인할 수도 있습니다.
Cloud Build를 사용하는 경우 Google Cloud 콘솔의 보안 통계 측면 패널에서 이미지 메타데이터를 확인할 수 있습니다.
보안 통계 측면 패널에서는 Artifact Registry에 저장된 아티팩트에 대한 빌드 보안 정보에 대한 대략적인 개요를 제공합니다. 측면 패널에 대한 자세한 내용과 Cloud Build를 사용하여 소프트웨어 공급망을 보호하는 방법은 빌드 보안 통계 보기를 참고하세요.
gcloud CLI를 사용하여 보기
다음 섹션에서는 VEX 정보를 검색하고 필터를 적용하여 필요에 따라 결과를 제한하는 방법을 설명합니다.
단일 아티팩트의 VEX 정보 보기
업로드된 VEX 정보를 보려면 API를 쿼리하고 메모 유형이 VULNERABILITY_ASSESSMENT
인 메모를 나열하면 됩니다.
다음 API 호출을 사용하여 지정된 아티팩트의 모든 취약점 평가 메모를 요청합니다.
curl --data-urlencode "filter=(kind=\"VULNERABILITY_ASSESSMENT\" AND vulnerability_assessment.product.generic_uri=\"https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST\"" https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/notes
위치
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT_ID는 이미지가 Artifact Registry 저장소에 저장된 Google Cloud 프로젝트의 ID입니다.
- REPO_NAME는 이미지가 포함된 Artifact Registry 저장소의 이름입니다.
- IMAGE_NAME은 이미지의 이름입니다.
- DIGEST은
sha256:
으로 시작하는 문자열인 이미지 다이제스트입니다.
VEX 상태별 취약점 필터링
gcloud를 사용하여 VEX 상태별로 취약점 메타데이터를 필터링할 수 있습니다. 각 Grafeas 취약점 발생에 저장된 상태를 기반으로 Artifact Analysis 필터링
지정된 VEX 상태를 기반으로 취약점 발생을 필터링하려면 다음 명령어를 실행합니다.
gcloud artifacts vulnerabilities list RESOURCE_URI \
--occurrence-filter="vulnDetails.vex_assessment.state=\"STATUS\""
위치
- RESOURCE_URI는 https://LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH와 유사한 이미지의 전체 URL입니다.
- STATUS는 필터링할 VEX 상태로,
known_affected
,known_not_affected
,under_investigation
또는fixed
중 하나일 수 있습니다.
예를 들어 다음 명령어를 실행하여 VEX 상태가 AFFECTED
인 취약점 발생을 필터링합니다.
gcloud artifacts vulnerabilities list RESOURCE_URI \
--occurrence-filter="vulnDetails.vex_assessment.state=\"AFFECTED\""
VEX가 없는 취약점 나열
아직 관련 VEX 정보가 없는 취약점을 식별하려면 다음 gcloud 명령어를 사용하세요.
gcloud artifacts vulnerabilities list /
LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST /--occurrence-filter="isNull(vulnDetails.vex_assessment.state)"
위치
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT_ID는 이미지가 Artifact Registry 저장소에 저장된 Google Cloud 프로젝트의 ID입니다.
- REPO_NAME는 이미지가 포함된 Artifact Registry 저장소의 이름입니다.
- IMAGE_NAME은 이미지의 이름입니다.
- DIGEST은
sha256:
으로 시작하는 문자열인 이미지 다이제스트입니다.
제한사항
- VEX 문을 업로드하는 기능은 컨테이너 이미지에만 지원됩니다.
- 업로드된 VEX 문을 CSAF, OpenVex 또는 SPDX 표준으로 내보낼 수 없습니다.
다음 단계
- SBOM에 대해 알아보기
- Artifact Analysis로 취약점을 스캔합니다.