이 문서에서는 Vulnerability Exploitability eXchange (VEX) 문을 만드는 방법을 설명합니다.
Artifact Registry에 푸시된 모든 컨테이너 이미지에 대해 Artifact Analysis는 연결된 VEX 문을 저장할 수 있습니다. VEX는 제품이 알려진 취약점의 영향을 받는지 여부를 나타내는 보안 권고 유형입니다.
각 문은 다음을 제공합니다.
- VEX 문 게시자
- 문이 작성된 아티팩트
- 알려진 취약점에 대한 취약점 평가(VEX 상태)
소프트웨어 게시자는 VEX 문을 만들어 애플리케이션의 보안 상태를 설명할 수 있습니다. VEX 문구는 특정 아티팩트에서 발견된 취약점을 기록하고 고객 또는 규제 기관에 미치는 영향에 관한 맥락을 제공합니다.
보안 및 정책 시행자는 VEX 상태를 사용하여 소프트웨어 공급망의 위험을 분류하고 VEX 문을 사용하여 아티팩트의 구성을 증명하여 조직이 규제 요구사항을 충족하도록 지원할 수 있습니다.
VEX 상태
VEX 상태는 아티팩트가 알려진 취약점의 영향을 받는지 여부를 나타냅니다.
상태는 다음 중 하나일 수 있습니다.
- 영향을 받지 않음: 이 취약점과 관련해 해결이 필요하지 않습니다.
- 영향을 받음: 해결 조치가 권장됩니다.
- 해결됨: 이 제품 버전에서 취약점을 해결하기 위한 수정사항이 적용되었습니다.
- 조사 중: 이 제품의 상태가 아직 결정되지 않았습니다. 게시자가 향후 출시 버전에서 업데이트된 상태를 제공할 예정입니다.
시작하기 전에
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 컨테이너 이미지를 Artifact Registry 저장소에 저장하거나 저장소를 만들고 이미지를 푸시합니다.
필요한 역할
VEX 평가를 업로드하고 취약점의 VEX 상태를 확인하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.
-
메모를 만들고 업데이트하려면 다음을 실행합니다.
컨테이너 분석 메모 편집기 (
roles/containeranalysis.notes.editor
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
VEX 문 만들기
Artifact Analysis는 JSON의 공통 보안 알림 형식 (CSAF) 2.0 표준을 지원합니다. 새 VEX 문을 생성하려면 CSAF 스키마를 사용하세요.
다음은 알려진 취약점에 관한 cve
브랜치가 하나 있는 Artifact Registry의 이미지에 관한 VEX 문의 예입니다.
각 CVE에 대해 product_status
의 값을 정의해야 합니다.
{
"document": {
"csaf_version": "2.0",
"lang": "en-US",
"publisher": {
"name": "Sample-Company",
"namespace": "https://sample-company.com"
},
"title": "Vex document 1.1"
},
"product_tree": {
"branches": [
{
"name": "https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME",
"product": {
"name": "PRODUCT_NAME",
"product_id": "IMAGE_NAME"
}
}
]
},
"vulnerabilities": [
{
"cve": "CVE_ID",
"product_status": {
"PRODUCT_STATUS": [
"IMAGE_NAME"
]
}
}
]
}
위치
- PRODUCT_NAME 사람이 읽을 수 있는 이미지의 제품 이름입니다. 문자열 값을 사용합니다. 값은 버전 번호 및 기타 속성을 포함한 제품의 전체 표준 이름이어야 합니다.
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT_ID는 저장소가 포함된 프로젝트의 ID입니다.
- REPO_NAME는 Artifact Registry의 Docker 저장소 이름입니다.
- IMAGE_NAME은 이미지의 이름입니다.
- CVE_ID는 취약점의 식별자입니다(예:
CVE-2017-11164
). - PRODUCT_STATUS는 보안 위험 평가입니다.
Artifact Analysis는
known_affected
,known_not_affected
,under_investigation
,fixed
의 4가지 상태 유형을 지원합니다.
VEX 문에 나열할 각 취약점에 대해 cve
브랜치를 만들고 product_status
값을 정의해야 합니다.
product_tree.branches.name
의 name
필드 값은 이미지 URI입니다. 이 값을 포함하면 VEX 문이 특정 Docker 이미지에 연결됩니다.
다음 단계
- 기존 VEX 문 또는 다른 게시자가 제공한 VEX 문을 VEX 문 업로드합니다.
- VEX를 사용하여 취약점 문제의 우선순위를 지정합니다. VEX 문을 확인하고 VEX 상태별로 취약점을 필터링하는 방법을 알아보세요.