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

このドキュメントでは、Gemini Cloud Assist を使用してアーティファクトの状態を確認する方法、リポジトリとアーティファクトのメタデータに関する情報を取得する方法、Artifact Analysis の情報を使用してアーティファクトの脆弱性とソフトウェア部品表(SBOM)に関する質問に回答する方法について説明します。

始める前に

  1. プロジェクトで Gemini Cloud Assist が設定されていることを確認します。 Google Cloud
  2. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、 Google Cloud実際のシナリオでプロダクトがどのように動作するかを評価します。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  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 role (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. 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 role (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. Google Cloud CLI をインストールします。

  13. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  14. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init

必要なロール

アーティファクトに関する情報を Gemini Cloud Assist にプロンプトで送信するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

Gemini Cloud Assist を開く

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

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

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

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

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

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 を指定すると、特定のイメージの脆弱性の詳細が表示されます。

次のプロンプトは、リポジトリ us-central1-docker.pkg.dev/my-project/my-repository の既知の脆弱性のリストを取得するよう Gemini Cloud Assist に依頼します。

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

レスポンスには、指定したリポジトリの CVSS スコアの降順で並べ替えられた最大 10 件の脆弱性のリストが含まれます。

すべての脆弱性を表示するには、artifacts vulnerabilities list gcloud CLI コマンドを使用します。修飾されていないイメージ名を含めるか、Secure Hash Algorithm(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`.

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

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

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

たとえば、次のプロンプトは、us-central1-docker.pkg.dev/my-project/my-image のビルドの来歴のリストを取得するよう Gemini Cloud Assist に依頼します。

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

次のプロンプトは、リポジトリ us-central1-docker.pkg.dev/my-project/my-repo の SBOM のリストを取得するよう Gemini Cloud Assist に依頼します。

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 番号に置き換えます。

次のステップ