ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Cloud Logging で VPC Flow Logs を構成して使用する

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

概要

このラボでは VPC Flow Logs について確認します。VPC Flow Logs は、VM インスタンスで送受信されるネットワーク フローを記録します。これらのログは、ネットワーク モニタリング、フォレンジック、リアルタイム セキュリティ分析のほか、費用の最適化にも使用できます。

ラボでは VPC フローロギングを有効にし、Cloud Logging を使用してログを表示します。次に、ネットワーク モニタリング、フォレンジック、リアルタイム セキュリティ分析を行い、最後に VPC フローロギングを無効にします。

目標

このラボでは、次の方法について学びます。

  • サブネットの VPC フローロギングを有効にする
  • Cloud Logging でログにアクセスする
  • 特定のサブネット、VM、ポート、プロトコルでログをフィルタする
  • ネットワーク モニタリング、フォレンジック、リアルタイム セキュリティ分析を行う
  • VPC フローロギングを無効にする

設定と要件

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. シークレット ウィンドウを使用して Google Skills にログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。 一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud コンソールにログインする際に使用します。

  5. [Google コンソールを開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。 他の認証情報を使用すると、エラーや料金が発生します。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

Google Cloud Shell の有効化

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

Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

    ハイライト表示された Cloud Shell アイコン

  2. [続行] をクリックします。

環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。

Cloud Shell ターミナルでハイライト表示されたプロジェクト ID

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

  • 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list

出力:

Credentialed accounts: - @.com (active)

出力例:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project =

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: gcloud ドキュメントの全文については、 gcloud CLI の概要ガイド をご覧ください。

タスク 1. VPC フローロギングを有効にする

このタスクでは、2 つのサブネットでフローロギングを有効にします。ユーザー定義のカスタム ネットワークでフローロギングを有効にする方法もまったく同じです。サブネットの作成と同時にフローロギングを有効にすることもできます。

Cloud Shell で gcloud を使用して 2 つのサブネットで VPC フローロギングを有効にする

  1. Cloud Shell で次のコマンドを実行して、2 つのサブネットでフローロギングを有効にします。
gcloud compute networks subnets update default \ --region {{{project_0.default_region |Region1}}} --enable-flow-logs \ --logging-metadata=include-all gcloud compute networks subnets update default \ --region {{{project_0.default_region_2 |Region2}}} --enable-flow-logs \ --logging-metadata=include-all

VPC フローロギングを有効にしたのは のサブネットです。その他のサブネットのフローロギングは有効になっていません。

  1. 次のコマンドを実行して、3 つのインスタンスをそれぞれ異なるサブネットに作成します(この後のテストで使用します)。
gcloud compute instances create default-us-vm \ --machine-type e2-micro \ --zone={{{project_0.default_zone |Zone1}}} --network=default gcloud compute instances create default-eu-vm \ --machine-type e2-micro \ --zone={{{project_0.default_zone_2 |Zone2}}} --network=default gcloud compute instances create default-ap-vm \ --machine-type e2-micro \ --zone={{{project_0.default_zone_3 |Zone3}}} --network=default 注: ZONE_RESOURCE_POOL_EXHAUSTED エラーが発生した場合、gcloud コマンドでゾーンを更新し、再度実行してみてください。たとえば、us-central1-a が失敗する場合は、代わりに us-central1-b をお試しください。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 サブネットで VPC フローロギングを有効にしてインスタンスを作成する

タスク 2. テスト用のネットワーク トラフィックを生成する

このタスクでは、インスタンス間の接続テスト用にネットワーク トラフィックを作成します。

  1. Google Cloud コンソールのナビゲーション メニュー[Compute Engine] > [VM インスタンス] をクリックして、VM インスタンスのリストを表示します。
  2. 各インスタンスの内部 IP アドレスと外部 IP アドレスを記録します。これらの IP アドレスは後ほど必要になります。
インスタンス 内部 IP 外部 IP
default-ap-vm ***** *****
default-eu-vm ***** *****
default-us-vm ***** *****
  1. default-us-vm インスタンスの行で、[SSH] をクリックします。
  2. SSH で接続したら、次のコマンドを実行します。
sudo apt-get install -y host host www.wikipedia.org 8.8.8.8 ping -c 5 default-eu-vm.{{{project_0.default_zone_2 |Zone2}}} ping -c 5 www.google.com curl http://www.google.com

これらのコマンドは以下のことを行います。

  • DNS 解決ユーティリティの host をインストールする
  • 8.8.8.8 の DNS サーバーを使用して www.wikipedia.org の DNS ルックアップを実行する
  • default-eu-vm インスタンスと www.google.com に対して ping を実行する
  • curl を使用して www.google.com への HTTP 接続を作成する

続いて、同じコマンドをもう一度実行します。ただし今度は、default-us-vm から default-eu-vm に ping を実行する代わりに、default-eu-vm から default-us-vm に ping を実行します。

  1. Cloud コンソールに戻り、default-eu-vm インスタンスの行で [SSH] をクリックします。
  2. SSH で接続したら、次のコマンドを実行します。
sudo apt-get install -y host host www.wikipedia.org 8.8.8.8 ping -c 5 default-us-vm.{{{project_0.default_zone |Zone1}}} ping -c 5 cloud.google.com curl http://www.google.com
  1. Cloud コンソールに戻り、default-ap-vm インスタンスの行で [SSH] をクリックします。

  2. SSH で接続したら、次のコマンドを実行します。

sudo apt-get install -y host host www.bitnami.com 8.8.8.8 curl http://www.bitnami.com

タスク 3. Cloud Logging でフローログを表示する

このタスクでは、すべてのプロジェクトの VPC Flow Logs を Cloud Logging で表示します。

すべてのフローログにアクセスする

  1. Cloud コンソールで、ナビゲーション メニュー > [すべてのプロダクトを表示] をクリックします。[オブザーバビリティ] セクションで、[ロギング] > [ログ エクスプローラ] をクリックします。

  2. [クエリ] パネルの [すべてのリソース] で、[サブネットワーク] をクリックし、[適用] をクリックします。

  3. [すべてのログ名] で、[compute.googleapis.com/vpc_flows] をクリックし、[適用] をクリックします。

注: 上記でログ名が表示されない場合は、compute.googleapis.com%2Fvpc_flows を貼り付けてみてください。
  1. [クエリを実行] をクリックします。

  2. VPC Flow Logs のエントリが [クエリ結果] パネルに表示されます。compute.googleapis.com/vpc_flows が表示されない場合は、このログタイプが表示されるまで数分待ちます。

注: これにより、プロジェクトの VPC Flow Logs がすべて表示されます。ただし、フローログを有効にしてあるサブネットは 2 つだけです。
  1. いずれかのログエントリを展開します。

  2. そのログエントリ内で jsonPayloadconnection の順に展開します。

注: jsonPayload フィールドのないログエントリもあります。他のログエントリを開いて、このフィールドのあるログエントリを見つけてください。
  1. 接続に関する情報を調べます。送信元と宛先の両方のポートと IP アドレスが記録されていることに注目してください。

  2. jsonPayload 内に src_instance があるログを見つけます。src_instance の情報を調べてください。

src_instance は、作成したいずれかのインスタンスか、外部 IP アドレスになります。外部 IP アドレスの場合は、VPC ネットワークの外部からのトラフィックがあったことになります。

VM インスタンスのフィールドを含む送信元のログ

  1. そのログエントリのその他の情報や、他のログエントリも調べてみてください。

タスク 4. 高度なフィルタリングを実行する

このタスクでは、クエリビルダーを使用して高度なフィルタリングを実行します。また、特定の送信元 IP アドレスや宛先 IP アドレス、特定のポートとプロトコルのアクセスログを調べます。

高度なログフィルタは、プロジェクト内のすべてのログエントリのサブセットを指定するブール式です。たとえば次のようなことが可能です。

  • 特定の VM のログエントリを選択する
  • 特定の送信元ポートまたは宛先ポートのログエントリを選択する
  • 特定の送信元 IP アドレスまたは宛先 IP アドレスのログエントリを選択する
  • 特定のプロトコルのログエントリを選択する
  1. [クエリ] ボックスの内部をクリックします。

  2. 現在のクエリを削除して、次の内容を貼り付けます。<INSERT_PROJECT_ID> は Google Skills プロジェクト ID に置き換えます。

resource.type="gce_subnetwork" log_name="projects/<INSERT_PROJECT_ID>/logs/compute.googleapis.com%2Fvpc_flows"
  1. [クエリを実行] をクリックします。
注: このラボの以降の作業では、フィルタの先頭に常にこの 2 つの行が含まれている必要があります。行を追加する際にはこの 2 つの行の後に追加してください。この 2 つの行を誤って削除または変更してしまった場合は、上記からコピーして貼り付けてください(プロジェクト ID を変更するのを忘れないようにしてください)。

特定の送信元 IP アドレスまたは宛先 IP アドレスのログにアクセスする

  1. フィルタの末尾に以下の行を追加します。Internal_IP_Of_default_us_vmdefault_us_vm インスタンスの内部 IP アドレス(先ほど記録しました)に置き換えてください。
jsonPayload.connection.src_ip="Internal_IP_Of_default_us_vm"
  1. [クエリを実行] をクリックします。

送信元 IP アドレスが default-us-vm インスタンスの内部 IP アドレスであるすべてのログエントリが表示されます。送信元インスタンスが default-us-vm であるエントリを表示する先ほどのフィルタと同じエントリが表示されるはずです。

特定のポートとプロトコルのログにアクセスする

  1. フィルタの最後の行(src_ip を照合する行)を削除して以下の行に置き換えます。これにより、宛先ポートが 22(SSH)のエントリのみが表示されます。
jsonPayload.connection.dest_port=22
  1. [クエリを実行] をクリックして結果を確認します。SSH で VM に 3 回接続したため、3 つのログが表示されます。

  2. フィルタの最後の行を次のように変更します。これにより、宛先ポートが 80(HTTP)のトラフィックのみが表示されます。

jsonPayload.connection.dest_port=80
  1. [クエリを実行] をクリックして結果を確認します。

  2. 複数のポートを照合するには、ポートフィルタの末尾に OR を追加して最後の行を置き換えます。

jsonPayload.connection.dest_port=(80 OR 22)
  1. フィルタの最後の行を次のように変更します。これにより、UDP プロトコル(プロトコル番号 17)を使用しているエントリのみが表示されます。
jsonPayload.connection.protocol=17
  1. [クエリを実行] をクリックして結果を確認します。

いくつかのログエントリが表示される場合があります。これらは、host ユーティリティを使用して行った DNS 呼び出しに対応します。

  1. いずれかのログエントリを調べて、DNS が使用する宛先ポート番号を特定します。
注: DNS はポート 53 を使用します。
  1. フィルタを次のように変更します。これにより、プロトコルが 17 で宛先ポートが 53 のすべてのエントリが表示されます。
jsonPayload.connection.protocol=17 jsonPayload.connection.dest_port=53
  1. [クエリを実行] をクリックして結果を確認します。
注: 現在フローログでモニタリングされるプロトコルは UDP(プロトコル番号 17)と TCP(プロトコル番号 6)だけです。先ほど ping を使用してインスタンスで ICMP トラフィックを生成しましたが、ICMP(プロトコル番号 1)のトラフィックを表示するフィルタを作成してもエントリは表示されません。興味のある方は試してみてください。

タスク 5. ネットワーク モニタリングを行ってリアルタイム セキュリティ分析をサポートする

このタスクでは、フィルタを作成して、VPC にアクセスしようとしている RDP トラフィックがないか調べます。

想定外のポートとプロトコルを検索する

ここでは VPC ネットワーク内で Linux インスタンスを実行しているため、RDP トラフィックは存在しないはずです。しかし、デフォルト設定に含まれているファイアウォール ルールで任意の送信元からの RDP トラフィックが許可されているため、RDP プロトコルを使用してインターネットからサーバーに接続される可能性があります。

  1. 宛先ポートが 3389(RDP)のトラフィックをすべて表示するようにフローログのフィルタを変更します。既存のフィルタの最初の 2 行はそのままにして、それ以外の行を次の行に置き換え、[クエリを実行] をクリックします。
jsonPayload.connection.dest_port=3389
  1. RDP トラフィックが見つかった場合は、そのトラフィックの送信元を調べます。RDP トラフィックがまったく見つからない場合もありますが、少なくともいくつか見つかるのが一般的です。見つからなかった場合は、しばらくしてからもう一度試してみてください。

RDP トラフィックが見つかることはよくあります。これは、インターネット上に不要なトラフィックがいかに蔓延しているか、VPC ネットワークやファイアウォール ルールを正しく設定することがいかに重要かを示しています。

このラボでは、デフォルトの VPC をデフォルトのファイアウォール ルールのまま使用しています。これにより、これらのルールを調整して不要なトラフィックを除外しないとどうなるのかがわかります。

注: 本番環境システムでは、デフォルトの VPC を削除して、詳細なファイアウォール ルールを設定したカスタム VPC を使用することをおすすめします。 注: 不要なトラフィックの制限などの問題に対しては、Google Cloud Armor を使用することもできます。 Google Cloud Armor は、インフラストラクチャやアプリケーションに対する分散型サービス拒否攻撃(DDoS)を、Google のグローバルなインフラストラクチャとセキュリティ システムを使用して広範囲に防御するサービスです。

エクスポートを作成してリアルタイム セキュリティ分析をサポートする

フローログは、Cloud Logging のエクスポート先としてサポートされている任意の宛先にエクスポートできます(Pub/Sub、BigQuery など)。エクスポートを作成すると、一致するログが、選択した宛先にエクスポートされます。エクスポートされるのはそれ以降のログのみで、既存のログはエクスポートされません。

ログを BigQuery にエクスポートすると、BigQuery の分析ツールを使用して分析できます。ログを Pub/Sub にエクスポートすると、他のアプリケーション、他のリポジトリ、またはサードパーティにストリーミングできます。

Cloud エクスポートを作成すると、そのエクスポートに現在のフィルタが適用されます。したがって、エクスポートされるのは、そのフィルタに一致するイベントだけです。たとえば、宛先ポート 3389 へのトラフィックのみを表示するフィルタを使用している場合は、そのフィルタに一致するトラフィックのみがエクスポートされます。

これにより、エクスポートされるデータの量を減らしたり(費用の節約になります)、データの内容に応じてエクスポートを使い分けたりできます。このラボではトラフィックの量が限られているため、フィルタをクリアしてすべてのログをエクスポートします。

  1. クエリエディタのテキストをすべて削除して、[クエリを実行] をクリックします。
  2. [操作] > [シンクの作成] をクリックします。
  3. [シンク名] に「FlowLogBQExport」と入力して [次へ] をクリックします。
  4. [シンクサービスの選択] で [BigQuery データセット] を選択します。
  5. [BigQuery データセットを選択] で [新しい BigQuery データセットを作成する] を選択します。
  6. [データセット ID] に「flowlogs_dataset」と入力し、[データセットを作成] をクリックします。
  7. [シンクを作成] をクリックします。[ログルーターのシンク] ページが表示されます。

作成したシンク(FlowLogBQExport)が表示されているはずです。シンクが表示されない場合は、[ログルーター] をクリックします。

  1. そのシンクの右側にあるその他の操作メニュー(more_menu.png)をクリックし、[シンクの詳細を表示する] を選択します。
  2. [キャンセル] をクリックします。
注: 以降のログはすべて BigQuery にエクスポートされるため、BigQuery ツールを使用してフローログ データを分析できます。後ほど BigQuery で簡単なクエリを実行します。 注: Pub/Sub や Cloud Storage にログエントリをエクスポートすることもできます。Pub/Sub にエクスポートする方法は、データベースに格納する前に ETL プロセスを適用する場合に便利です(Operations > Pub/Sub > Dataflow > BigQuery / Cloud Bigtable)。 Cloud Storage にエクスポートする方法では、約 1 時間ごとにエントリがまとめて Cloud Storage オブジェクト内に書き込まれます。

では、Pub/Sub へのエクスポートを作成してみましょう。

  1. [ログルーター] ページで、[シンクの作成] をクリックします。
  2. [シンク名] に「FlowLogPubSubExport」と入力して [次へ] をクリックします。
  3. [シンクサービスの選択] で [Cloud Pub/Sub トピック] を選択します。
  4. [Cloud Pub/Sub トピックを選択してください] で [トピックを作成する] を選択します。
  5. [トピック ID] に「FlowLogsTopic」と入力し、[作成] をクリックします。
  6. [シンクを作成] をクリックします。

[ログルーターのシンク] ページが表示されます。作成したシンク(FlowLogsTopic)が表示されているはずです。シンクが表示されない場合は、[ログルーター] をクリックします。

  1. そのシンクの右側にある [その他の操作] メニューをクリックし、[シンクの詳細を表示する] を選択します。

そのエクスポートの作成時に存在していたフィルタが表示されます。

  1. [キャンセル] をクリックします。

この新しい Pub/Sub トピックをサブスクライブすると、新しいログが届いたときに通知を受け取ることができます。これにより、ログをストリーミングして SIEM(セキュリティ情報およびイベント管理)ツールと統合できます。

SIEM ツールを使用すると、運用に関するリアルタイムの分析情報を得たり、強力な可視化機能を使用して監査レポートを作成したりできます。

タスク 6. BigQuery でフローログを分析する

このタスクでは、BigQuery でフローログを分析します。

注: BigQuery データセットにログをエクスポートすると、エクスポートされたログエントリを保持する日付別テーブルが Cloud Logging によって作成されます。ログエントリは、エントリのログ名に基づく名前が付けられたテーブルに格納されます。
  1. Cloud コンソールのナビゲーション メニューで [BigQuery] をクリックします。
  2. ナビゲーション パネルの [エクスプローラ] で、現在のプロジェクト名を展開して flowlogs_dataset データセットを表示します。
  3. このデータセットを展開して、エクスポートされたフローログを含むテーブルを表示します。
  4. compute_googleapis_com_vpc_flows_ で始まるテーブル名をクリックし、使用されているテーブルのスキーマと詳細を確認します。
注: そのテーブルがデータセットに表示されない場合、ナビゲーション メニューを開いて [Cloud の概要] またはその他のサービスをクリックします。次に、ナビゲーション メニューを開いて [BigQuery] を選択し、テーブルを再度検索してみてください(テーブルがデータセットに表示されるまでに 1~2 分かかる場合があります)。
  1. [クエリ] をクリックします。
  2. [新しいクエリ] ウィンドウに表示されているテキストを削除して、以下のクエリを貼り付けます。
#standardSQL SELECT jsonPayload.connection.dest_ip, resource FROM `flowlogs_dataset.compute_googleapis_com_vpc_flows*` WHERE jsonPayload.connection.dest_port = 22 LIMIT 1000
  1. [実行] をクリックします。

このクエリは、ポート 22 に接続するトラフィックに関する情報を返します。

数秒後に結果が表示されます。1 つまたは 2 つのエントリ(このラボで生成したアクティビティ)が表示されるはずです。BigQuery で表示されるのはエクスポートの作成以降のアクティビティのみです。

注: 結果が表示されない場合は、インスタンスへのトラフィックを生成してみてください。そのためには、ナビゲーション メニュー > [Compute Engine] に移動して、各インスタンスの [SSH] をクリックします。その後、もう一度クエリを試してみてください。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 エクスポートを作成して BigQuery でフローログを分析する

タスク 7. フローロギングを無効にする

このタスクでは、VPC フローロギングを無効にします。VPC フローロギングを無効にするには --no-enable-flow-logs オプションを使用します。

  1. Cloud Shell ターミナルで次のコマンドを実行して、サブネットの一つでフローロギングを無効にしてみてください。
gcloud compute networks subnets update default \ --region {{{project_0.default_region_2|Region2}}} --no-enable-flow-logs
  1. 無効になったことを確認するには、Cloud コンソールで VPC を表示します。ナビゲーション メニュー[VPC ネットワーク] > [VPC ネットワーク] をクリックします。プロンプトが表示されたら、[終了] をクリックします。

タスク 8. 確認

このラボでは、サブネットの VPC フローロギングを有効にし、Cloud Logging でログにアクセスしました。特定のサブネット、VM、ポート、プロトコルでログをフィルタしました。ネットワーク モニタリング、フォレンジック、リアルタイム セキュリティ分析も行いました。最後に、VPC フローロギングを無効にしました。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Skills から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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