アプリケーションをビルドしてセキュリティ分析情報を表示する

このクイックスタートでは、アプリケーションをビルドする方法と、Google Cloud コンソールの Software Delivery Shield の [セキュリティ分析情報] パネルで、ビルドのセキュリティ分析情報を表示する方法について説明します。

次のことを行います。

  • Cloud Build を使用して Java アプリケーションをビルドおよびコンテナ化し、そのコンテナ イメージを Artifact Registry Docker リポジトリに push します。
  • ビルドに関する次のセキュリティ分析情報を表示します。

    • ソフトウェア アーティファクトのためのサプライチェーン レベル(SLSA)のレベル。SLSA 仕様に従って、ソフトウェア ビルドプロセスの成熟度を示します。
    • ビルド アーティファクトの脆弱性
    • ビルド アーティファクトのソフトウェア部品構成表(SBOM)
    • ビルドの来歴。ビルドに関する検証可能なメタデータのコレクションです。これには、ビルドされたイメージのダイジェスト、入力ソースの場所、ビルド ツールチェーン、ビルドステップ、ビルド時間などの詳細情報が含まれます。

準備

  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. Google Cloud CLI をインストールします。
  3. gcloud CLI を初期化するには:

    gcloud init
  4. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

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

  6. Cloud Build, Artifact Registry, and Container Scanning API を有効にします。

    gcloud services enable cloudbuild.googleapis.com artifactregistry.googleapis.com containerscanning.googleapis.com
  7. Google Cloud CLI をインストールします。
  8. gcloud CLI を初期化するには:

    gcloud init
  9. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

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

  11. Cloud Build, Artifact Registry, and Container Scanning API を有効にします。

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

環境を準備する

  1. プロジェクト ID を環境変数として設定します。

    export PROJECT_ID=$(gcloud config get project)
    
  2. ビルドしてコンテナ化するための Java コードサンプルを含むリポジトリのクローンを作成します。

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd software-delivery-shield-demo-java/backend
    

イメージ用の Artifact Registry リポジトリを作成する

  1. ロケーション us-central1containers という名前の Docker リポジトリを作成し、「Docker repository」という説明を指定します。

    gcloud artifacts repositories create containers \
        --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. リポジトリが作成されたことを確認します。

    gcloud artifacts repositories list
    

    表示されたリポジトリのリストに containers が表示されます。

アプリケーションのビルド

Cloud Build を使用して Java アプリケーションをビルドし、コンテナ化します。 次のコマンドは、Java アプリケーションをビルドしてコンテナ化し、ビルドしたコンテナを Artifact Registry Docker リポジトリに保存します。

gcloud builds submit --config=cloudbuild.yaml --region=us-central1

ビルドが完了すると、次のような成功ステータス メッセージが表示されます。

<pre class="none lang-sh">
DONE
-----------------------------------------------------------------------------
ID: 3e08565f-7f57-4449-bc68-51c46cf33d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://sds-docs-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f78055e9.tgz
IMAGES: us-central1-docker.pkg.dev/sds-docs-project/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
</pre>

ビルドされたイメージの SBOM を生成する

SBOM は、アプリケーションの完全なインベントリであり、ソフトウェアが依存するパッケージを特定します。その内容には、ベンダーのサードパーティ ソフトウェア、内部アーティファクト、オープンソース ライブラリが含まれます。

前のセクションでビルドしたイメージの SBOM を生成します。

gcloud artifacts sbom export
    --uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart

セキュリティ分析情報を表示する

Google Cloud コンソールの Cloud Build UI には、Software Delivery Shield の [セキュリティ分析情報] パネルがあります。このパネルには、SLSA レベル、依存関係における脆弱性、ビルドの来歴など、ビルドに関連するセキュリティ情報が表示されます。

Software Delivery Shield の [Security Insights] パネルを表示するには:

  1. Google Cloud コンソールで、[ビルド履歴] ページを開きます。

    [ビルド履歴] ページを開く

  2. 実際のプロジェクトを選択し、[開く] をクリックします。

  3. [リージョン] プルダウン メニューで、[us-central1] を選択します。

  4. ビルドを含むテーブルで、実行したビルドを含む行を見つけます。

  5. [セキュリティ分析情報] 列で、[表示] をクリックします。

ビルドの [セキュリティ分析情報] パネルが表示されます。

Software Delivery Shield パネルのスクリーンショット

このパネルには、次の情報が表示されます。

  • SLSA レベル: このビルドは SLSA レベル 3 を取得しています。このセキュリティ レベルの詳細については、[詳細] リンクをクリックしてください。

  • 脆弱性: アーティファクトに見つかった脆弱性。イメージ名(java-guestbook-backend)をクリックして、脆弱性スキャンされたアーティファクトを確認します。

  • Artifact Registry でのビルドされたコンテナ イメージの依存関係

  • ビルドの詳細: ビルダーやログを表示するためのリンクなど、ビルドの詳細。

クリーンアップ

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

  1. Container Scanning API を無効にします。

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Artifact Registry リポジトリを削除します。

    gcloud artifacts repositories delete containers \
        --location=us-central1 --async
    

    以上で、このクイックスタートで作成したリポジトリの削除が完了しました。

次のステップ