Python パッケージを自動的にスキャンする

自動スキャンを有効にする方法、Artifact Registry にコンテナ イメージを push する方法、イメージで検出された脆弱性の一覧を表示する方法について説明します。

Artifact Analysis は、イメージが Artifact Registry に push されるたびに脆弱性をスキャンします。プラットフォーム管理者とアプリケーション デベロッパーは、この自動スキャン機能を使用して、ソフトウェア配信パイプラインのリスクを特定できます。

このクイックスタートでは、シンプルな一般公開パッケージを使用して、パッケージ スキャンの 1 つのタイプを示します。デフォルトでは、スキャン API を有効にすると、Artifact Analysis は複数のパッケージ タイプの脆弱性をスキャンします。サポートされているパッケージ タイプは、OS、Go、Java(Maven)、Python、Node.js(npm)です。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

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

    gcloud init
  5. 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 プロジェクトの名前に置き換えます。

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します。

  7. Artifact Registry API と Container Scanning API を有効にします(まだ有効になっていない場合)。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

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

    gcloud init
  11. 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 プロジェクトの名前に置き換えます。

  12. Google Cloud プロジェクトで課金が有効になっていることを確認します。

  13. Artifact Registry API と Container Scanning API を有効にします(まだ有効になっていない場合)。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com

Artifact Registry で Docker リポジトリを作成する

このクイックスタートのサンプル イメージを保存する Docker リポジトリを作成します。

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. [リポジトリを作成] をクリックします。

  3. [リポジトリの作成] ページで、次の設定を入力します。

    • 名前: quickstart-docker-repo
    • 形式: Docker
    • モード: 標準
    • ロケーション タイプ: リージョン
    • リージョン: us-central1
  4. [作成] をクリックします。

[リポジトリ] ページが表示されます。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

パッケージを入手する

  1. コンテナ イメージを保存するディレクトリに移動します。

  2. 画像をローカル ディレクトリにコピーします。たとえば、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 は、コンテナ イメージ内の新しい Python パッケージが 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 にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

脆弱性スキャンの結果を表示する

結果を表示するその他の方法

Google Cloud コンソールには最大 1,200 件の脆弱性が表示されます。イメージに 1, 200 を超える脆弱性がある場合は、gcloud または API を使用して完全なリストを表示する必要があります。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。

このガイド用に新しいプロジェクトを作成した場合は、そのプロジェクトを削除できます。

  1. Google Cloud コンソールで [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