このドキュメントでは、Gemini Cloud Assist を使用してアーティファクトの状態を把握し、リポジトリとアーティファクトのメタデータに関する情報を取得し、Artifact Analysis の情報を使用してアーティファクトの脆弱性とソフトウェア部品表(SBOM)に関する質問に回答する方法について説明します。
始める前に
- Google Cloud プロジェクトで Gemini Cloud Assist を設定していることを確認します。
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分も差し上げます。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry and Container Scanning APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry and Container Scanning APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
必要なロール
アーティファクトに関する情報を Gemini Cloud Assist に求めるために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- プロジェクトまたはリポジトリに対する検出結果閲覧者 (
roles/containeranalysis.occurrences.viewer) - プロジェクトに対する Gemini Cloud Assist ユーザー (
roles/cloudaicompanion.user)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Gemini Cloud Assist を開く
Gemini Cloud Assist チャットは、Google Cloud コンソールのどこからでも開くことができます。
- Google Cloud コンソールで、Artifact Registry にコンテナ イメージが保存されているプロジェクトを選択します。
- [Cloud Assist] パネルを開くには、spark [Gemini AI チャットを開く、または閉じる] をクリックします。
- プロンプトを入力するには、プロンプトを入力して、[送信] [メッセージを送信] をクリックします。
プロンプトに関する考慮事項
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 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 など)に置き換えます。
次のプロンプトでは、脆弱性 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 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 の詳細が含まれます。コンテナ イメージ名からロケーション、プロジェクト、イメージの詳細を削除すると、より広範な結果が返されます。
すべての SBOM は、artifacts SBOM list gcloud CLI コマンドを使用して確認できます。
その他のプロンプト
次のプロンプトは、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 番号に置き換えます。
次のステップ
Gemini Cloud Assist の詳細を確認する。