Python パッケージを自動的にスキャンする
自動スキャンを有効にする方法、Artifact Registry にコンテナ イメージを push する方法、イメージで検出された脆弱性のリストを確認する方法について学習します。
Artifact Analysis は、イメージが Artifact Registry に push されるたびに脆弱性をスキャンします。プラットフォーム管理者とアプリケーション デベロッパーは、この自動スキャン機能を使用して、ソフトウェア配信パイプラインのリスクを特定できます。
このクイックスタートでは、一般公開されているシンプルなパッケージを使用して、パッケージ スキャンの 1 つのタイプを示します。デフォルトでは、スキャン API を有効にすると、Artifact Analysis は複数のパッケージ タイプの脆弱性をスキャンします。サポートされているパッケージの種類は、OS、Go、Java(Maven)、Python、Node.js(npm)です。
始める前に
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs:
gcloud services enable containerscanning.googleapis.com
artifactregistry.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs:
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
パッケージを入手する
コンテナ イメージを保存するディレクトリに移動します。
画像をローカル ディレクトリにコピーします。たとえば、TensorFlow を使用できます。このイメージには Python が含まれており、いくつかの脆弱性があります。
このガイドの目的は、画像をスキャンして結果を表示することのみです。Tensorflow に関する事前知識は必要ありません。
次のコマンドを実行してイメージを取得します。
docker pull amancevice/pandas:1.2.5-jupyter
パッケージにリポジトリ名をタグ付けする
パッケージを Artifact Registry に push する場合は、イメージを特定の場所に push するように docker push
コマンドを構成する必要があります。
次のコマンドを実行して、イメージに quickstart-image:tag1
としてタグ付けします:
docker tag amancevice/pandas:1.2.5-jupyter \ 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 にアップロードされたコンテナ イメージ内の新しい Python パッケージを自動的にスキャンします。
Artifact Registry の Docker リポジトリにイメージを push するには、次のコマンドを実行します。
docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
PROJECT は、実際の Google Cloud プロジェクト ID に置き換えます。
プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
脆弱性スキャンの結果を表示する
イメージの脆弱性を表示するには:
リポジトリのリストを取得します。
リポジトリ リストで、リポジトリをクリックします。
画像リストで、イメージ名をクリックします。
各イメージ ダイジェストの脆弱性の総数が、[脆弱性] 列に表示されます。
イメージで検出された脆弱性の一覧を表示するには、[脆弱性] 列のリンクをクリックします。
[スキャン結果] セクションには、スキャンされたパッケージの種類、脆弱性の合計数、修正可能な脆弱性、修正不可能な脆弱性、有効な重大度の概要が表示されます。
脆弱性の表には、検出された各脆弱性の Common Vulnerability and Exposures(CVE)名、有効な重大度、Common Vulnerability Scoring System(CVSS)スコア、修正(利用可能な場合)、脆弱性が含まれているパッケージの名前、パッケージ タイプが表示されます。
これらのファイルをフィルタして並べ替えることで、ファイル拡張子で特定のファイル、ディレクトリ、ファイルの種類を確認できます。
Google Cloud コンソールには、この表に最大 1,200 個の脆弱性が表示されます。イメージに 1, 200 を超える脆弱性がある場合は、gcloud または API を使用して完全なリストを表示する必要があります。
特定の CVE の詳細については、CVE 名をクリックします。
バージョン番号や影響を受ける場所など、脆弱性の発生の詳細を表示するには、脆弱性の名前を含む行の [表示] または [修正済みを確認] をクリックします。リンクテキストは、修正されていない脆弱性の場合は [表示]、修正が適用されている脆弱性の場合は [修正済みを確認] です。
結果を確認するその他の方法
Google Cloud コンソールには、最大 1,200 個の脆弱性が表示されます。イメージに 1, 200 を超える脆弱性がある場合は、gcloud または API を使用して完全なリストを表示する必要があります。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。
このガイド用に新しいプロジェクトを作成した場合は、プロジェクトを削除できます。- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.