チェックポイント
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
Cloud KMS の使い方
GSP079
概要
このラボでは、Google Cloud Security API と Privacy API の次のような高度な機能の使い方について学びます。
- 安全な Cloud Storage バケットの設定
- 鍵管理サービスを使用した鍵と暗号化データの管理
- Cloud Storage 監査ログの表示
Enron Corpus の要約データを使用して暗号化し、Cloud Storage に読み込みます。
学習内容
- データを暗号化する方法と、Cloud Key Management Service(KMS)を使用した暗号鍵の管理方法
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. Cloud Storage バケットを作成する
このラボのデータを保存するために、独自の Cloud Storage バケットを作成する必要があります。
-
-enron_corpus など、Cloud Storage バケットの名前を指定します。バケットの命名について詳しくは、Cloud Storage バケットの命名ガイドラインをご覧ください。Cloud Shell で次のコマンドを実行して、バケット名に変数を設定します。
- 次のコマンドを実行してバケットを作成します。
このコマンドを実行することで、gsutil
コマンドライン クライアントが正しく設定されていること、認証が機能していること、操作しているクラウド プロジェクトへの書き込みアクセス権があることも確認できます。
- バケットが作成されたら、次のステップに進んで Enron Corpus をダウンロードします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2. データを確認する
Enron Corpus は大規模なデータベースで、Enron Corporation の従業員 158 人によって作成された 60 万通を超えるメールが管理されています。このデータは Cloud Storage バケット gs://enron_emails/
にコピーされています。
- 次のコマンドを実行してソースファイルの 1 つをローカルにダウンロードすると、その内容を確認できます。
- ダウンロードしたファイルの末尾を
tail
で表示して、メールのテキストが格納されていることを確認します。
次の出力が表示されます。
平文メールファイルの内容が表示されます。平文メールファイルと画像ファイルの 2 種類のファイルを探します。ご興味があれば、同様のメカニズムを使用して他のファイルの内容も確認してみてください。
タスク 3. Cloud KMS を有効にする
Cloud KMS は、Google Cloud の暗号鍵管理サービスです。KMS を使用するには、前もってプロジェクトで有効にしておく必要があります。プロビジョニング済みのこのラボでは、すでに KMS が有効になっていますが、これは gcloud
CLI コマンドの 1 つを使用して確認できます。
- Cloud Shell セッションで次のコマンドを実行します。
出力は特にありません。これで、Cloud KMS がプロジェクトで有効になりました。
タスク 4. KeyRing と CryptoKey を作成する
データを暗号化するには、KeyRing と CryptoKey を作成する必要があります。KeyRing は鍵をグループ化する際に役立ちます。鍵は環境別(テスト、ステージング、本番など)、またはその他の概念グループ別にグループ化できます。このラボでの KeyRing の名前は test
、CryptoKey の名前は qwiklab
です。
- Cloud Shell で次のコマンドを実行して、環境変数を設定します。
-
gcloud
コマンドを実行して KeyRing を作成します。このラボではグローバル ロケーションを使用しますが、特定のリージョンに設定することもできます。
- 次に、新しい KeyRing を使用して
qwiklab
という名前の CryptoKey を作成します。
出力は特にありません。これで、KeyRing と CryptoKey が作成されました。
- コンソールで、ナビゲーション メニュー > [セキュリティ] > [Key Management] に移動して、Key Management を開きます。
鍵管理ウェブ UI では、CryptoKey と KeyRing を表示および管理できます。後で権限を管理するときにこの UI を使用します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 5. データを暗号化する
次に、データを暗号化してみましょう。
- 上記で表示したメールの内容を、次のコマンドを実行して
base64
エンコードします。
暗号化エンドポイントを使用すると、暗号化対象の base64 エンコードされたテキストを、指定した鍵に渡すことができます。
- 以下のコマンドを実行します。
encrypt
アクションのたびに異なる結果が返されます。
レスポンスは、属性 ciphertext
の暗号化されたテキストが含まれた JSON ペイロードになります。
- これで、データが暗号化されたので、データをファイルに保存し、Cloud Storage バケットにアップロードできます。JSON レスポンスから暗号化テキストを取得してファイルに保存するには、コマンドライン ユーティリティ jq を使用します。前述の呼び出しのレスポンスを jq にパイプで渡すと、それを解析して
ciphertext
プロパティを取り出し、ファイル1.encrypted
に保存できます。以下のコマンドを実行します。
- 暗号化データが復号可能かどうかは、
decrypt
エンドポイントを呼び出して、復号されたテキストが元のメールと一致するかどうかで確認できます。暗号化データには、その暗号化に使用された CryptoKey バージョンに関する情報が含まれているため、復号エンドポイントに特定のバージョンが渡されることはありません。以下のコマンドを実行します。
- これで、テキストが正常に暗号化されたことを確認できたので、暗号化されたファイルを Cloud Storage バケットにアップロードします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 6. IAM 権限を構成する
KMS には注目すべき主要な権限が 2 つあります。一方の権限ではユーザーまたはサービス アカウントで KMS リソースを管理でき、もう一方ではユーザーまたはサービス アカウントで鍵を使用してデータの暗号化と復号が可能です。
鍵を管理する権限は cloudkms.admin
で、この権限を持つすべてのユーザーが KeyRing を作成し、CryptoKey を作成、変更、無効化、破壊できます。暗号化および復号する権限は cloudkms.cryptoKeyEncrypterDecrypter
で、暗号化および復号 API エンドポイントを呼び出すために使用されます。
この演習では、現在の承認済みユーザーを使用して IAM 権限を割り当てます。
- 現在の承認済みユーザーを取得するには、次のコマンドを実行します。
- 次に、そのユーザーに KMS リソースの管理権限を割り当てます。次の
gcloud
コマンドを実行し、作成した KeyRing を管理する IAM 権限を割り当ててください。
CryptoKey は KeyRing に属し、KeyRing はプロジェクトに属するため、その階層の上位レベルで特定のロールまたは権限を持つユーザーは、子リソースに対して同じ権限を継承します。たとえば、あるプロジェクトに対してオーナーロールを持つユーザーは、そのプロジェクトのすべての KeyRing および CryptoKey に対してもオーナーになります。同様に、あるユーザーに KeyRing の cloudkms.admin
ロールが付与されている場合は、その KeyRing の CryptoKey に関連する権限も付与されます。
cloudkms.cryptoKeyEncrypterDecrypter
権限を持たない承認済みユーザーは、データを暗号化または復号するための鍵を使用できません。
- 次の
gcloud
コマンドを実行して、作成した KeyRing に属するすべての CryptoKey でデータを暗号化および復号する IAM 権限を割り当ててください。
これで、割り当てられた権限が Key Management の [暗号鍵] に表示されます。
- KeyRing の名前(
test
)のボックスにチェックを入れ、右側の情報パネルで [プリンシパル] をクリックします。
メニューが表示され、今追加した KeyRing のアカウントと権限を確認できます。
タスク 7. コマンドラインでデータのバックアップを作成する
単一のファイルを暗号化する方法を理解し、そのための権限が付与されると、ディレクトリ内のすべてのファイルのバックアップを作成するスクリプトを実行できるようになります。この例では、allen-p のすべてのメールをコピーして暗号化し、Cloud Storage バケットにアップロードします。
- 最初に、allen-p のすべてのメールを現在の作業ディレクトリにコピーします。
- 今度は、以下をコピーして Cloud Shell に貼り付け、allen-p ディレクトリ内のすべてのファイルのバックアップを Cloud Storage バケットに作成して暗号化します。
このスクリプトは指定されたディレクトリ内のすべてのファイルに対してループ実行され、KMS API を使用してファイルを暗号化し、それを Cloud Storage にアップロードします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
スクリプトの完了後、コンソールの左側のメニューで [Storage] をクリックすると、暗号化されたファイルが表示されます。
- ファイルを探すには、ナビゲーション メニューで [Cloud Storage] > [バケット] > [使用中のバケット] > [allen-p] > [受信トレイ] に移動します。次のように表示されます。
タスク 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 Logging を使用した、CryptoKey および KeyRing に対するすべてのアクティビティの表示。
タスク 9. 理解度テスト
次の理解度チェックに挑戦して Cloud KMS に関する知識をチェックしましょう。
お疲れさまでした
データを暗号化する方法と、Cloud Key Management Service(KMS)を使用した暗号鍵の管理方法について学びました。
次のステップと詳細情報
- 暗号鍵のローテーションについて詳細を確認する。
- エンベロープ暗号化について確認する。
- データ暗号化オプションについて詳細を確認する。
マニュアルの最終更新日: 2024 年 4 月 15 日
ラボの最終テスト日: 2023 年 8 月 31 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。