始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Enable APIs and set up Artifact Registries
/ 20
Set up a Cloud Build pipeline and push your Docker image to Artifact Registry
/ 20
Create an Attestor, KMS pair, and update the policy
/ 20
Integrate vulnerability scanning into your CI/CD pipeline
/ 20
Fix the vulnerability and redeploy the CI/CD pipeline
/ 20
チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。
チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。
100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。
このラボは、「安全なソフトウェア デリバリー」コースに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。
Cymbal Bank のソフトウェア エンジニアとして、新しいウェブ アプリケーションをクラウドに安全にデプロイするタスクを任されているとします。このアプリケーションは機密性の高い顧客データを扱うため、セキュリティが最重要事項です。目標は、厳格なセキュリティ基準を遵守しながら、コンテナ化されたアプリケーションをビルド、スキャン、署名、デプロイする堅牢な自動化パイプラインを実装することです。このチャレンジでは、Artifact Registry、Binary Authorization、Cloud Build などの Google Cloud サービスを使用して、サンプル アプリケーションでこの目標を達成します。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
安全な CI / CD パイプラインの構築を開始する前に、必要な Google Cloud API を有効にして、開発環境を設定する必要があります。これにより、必要なすべてのサービスとツールにアクセスできるようになります。
artifact-scanning-repo と artifact-prod-repo という名前を付けます。スキャン リポジトリは、脆弱性がスキャンされる前の Docker イメージを保存するために使用され、本番環境リポジトリは、署名されてデプロイの準備が整った後のイメージを保存するために使用されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、Docker イメージをビルドして Artifact Registry に push するための基本的な Cloud Build 構成を作成し、CI / CD パイプラインの基盤を築きます。この最初のステップにより、ラボの後半でイメージの脆弱性をスキャンできるようになります。
まず、Cloud Build サービス アカウントに次のロールを追加します。
roles/iam.serviceAccountUserroles/ondemandscanning.adminCloud Shell エディタで、sample-app/cloudbuild.yaml ファイルを開きます。
TODO を完了する: イメージ名のプレースホルダ(<image-name>)を入力します。これには、artifact-scanning-repo リポジトリを参照する必要があります。イメージ名は sample-image にする必要があります。必ずリージョン
ビルドを送信します。
artifact-scanning-repo リポジトリに push したイメージを確認し、スキャン結果に多数の重大な脆弱性が表示されていることを確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
コンテナ デプロイに厳格なセキュリティ ポリシーを適用するために、Binary Authorization を活用します。このサービスでは、どのイメージを誰がどのような条件でデプロイできるかを定義できます。このタスクでは、認証者、ノート、KMS 鍵など、Binary Authorization の必須コンポーネントを作成して構成します。これにより、Binary Authorization を CI / CD パイプラインに統合する準備が整います。
Cloud Shell で、JSON ファイルを作成します。このファイルは、認証のヒントを含む認証者向けノートを定義します。認証ヒントの human_readable_name を「Container Vulnerabilities attestation authority」に設定します。
Container Analysis API を使用して、ID が vulnerability_note の新しいノートを作成します。ノートの詳細は、前のステップで作成したノートファイルで定義する必要があります。API リクエストに適切な認証を含め、適切な Content-Type ヘッダーを設定してください。
Container Analysis API を使用して、作成したばかりの認証者向けノートの詳細を取得します。API リクエストに適切な認証を含めるようにしてください。
gcloud コマンドライン ツールを使用して、新しい Binary Authorization 認証者を作成します。認証者 ID は vulnerability-attestor にし、先ほど作成した認証者向けノートに関連付ける必要があります。
gcloud コマンドライン ツールを使用して、既存のすべての Binary Authorization 認証者を一覧表示します。作成した認証者がリストに含まれていることを確認します。
作成した認証者向けノートに対して、Binary Authorization サービス アカウントに roles/containeranalysis.notes.occurrences.viewer ロールを付与する IAM ポリシーを構築します。次に、Container Analysis API を使用して、この IAM ポリシーをノートに設定します。
このセクションでは、証明書に署名するための KMS 鍵ペアを生成します。
鍵管理を設定する:
global ロケーションに binauthz-keys という名前の KMS キーリングを作成します。lab-key という名前を付け、バージョン 1 になっていることを確認します。鍵を認証者にリンクさせる:
gcloud コマンドライン ツールを使用して、lab-key(バージョン 1)を Binary Authorization の認証者に関連付けます。キーを参照するときは、必ず global ロケーションと binauthz-keys キーリングを指定してください。ポリシーの変更: デフォルト ルールで証明書を要求するように Binary Authorization ポリシーを調整します。
認証者を組み込む: ポリシー構成の一部として、以前に作成した vulnerability-attestor を含めます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2 の基本的なパイプラインを基に、重要なセキュリティ機能を組み込んでパイプラインを強化します。これには、コンテナ イメージの潜在的な弱点を特定する脆弱性スキャンや、イメージの完全性を確保するイメージ署名が含まれます。このタスクでは、脆弱性スキャンとイメージ署名を CI / CD パイプラインに組み込み、パイプラインをより堅牢かつ安全にします。
プロジェクトで Cloud Build サービス アカウントに次の IAM ロールを付与します。
roles/binaryauthorization.attestorsViewerroles/cloudkms.signerVerifierroles/containeranalysis.notes.attacherroles/iam.serviceAccountUserroles/ondemandscanning.adminさらに、Compute Engine のデフォルトのサービス アカウントに cloudkms.signerVerifier ロールがあることを確認します。
このセクションでは、脆弱性スキャン、重大度チェック、イメージ署名、Cloud Run へのデプロイを含めて Cloud Build パイプラインを完成させます。以下のコードは、パイプラインの実装の一部です。このパイプラインを完成させるには、欠けている部分を埋める必要があります。
artifact-scanning-repo リポジトリ内のイメージにしてください。CRITICAL な脆弱性が検出された場合は、パイプラインを失敗させる必要があります。vulnerability-attestor、鍵のバージョンは lab-key バージョン 1 のフルパスです。artifact-prod-repo リポジトリを使用する必要があります。artifact-prod-repo リポジトリの本番環境用イメージを使用します。cloudbuild.yaml ファイルの最初のいくつかの TODO はすでに記入済みです。残りの TODO についても、残っているプレースホルダを正しい値に置き換えてください。ビルドをトリガーする
ビルドの失敗を確認する:
CRITICAL の脆弱性が存在するため、ビルドが失敗することを確認します。CRITICAL な脆弱性があるため失敗するはずです。この問題については次のタスクで対処します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
実際のシナリオでは、脆弱性スキャンによって、対処が必要な問題が明らかになることがよくあります。このタスクはそのようなシナリオを再現しており、重大な脆弱性が原因でビルドが失敗します。このタスクでは、ビルドの失敗を分析し、脆弱性を特定して、アプリケーションの依存関係を更新することで脆弱性を修正します。次に、Cloud Build パイプラインを再トリガーして、重大な脆弱性がない状態でビルドが正常に完了することを確認します。
Dockerfile を更新する: python:3.8-alpine ベースイメージを使用するように Dockerfile を変更します。Flask、Gunicorn、Werkzeug の依存関係を次のバージョンに更新します。
3.0.3
23.0.0
3.0.4
ビルドを再トリガーする: 更新した Cloud Build 構成を送信して、新しいビルドを開始します。
ビルドの成功を確認する: Cloud Build の [履歴] ページで、ビルドが CRITICAL な脆弱性の問題なく正常に完了したことを確認します。
テスト目的で次のコマンドを実行し、Cloud Run サービスへの未認証アクセスを許可し、デプロイを検証できるようにします。<your-region> は、サービスをデプロイしたリージョンに置き換えます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これで完了です。このラボでは、ウェブ アプリケーションをビルド、スキャン、署名してクラウドにデプロイする安全な CI / CD パイプラインを実装しました。この実践経験を通じて、クラウド上で安全なアプリケーションを構築してデプロイして、セキュリティのベスト プラクティスを開発ワークフローに組み込み、ソフトウェア デリバリー プロセスの完全性を確保するために不可欠なスキルを身につけました。
このラボで取り上げたトピックの詳細については、次のリソースをご確認ください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 12 月 10 日
ラボの最終テスト日: 2024 年 9 月 4 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください