OS パッケージを自動的にスキャンする
自動スキャンを有効にする方法、Artifact Registry にコンテナ イメージを push する方法、イメージで見つかった脆弱性の一覧を表示する方法について説明します。
Artifact Analysis は、イメージが Artifact Registry に push されるたびに脆弱性をスキャンします。プラットフォーム管理者とアプリケーション デベロッパーは、この自動スキャン機能を使用して、ソフトウェア配信パイプラインのリスクを特定できます。
このクイックスタートでは、一般公開されているシンプルなパッケージを使用して、パッケージ スキャンの 1 つのタイプを示します。デフォルトでは、スキャン API を有効にすると、Artifact Analysis は複数のパッケージ タイプの脆弱性をスキャンします。サポートされているパッケージ タイプは、OS、Go、Java(Maven)、Python、Node.js(npm)です。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Artifact Registry API と Container Scanning API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable containerscanning.googleapis.com
artifactregistry.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Artifact Registry API と Container Scanning API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable containerscanning.googleapis.com
artifactregistry.googleapis.com
Artifact Registry で Docker リポジトリを作成する
このクイックスタートのサンプル イメージを保存する Docker リポジトリを作成します。
Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリを作成] をクリックします。
[リポジトリの作成] ページで、次の設定を入力します。
- 名前:
quickstart-docker-repo - 形式: Docker
- モード: 標準
- ロケーション タイプ: リージョン
- リージョン:
us-central1
- 名前:
[作成] をクリックします。
[リポジトリ] ページが表示されます。quickstart-docker-repo リポジトリがリポジトリ リストに追加されます。
認証を構成する
Artifact Registry でイメージを push または pull する前に、Google Cloud CLI を使用して Artifact Registry に対するリクエストを認証するように Docker を構成する必要があります。
Cloud Shell またはローカルシェルで、リージョン us-central1 の Docker リポジトリの認証を設定します。
gcloud auth configure-docker us-central1-docker.pkg.dev
パッケージを取得する
コンテナ イメージを保存するディレクトリに移動します。
イメージをローカル ディレクトリにコピーします。たとえば、docker を使用して、Docker Hub から最新の Ubuntu イメージを pull できます。
docker pull ubuntu:latest
リポジトリ名でパッケージにタグ付けする
パッケージを Artifact Registry に push する場合は、イメージを特定の場所に push するように docker push コマンドを構成する必要があります。
次のコマンドを実行して、イメージに quickstart-image:tag1 としてタグ付けします:
docker tag ubuntu:latest \ us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
場所
- PROJECT は Google Cloudプロジェクト ID です。
プロジェクト ID にコロン(
:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。 us-central1は、Artifact Registry リポジトリのリージョンです。docker.pkg.devは Docker リポジトリのホスト名です。quickstart-imageは、リポジトリで使用するイメージ名です。イメージ名は、ローカル イメージ名とは別の名前にできます。tag1は Docker イメージに追加するタグです。タグを指定しない場合は、Docker でデフォルトのタグlatestが適用されます。
イメージを Artifact Registry に push する
Artifact Analysis は、Artifact Registry にアップロードされた新しいイメージを自動的にスキャンします。
イメージを Artifact Registry の Docker リポジトリに push するには、次のコマンドを実行します。
docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
PROJECT は、実際の Google Cloud
プロジェクト ID に置き換えます。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
脆弱性スキャンの結果を表示する
イメージの脆弱性を表示するには:
Artifact Analysis コンソールで Artifact Registry リポジトリのリストを開きます。
リポジトリ リストで、リポジトリをクリックします。
イメージ名をクリックします。
イメージのダイジェストのリストが表示されます。
各イメージ ダイジェストの脆弱性の総数が、[脆弱性] 列に表示されます。
[脆弱性] 列で、リンクされている脆弱性の合計数をクリックします。
脆弱性の一覧が表示されます。
脆弱性リストには、このイメージがスキャンされた回数、脆弱性の重大度レベル、修正プログラムが入手可能かどうか、脆弱性が存在するパッケージの名前とパッケージ タイプが表示されます。
脆弱性ソースから特定の脆弱性の詳細を確認するには、[名前] 列のリンクされた CVE 識別子をクリックします。
結果を表示するその他の方法
Google Cloud コンソールには最大 1,200 件の脆弱性が表示されます。イメージに 1, 200 を超える脆弱性がある場合は、gcloud または API を使用して完全なリストを表示します。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。
このガイド用に新しいプロジェクトを作成した場合は、そのプロジェクトを削除できます。- Google Cloud コンソールで [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。