Gemini 지원을 통한 취약점 탐색

이 문서에서는 Gemini Cloud Assist를 사용하여 아티팩트 상태를 파악하고, 저장소 및 아티팩트 메타데이터에 관한 정보를 얻고, 아티팩트 분석 정보를 사용하여 아티팩트 취약점 및 소프트웨어 명세서(SBOM)에 관한 질문에 답변하는 방법을 설명합니다.

시작하기 전에

  1. Google Cloud 프로젝트에 Gemini Cloud Assist를 설정했는지 확인합니다.
  2. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  6. Install the Google Cloud CLI.

  7. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  8. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. Verify that billing is enabled for your Google Cloud project.

  11. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  12. Install the Google Cloud CLI.

  13. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  14. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  15. 필요한 역할

    Gemini Cloud Assist에 아티팩트에 관한 정보를 요청하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

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

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

    Gemini Cloud Assist 열기

    Google Cloud 콘솔의 어느 곳에서나 Gemini Cloud Assist 채팅을 열 수 있습니다.

    1. Google Cloud 콘솔에서 Artifact Registry에 컨테이너 이미지가 저장된 프로젝트를 선택합니다.

      프로젝트 선택기로 이동

    2. Cloud Assist 패널을 열려면 spark Gemini AI 채팅 열기 또는 닫기를 클릭합니다.
    3. 프롬프트를 입력하려면 프롬프트를 입력하고 보내기 보내기를 클릭합니다.

    프롬프트 고려사항

    다음은 Gemini Cloud Assist 프롬프트를 생성할 때 알아야 하는 Artifact Analysis 관련 고려사항의 목록입니다. 일반적인 프롬프트 작성에 관한 자세한 내용은 Google Cloud를 위한 Gemini에 대해 더 나은 프롬프트 작성을 참고하세요.

    • 모든 프롬프트는 기본적으로 선택한 프로젝트로 설정되지만 위치, 저장소 또는 이미지별로 필터링하도록 프롬프트를 지정할 수 있습니다.
    • 컨테이너 이미지 이름을 기반으로 하는 모든 쿼리는 컨테이너 이미지 이름을 접두사로 취급합니다. 이렇게 하면 프로젝트, 저장소 또는 특정 이미지 (다양한 SHA에 걸쳐) 내에서 필터링할 수 있지만 태그별로 필터링할 수는 없습니다.
    • 더 구체적인 결과를 얻으려면 범위를 포함하세요. 예를 들어 특정 이미지의 결과를 가져오려면 범위에 이미지 이름을 포함합니다. 컨테이너 이미지 이름에 프로젝트, 저장소, 이미지 또는 image@digest 세부정보를 추가하여 필터링할 수 있습니다.
    • Artifact Analysis는 모든 지역의 결과를 결합하여 제공하므로 Artifact Analysis 프롬프트에는 지역 한정자가 필요하지 않습니다. 리전 한정자를 지정하여 결과를 필터링할 수 있습니다.

    알려진 상위 취약점 나열

    Gemini Cloud Assist에 현재 프로젝트에서 가장 잘 알려진 취약점을 나열해 달라고 요청할 수 있습니다. 취약점은 공통 취약점 점수 산출 시스템 (CVSS) 점수에 따라 내림차순으로 정렬되고 취약점 ID별로 그룹화됩니다. 상위 10개의 취약점만 표시됩니다. 결과에는 지난 30일 동안 스캔된 모든 이미지의 취약점이 포함됩니다.

    컨테이너 이미지 이름으로 응답을 필터링할 수 있습니다.

    Gemini Cloud Assist Chat에서 알려진 주요 취약점을 나열하려면 다음 프롬프트를 입력합니다.

    List artifact vulnerabilities for `CONTAINER_IMAGE_NAME`.
    

    CONTAINER_IMAGE_NAME을 저장소가 포함된 컨테이너 이미지 이름으로 바꿉니다(예: us-central1-docker.pkg.dev/my-project/my-repository).

    컨테이너 이미지 이름에 세부정보를 더 많이 포함하면 더 정확한 응답이 반환됩니다. 예를 들어 LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE는 특정 이미지의 취약점 세부정보를 제공합니다.

    다음 프롬프트는 Gemini Cloud Assist에 us-central1-docker.pkg.dev/my-project/my-repository 저장소의 가장 잘 알려진 취약점을 나열하도록 요청합니다.

    List artifact vulnerabilities for
    `us-central1-docker.pkg.dev/my-project/my-repository`.
    

    응답에는 지정된 저장소의 CVSS 점수를 기준으로 내림차순으로 정렬된 최대 10개의 취약점 목록이 포함됩니다.

    모든 취약점을 보려면 artifacts vulnerabilities list gcloud CLI 명령어를 사용합니다. 정규화되지 않은 이미지 이름을 포함하거나 보안 해시 알고리즘 (SHA)을 제공하여 취약점을 볼 수 있습니다.

    취약점별 이미지 나열

    Gemini Cloud Assist에 지정된 취약점이 포함된 모든 이미지를 표시하라고 프롬프트를 표시할 수 있습니다. 대답은 가장 최근 생성 날짜부터 내림차순으로 정렬되며 지난 30일 동안 스캔된 이미지가 포함됩니다. 이 프롬프트에는 최대 10개의 이미지가 표시되며 Artifact Analysis에서 스캔한 이미지만 포함됩니다.

    다음과 같이 응답을 필터링할 수 있습니다.

    • 취약점 ID
    • 컨테이너 이미지 이름

    특정 취약점이 포함된 이미지를 나열하려면 Cloud Assist 채팅에서 다음 프롬프트를 입력합니다.

    List docker container images that contain vulnerability
    `VULNERABILITY_ID`.
    

    VULNERABILITY_ID을 찾으려는 취약점의 ID(예: CVE-2024-01234)로 바꿉니다.

    다음 프롬프트는 Gemini Cloud Assist에 취약점 CVE-2024-01234이 포함된 이미지를 나열하도록 요청합니다.

    List artifact vulnerabilities for `CVE-2024-01234`.
    

    응답에는 지정된 저장소의 CVSS 점수를 기준으로 내림차순으로 정렬된 지정된 취약점이 포함된 최대 10개의 이미지 목록이 포함됩니다.

    패키지별 이미지 나열

    Gemini Cloud Assist에 지정된 패키지가 포함된 이미지 목록을 반환하도록 프롬프트를 표시할 수 있습니다. 이미지는 생성일의 내림차순으로 정렬되며 지난 30일 동안 스캔된 이미지가 포함됩니다. 이 프롬프트에는 최대 10개의 이미지가 표시되며 Artifact Analysis에서 스캔한 이미지만 포함됩니다.

    컨테이너 이미지 이름으로 응답을 필터링할 수 있습니다.

    특정 패키지가 포함된 이미지를 나열하려면 Cloud Assist 채팅에서 다음 프롬프트를 입력합니다.

    List docker container images that contain package
    `PACKAGE_ID`.
    

    PACKAGE_ID을 찾으려는 패키지의 ID로 바꿉니다.

    예를 들어 다음 프롬프트는 Gemini Cloud Assist에 my-package-name 패키지가 포함된 이미지를 나열해 달라고 요청합니다.

    List images that contain package `my-package-name`.
    

    응답에는 지정된 패키지가 포함된 최대 10개의 이미지 목록이 포함됩니다.

    빌드 출처 나열

    Gemini Cloud Assist에 지정된 프로젝트 및 범위에 대해 입증된 최신 빌드 10개의 출처 세부정보를 반환하도록 프롬프트를 표시할 수 있습니다. 결과는 생성 날짜별로 내림차순으로 정렬되며 가장 최근에 생성된 항목이 목록 상단에 표시됩니다. 최대 10개의 빌드가 표시됩니다. 빌드가 표시되려면 지난 30일 이내에 생성되어야 합니다. 이 프롬프트는 SLSA 1.0 출처가 있는 빌드만 지원합니다.

    컨테이너 이미지 이름으로 응답을 필터링할 수 있습니다.

    빌드 출처를 나열하려면 Cloud Assist 채팅에서 다음 프롬프트를 입력하세요.

    List build provenance for CONTAINER_IMAGE_NAME.
    

    CONTAINER_IMAGE_NAME를 출처를 확인하려는 이미지의 ID로 바꿉니다.

    예를 들어 다음 프롬프트는 Gemini Cloud Assist에 us-central1-docker.pkg.dev/my-project/my-image의 빌드 출처를 나열하도록 요청합니다.

    List build provenance for `us-central1-docker.pkg.dev/my-project/my-image`.
    

    컨테이너 이미지 이름에서 위치, 프로젝트 또는 이미지 세부정보를 삭제하여 더 광범위한 결과 집합을 반환할 수 있습니다. 응답에는 최신 빌드 10개의 빌드 출처 세부정보가 포함됩니다.

    Google Cloud 콘솔에서 빌드를 보려면 빌드 기록 페이지를 방문하세요.

    SBOM 나열

    Gemini Cloud Assist에 저장소의 최신 SBOM을 반환하도록 요청할 수 있습니다. 결과는 생성 날짜를 기준으로 내림차순으로 정렬되며, 가장 최근에 생성된 항목이 목록의 맨 위에 표시됩니다. 지난 30일 동안 생성된 빌드는 최대 10개까지 표시될 수 있습니다.

    image@digest 세부정보를 포함한 컨테이너 이미지 이름으로 응답을 필터링할 수 있습니다.

    SBOM을 나열하려면 Cloud Assist 채팅에서 다음 프롬프트를 입력합니다.

    List SBOMs for `CONTAINER_IMAGE_NAME`.
    

    CONTAINER_IMAGE_NAME을 검색하려는 컨테이너 이미지 이름(예: us-central1-docker.pkg.dev/my-project/my-repo)으로 바꿉니다.

    다음 프롬프트는 Gemini Cloud Assist에 us-central1-docker.pkg.dev/my-project/my-repo 저장소의 SBOM을 나열하도록 요청합니다.

    List SBOMs for `us-central1-docker.pkg.dev/my-project/my-repo`.
    

    응답에는 최신 저장소 10개의 SBOM 세부정보가 포함됩니다. 컨테이너 이미지 이름에서 위치, 프로젝트 또는 이미지 세부정보를 삭제하여 더 광범위한 결과 집합을 반환할 수 있습니다.

    artifacts SBOM list gcloud CLI 명령어를 사용하여 모든 SBOM을 확인할 수 있습니다.

    추가 프롬프트

    다음 프롬프트는 변수를 사용하여 Gemini Cloud Assist로 필터링하는 기능을 보여줍니다.

    특정 변수별로 취약점을 나열하려면 Cloud Assist 채팅에 다음을 입력합니다.

    List vulnerabilities for `SCOPE`.
    

    이 프롬프트에서 SCOPE는 프로젝트, 저장소, 이미지 또는 이미지와 다이제스트로 설정할 수 있습니다.

    특정 패키지가 포함된 이미지를 나열하려면 Cloud Assist 채팅에 다음을 입력합니다.

    List images that contain the log4j package.
    

    특정 취약점이 포함된 이미지를 나열하려면 Cloud Assist 채팅에 다음을 입력하세요.

    List images that contain `VULNERABILITY_ID`.
    

    이 프롬프트에서 VULNERABILITY_ID을 CVE 번호로 바꿉니다.

    다음 단계