Create a Cloud Storage bucket.

進行状況を確認

/ 25

Create a Keyring and Crypto key.

進行状況を確認

/ 25

Encrypt Your Data with the Cloud KMS key and upload it on the storage bucket.

進行状況を確認

/ 25

Encrypt multiple files using KMS API and upload to cloud storage.

進行状況を確認

/ 25

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP079

Google Cloud セルフペース ラボ

概要

このラボでは、Google Cloud Security API と Privacy API の高度な機能について学習します。まず、安全な Cloud Storage バケットを設定し、Cloud Key Management Service を使用して暗号鍵を管理し、データを保護します。さらに、Cloud Storage 監査ログを調べて、アクセスと変更をモニタリングします。このラボでは、要約された財務データを処理し、Cloud Storage にアップロードする前に暗号化して機密性を確保します。

学習内容

このラボでは、次のタスクの実行方法について学びます。

  • 安全な Cloud Storage バケットを設定する。
  • 鍵管理サービスを使用して鍵と暗号化データを管理する。
  • Cloud Storage 監査ログを表示する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. Cloud Storage バケットを作成する

このラボのデータを保存するために、独自の Cloud Storage バケットを作成する必要があります。

  1. Cloud Storage バケットに、-kms_lab などの名前を指定します。バケットの命名方法について詳しくは、Cloud Storage バケットの命名ガイドラインをご覧ください。Cloud Shell で次のコマンドを実行して、バケット名に変数を設定します。
BUCKET_NAME="{{{ project_0.project_id }}}-kms_lab"
  1. 次のコマンドを実行してバケットを作成します。
gsutil mb gs://${BUCKET_NAME}

このコマンドを実行することで、gsutil コマンドライン クライアントが正しく設定されていること、認証が機能していること、操作しているクラウド プロジェクトへの書き込みアクセス権があることも確認できます。

  1. バケットが作成されたら、次のステップに進んで Enron Corpus をダウンロードします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

Cloud Storage バケットを作成する

タスク 2. データを確認する

このラボで使用する財務データセットは、架空の複数の財務ドキュメントです。このデータは Cloud Storage バケット gs://${GOOGLE_CLOUD_PROJECT}-kms-lab-data/ にコピーされています。

  1. 次のコマンドを実行してソースファイルの 1 つをローカルにダウンロードすると、その内容を確認できます。
gsutil cp gs://${GOOGLE_CLOUD_PROJECT}-kms-lab-data/finance-dept/inbox/1.txt .
  1. ダウンロードしたファイルの末尾を tail で表示して、メールのテキストが格納されていることを確認します。
tail 1.txt

次の出力が表示されます。

Content: This is a sample financial document for encryption (File 1).

平文メールファイルの内容が表示されます。

タスク 3. Cloud KMS を有効にする

Cloud KMS は、Google Cloud の暗号鍵管理サービスです。KMS を使用するには、前もってプロジェクトで有効にしておく必要があります。プロビジョニング済みのこのラボでは、すでに KMS が有効になっていますが、これは gcloud CLI コマンドの 1 つを使用して確認できます。

  • Cloud Shell セッションで次のコマンドを実行します。
gcloud services enable cloudkms.googleapis.com 注: Cloud コンソール の UI を使用して KMS やその他のサービスをプロジェクトで有効にすることもできます。

出力は特にありません。これで、Cloud KMS がプロジェクトで有効になりました。

タスク 4. KeyRing と CryptoKey を作成する

データを暗号化するには、KeyRing と CryptoKey を作成する必要があります。KeyRing は鍵をグループ化する際に役立ちます。鍵は環境別(テストステージング本番など)、またはその他の概念グループ別にグループ化できます。このラボでの KeyRing の名前は labkey、CryptoKey の名前は qwiklab です。

  1. Cloud Shell で次のコマンドを実行して、環境変数を設定します。
KEYRING_NAME=labkey CRYPTOKEY_NAME=qwiklab
  1. gcloud コマンドを実行して KeyRing を作成します。このラボではグローバル ロケーションを使用しますが、特定のリージョンに設定することもできます。
gcloud kms keyrings create $KEYRING_NAME --location global
  1. 次に、新しい KeyRing を使用して qwiklab という名前の CryptoKey を作成します。
gcloud kms keys create $CRYPTOKEY_NAME --location global \ --keyring $KEYRING_NAME \ --purpose encryption 注: Cloud KMS では CryptoKey も KeyRing も削除できません。

