VEX 문 만들기

이 문서에서는 Vulnerability Exploitability eXchange (VEX) 문을 만드는 방법을 설명합니다.

Artifact Registry에 푸시된 모든 컨테이너 이미지에 대해 Artifact Analysis는 연결된 VEX 문을 저장할 수 있습니다. VEX는 제품이 알려진 취약점의 영향을 받는지 여부를 나타내는 보안 권고 유형입니다.

각 문은 다음을 제공합니다.

  • VEX 문 게시자
  • 문이 작성된 아티팩트
  • 알려진 취약점에 대한 취약점 평가(VEX 상태)

소프트웨어 게시자는 VEX 문을 만들어 애플리케이션의 보안 상태를 설명할 수 있습니다. VEX 문구는 특정 아티팩트에서 발견된 취약점을 기록하고 고객 또는 규제 기관에 미치는 영향에 관한 맥락을 제공합니다.

보안 및 정책 시행자는 VEX 상태를 사용하여 소프트웨어 공급망의 위험을 분류하고 VEX 문을 사용하여 아티팩트의 구성을 증명하여 조직이 규제 요구사항을 충족하도록 지원할 수 있습니다.

VEX 상태

VEX 상태는 아티팩트가 알려진 취약점의 영향을 받는지 여부를 나타냅니다.

상태는 다음 중 하나일 수 있습니다.

  • 영향을 받지 않음: 이 취약점과 관련해 해결이 필요하지 않습니다.
  • 영향을 받음: 해결 조치가 권장됩니다.
  • 해결됨: 이 제품 버전에서 취약점을 해결하기 위한 수정사항이 적용되었습니다.
  • 조사 중: 이 제품의 상태가 아직 결정되지 않았습니다. 게시자가 향후 출시 버전에서 업데이트된 상태를 제공할 예정입니다.

시작하기 전에

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 컨테이너 이미지를 Artifact Registry 저장소에 저장하거나 저장소를 만들고 이미지를 푸시합니다.

필요한 역할

VEX 평가를 업로드하고 취약점의 VEX 상태를 확인하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

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.namename 필드 값은 이미지 URI입니다. 이 값을 포함하면 VEX 문이 특정 Docker 이미지에 연결됩니다.

다음 단계

  • 기존 VEX 문 또는 다른 게시자가 제공한 VEX 문을 VEX 문 업로드합니다.
  • VEX를 사용하여 취약점 문제의 우선순위를 지정합니다. VEX 문을 확인하고 VEX 상태별로 취약점을 필터링하는 방법을 알아보세요.