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

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

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

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

始める前に

  1. 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.
  2. Install the Google Cloud CLI.

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

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

    gcloud init
  5. Create or select 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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.

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com
  8. Install the Google Cloud CLI.

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

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

    gcloud init
  11. Create or select 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  12. Verify that billing is enabled for your Google Cloud project.

  13. 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.

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com
  14. 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. 画像をローカル ディレクトリにコピーします。たとえば、Docker を使用して Docker Hub から最新の Go イメージを pull できます。

      docker pull golang:1.17.6-alpine
      

    リポジトリ名でパッケージにタグ付けする

    パッケージを Artifact Registry に push する場合は、イメージを特定の場所に push するように docker push コマンドを構成する必要があります。

    次のコマンドを実行して、イメージに quickstart-image:tag1 としてタグ付けします:

    docker tag golang:1.17.6-alpine \
    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 は、新しい Go パッケージが 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 にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

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

    イメージの脆弱性を表示するには:

    1. リポジトリのリストを取得します。

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

    2. リポジトリ リストで、リポジトリをクリックします。

    3. イメージのリストで、イメージ名をクリックします。

      各イメージ ダイジェストの脆弱性の総数が、[脆弱性] 列に表示されます。

      脆弱性のあるスキャンされた画像

    4. イメージで検出された脆弱性の一覧を表示するには、[脆弱性] 列のリンクをクリックします。

      [スキャン結果] セクションには、スキャンされたパッケージ タイプ、脆弱性の合計数、修正プログラムが利用可能な脆弱性、修正プログラムがない脆弱性、有効な重大度の概要が表示されます。

      脆弱性、修正、有効な重大度を一覧表示するスキャン結果ページ

      脆弱性の表には、検出された各脆弱性の共通脆弱性識別子(CVE)名、有効な重大度、共通脆弱性スコアリング システム(CVSS)スコア、修正(利用可能な場合)、脆弱性を含むパッケージの名前、パッケージ タイプが一覧表示されます。これらのファイルをフィルタして並べ替え、ファイル拡張子で特定のファイル、ディレクトリ、ファイルタイプを確認できます。 Google Cloud コンソールには、この表に 1 ページあたり最大 1,200 件の脆弱性が表示されます。

    5. 特定の CVE の詳細については、CVE 名をクリックします。

    6. バージョン番号や影響を受ける場所などの脆弱性発生の詳細を表示するには、脆弱性の名前を含む行で [表示] または [修正済みを表示] をクリックします。修正プログラムのない脆弱性のリンクテキストは [表示]、修正プログラムが適用されている脆弱性のリンクテキストは [修正済みを表示] です。

    クリーンアップ

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

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

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

    次のステップ