Gemini の支援機能を使用して脆弱性を調べる

このドキュメントでは、Gemini Cloud Assist を使用してアーティファクトの状態を把握し、リポジトリとアーティファクトのメタデータに関する情報を取得し、Artifact Analysis の情報を使用してアーティファクトの脆弱性とソフトウェア部品表(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 を開く

    Gemini Cloud Assist のチャットは、Google Cloud コンソールの任意の場所から開くことができます。

    1. Google Cloud コンソールで、Artifact Registry にコンテナ イメージが保存されているプロジェクトを選択します。

      プロジェクト セレクタに移動

    2. [Cloud Assist] パネルを開くには、spark [Gemini AI チャットを開く、または閉じる] をクリックします。
    3. プロンプトを入力するには、プロンプトを入力して、[送信] [送信] をクリックします。

    プロンプトに関する考慮事項

    Gemini Cloud Assist プロンプトを生成する際に注意すべき Artifact Analysis 固有の考慮事項を次に示します。プロンプトの作成に関する一般的なアドバイスについては、Gemini for Google Cloudにより適したプロンプトを作成するをご覧ください。

    • すべてのプロンプトはデフォルトで選択したプロジェクトに設定されますが、プロンプトでロケーション、リポジトリ、イメージでフィルタリングするように指定できます。
    • コンテナ イメージ名に基づくクエリは、コンテナ イメージ名を接頭辞として扱います。これにより、プロジェクト、リポジトリ、特定のイメージ(異なる SHA 間)内でフィルタできますが、タグでフィルタすることはできません。
    • より具体的な結果を得るには、スコープを含めます。たとえば、特定のイメージの結果を取得するには、スコープにイメージ名を含めます。コンテナ イメージ名にプロジェクト、リポジトリ、イメージ、image@digest の詳細を追加して、フィルタできます。
    • Artifact Analysis ではすべてのリージョンの結果が統合されるため、Artifact Analysis のプロンプトにリージョン修飾子は必要ありません。リージョン修飾子を指定して結果をフィルタできます。

    上位の既知の脆弱性を一覧表示する

    Gemini Cloud Assist にプロンプトを送信して、現在のプロジェクトで最もよく知られている脆弱性を一覧表示できます。脆弱性は、共通脆弱性スコアリング システム(CVSS)スコアの降順で並べ替えられ、脆弱性 ID ごとにグループ化されます。上位 10 件の脆弱性のみが表示されます。結果には、過去 30 日間にスキャンされたすべてのイメージの脆弱性が含まれます。

    コンテナ イメージ名でレスポンスをフィルタできます。

    既知の脆弱性の上位リストを取得するには、Gemini Cloud Assist チャットで次のプロンプトを入力します。

    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 など)に置き換えます。

    次のプロンプトは、脆弱性 CVE-2024-01234 を含むイメージのリストを Gemini Cloud Assist にリクエストします。

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

    レスポンスには、指定された脆弱性を含む最大 10 個のイメージのリストが含まれます。このリストは、指定されたリポジトリの CVSS スコアで降順に並べ替えられています。

    パッケージ別にイメージを一覧表示する

    Gemini Cloud Assist に、指定したパッケージを含むイメージのリストを返すようプロンプトを表示できます。イメージは作成日の降順で並べ替えられ、過去 30 日間にスキャンされたイメージが含まれます。このプロンプトには最大 10 個の画像が表示され、Artifact Analysis でスキャンされた画像のみが含まれます。

    コンテナ イメージ名でレスポンスをフィルタできます。

    特定のパッケージを含むイメージを一覧表示するには、[Cloud Assist] チャットで次のプロンプトを入力します。

    List docker container images that contain package
    `PACKAGE_ID`.
    

    PACKAGE_ID は、検索するパッケージの ID に置き換えます。

    たとえば、次のプロンプトは、パッケージ my-package-name を含むイメージのリストを Gemini Cloud Assist に要求します。

    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 アシスト] チャットで次のプロンプトを入力します。

    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 の詳細が含まれます。コンテナ イメージ名からロケーション、プロジェクト、イメージの詳細を削除すると、より広範な結果が返されます。

    すべての SBOM は、artifacts SBOM list gcloud CLI コマンドを使用して確認できます。

    その他のプロンプト

    次のプロンプトは、変数を使用して Gemini Cloud Assist でフィルタリングする機能を示しています。

    特定の変数で脆弱性を一覧表示するには、Cloud Assist チャットに次のように入力します。

    List vulnerabilities for `SCOPE`.
    

    このプロンプトでは、SCOPE をプロジェクト、リポジトリ、イメージ、イメージとダイジェストに設定できます。

    特定のパッケージを含むイメージを一覧表示するには、Cloud アシストのチャットに次のように入力します。

    List images that contain the log4j package.
    

    特定の脆弱性を含むイメージを一覧表示するには、Cloud Assist チャットに次のコマンドを入力します。

    List images that contain `VULNERABILITY_ID`.
    

    このプロンプトで、VULNERABILITY_ID を CVE 番号に置き換えます。

    次のステップ