出力は特にありません。これで、KeyRing と CryptoKey が作成されました。

  1. コンソールで、ナビゲーション メニュー > [セキュリティ] > [Key Management] に移動して、Key Management を開きます。

鍵管理ウェブ UI では、CryptoKey と KeyRing を表示および管理できます。後で権限を管理するときにこの UI を使用します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

KeyRing と CryptoKey を作成する

タスク 5. データを暗号化する

次に、データを暗号化してみましょう。

  1. 上記で表示したメールの内容を、次のコマンドを実行して base64 エンコードします。
PLAINTEXT=$(cat 1.txt | base64 -w0) メモ: Base-64 エンコードを行うと、バイナリデータをプレーン テキストとして API に渡すことができます。このコマンドの対象は、画像、動画、または他の任意の種類のバイナリデータです。

暗号化エンドポイントを使用すると、暗号化対象の base64 エンコードされたテキストを、指定した鍵に渡すことができます。

  1. 以下のコマンドを実行します。
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type: application/json" 注: 同じテキストと鍵を使用しても、encrypt アクションのたびに異なる結果が返されます。

レスポンスは、属性 ciphertext の暗号化されたテキストが含まれた JSON ペイロードになります。

これで データが暗号化されたので、データをファイルに保存し、Cloud Storage バケットにアップロードできます。

  1. JSON レスポンスから暗号化テキストを取得してファイルに保存するには、コマンドライン ユーティリティ jq を使用します。前述の呼び出しのレスポンスを jq にパイプで渡すと、それを解析して ciphertext プロパティを取り出し、ファイル 1.encrypted に保存できます。以下のコマンドを実行します。
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type:application/json" \ | jq .ciphertext -r > 1.encrypted
  1. 暗号化データが復号可能かどうかは、decrypt エンドポイントを呼び出して、復号されたテキストが元のメールと一致するかどうかで確認できます。暗号化データには、その暗号化に使用された CryptoKey バージョンに関する情報が含まれているため、復号エンドポイントに特定のバージョンが渡されることはありません。以下のコマンドを実行します。
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:decrypt" \ -d "{\"ciphertext\":\"$(cat 1.encrypted)\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type:application/json" \ | jq .plaintext -r | base64 -d 注: 通常、復号はアプリケーション層で行われます。複数のプログラミング言語でのデータの暗号化と復号のチュートリアルについては、Cloud KMS のクイックスタートをご確認ください。
  1. これで、テキストが正常に暗号化されたことを確認できたので、暗号化されたファイルを Cloud Storage バケットにアップロードします。
gsutil cp 1.encrypted gs://${BUCKET_NAME}

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

Cloud KMS 鍵でデータを暗号化して、ストレージ バケットにアップロードする

タスク 6. IAM 権限を構成する

KMS には注目すべき主要な権限が 2 つあります。一方の権限ではユーザーまたはサービス アカウントで KMS リソースを管理でき、もう一方ではユーザーまたはサービス アカウントで鍵を使用してデータの暗号化と復号が可能です。

鍵を管理する権限は cloudkms.admin で、この権限を持つすべてのユーザーが KeyRing を作成し、CryptoKey を作成、変更、無効化、破壊できます。暗号化および復号する権限は cloudkms.cryptoKeyEncrypterDecrypter で、暗号化および復号 API エンドポイントを呼び出すために使用されます。

この演習では、現在の承認済みユーザーを使用して IAM 権限を割り当てます。

  1. 現在の承認済みユーザーを取得するには、次のコマンドを実行します。
USER_EMAIL=$(gcloud auth list --limit=1 2>/dev/null | grep '@' | awk '{print $2}')
  1. 次に、そのユーザーに KMS リソースの管理権限を割り当てます。次の gcloud コマンドを実行し、作成した KeyRing を管理する IAM 権限を割り当ててください。
gcloud kms keyrings add-iam-policy-binding $KEYRING_NAME \ --location global \ --member user:$USER_EMAIL \ --role roles/cloudkms.admin

CryptoKey は KeyRing に属し、KeyRing はプロジェクトに属するため、その階層の上位レベルで特定のロールまたは権限を持つユーザーは、子リソースに対して同じ権限を継承します。たとえば、あるプロジェクトに対してオーナーロールを持つユーザーは、そのプロジェクトのすべての KeyRing および CryptoKey に対してもオーナーになります。同様に、あるユーザーに KeyRing の cloudkms.admin ロールが付与されている場合は、その KeyRing の CryptoKey に関連する権限も付与されます。

cloudkms.cryptoKeyEncrypterDecrypter 権限を持たない承認済みユーザーは、データを暗号化または復号するための鍵を使用できません。

  1. 次の gcloud コマンドを実行して、作成した KeyRing に属するすべての CryptoKey でデータを暗号化および復号する IAM 権限を割り当ててください。
gcloud kms keyrings add-iam-policy-binding $KEYRING_NAME \ --location global \ --member user:$USER_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter

これで、割り当てられた権限が Key Management の [暗号鍵] に表示されます。

  1. キーリングの名前(labkey)のチェックボックスにチェックを入れ、右側の情報パネルで [プリンシパルの追加] をクリックします。

メニューが表示され、今追加したキーリングのアカウントと権限を確認できます。

タスク 7. コマンドラインでデータのバックアップを作成する

単一のファイルを暗号化する方法を理解し、そのための権限が付与されると、ディレクトリ内のすべてのファイルのバックアップを作成するスクリプトを実行できるようになります。この例では、finance-dept のすべてのファイルをコピーして暗号化し、Cloud Storage バケットにアップロードします。

  1. 最初に、finance-dept のすべてのファイルを現在の作業ディレクトリにコピーします。
gsutil -m cp -r gs://${GOOGLE_CLOUD_PROJECT}-kms-lab-data/finance-dept .
  1. 今度は、以下をコピーして Cloud Shell に貼り付け、finance-dept ディレクトリ内のすべてのファイルのバックアップを Cloud Storage バケットに作成して暗号化します。
MYDIR=finance-dept FILES=$(find $MYDIR -type f -not -name "*.encrypted") for file in $FILES; do PLAINTEXT=$(cat $file | base64 -w0) curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type:application/json" \ | jq .ciphertext -r > $file.encrypted done gsutil -m cp finance-dept/inbox/*.encrypted gs://${BUCKET_NAME}/finance-dept/inbox

このスクリプトは指定されたディレクトリ内のすべてのファイルに対してループ実行され、KMS API を使用してファイルを暗号化し、それを Cloud Storage にアップロードします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

KMS API を使用して複数のファイルを暗号化し、Cloud Storage にアップロードする

スクリプトの完了後、コンソールの左側のメニューで [Storage] をクリックすると、暗号化されたファイルが表示されます。

  1. ファイルを探すには、ナビゲーション メニューで [Cloud Storage] > [バケット] > [kms_lab_bucket] > [finance-dept] > [受信トレイ] に移動します。次のように表示されます。

バケットのコンテンツ

注: Cloud Storage では、サーバー側の暗号化がサポートされています。サーバー側の暗号化では、データに対する鍵のローテーションがサポートされているため、Cloud Storage でデータを暗号化する方法としておすすめです。上記の例はデモを目的とするものです。

タスク 8. Cloud 監査ログを表示する

Google Cloud Audit Logging は、管理アクティビティとデータアクセスという 2 つのログストリームで構成されています。これらは Google Cloud サービスによって生成され、Google Cloud プロジェクト内で、誰が、何を、どこで、いつ行ったかを調べるのに役立ちます。

  • KMS 内のリソースに対するアクティビティを表示するには、ナビゲーション メニューで [Cloud の概要] > [アクティビティ] タブに移動します。クラウド アクティビティの UI で、[View Log Explorer] をクリックし、[Cloud KMS KeyRing] を Resource Type として選択します。KeyRing の作成とすべての変更が表示されます。

これで、KMS と Cloud Storage を使用して、データを暗号化し、アップロードしました。

学習した内容

  • IAM を使用して KMS 権限を管理する。
  • KMS を使用してデータを暗号化する。
  • Cloud Storage を使用して暗号化データを保存する。
  • Cloud Audit Logs を使用して、CryptoKey および KeyRing に対するすべてのアクティビティを表示する。

タスク 9. 理解度テスト

次の理解度チェックに挑戦して Cloud KMS に関する知識をチェックしましょう。

お疲れさまでした

このラボでは、Cloud Storage バケットを使用して安全な環境を作成し、暗号鍵を管理することで、Google Cloud Key Management Service の機能を学習しました。財務データを暗号化して保存前に機密性を確保し、Cloud Audit Logs を使用して鍵の使用状況を把握することで、クラウド内の機密情報を保護するための包括的なワークフローを実証しました。

次のステップと詳細情報

マニュアルの最終更新日: 2026 年 5 月 20 日

ラボの最終テスト日: 2026 年 1 月 8 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。