arrow_back

VPC フローログ - ネットワーク トラフィックの分析

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

VPC フローログ - ネットワーク トラフィックの分析

Lab 1時間 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP212

Google Cloud セルフペース ラボ

概要

このラボでは、VPC フローログによって Apache ウェブサーバーとの間のトラフィックが記録されるようにネットワークを構成する方法を学びます。その後、ログを BigQuery にエクスポートして分析します。

VPC フローログには複数の用途があります。たとえば、アプリケーションのアクセス元を特定してネットワーク トラフィック費用を最適化したり、トラフィックをグローバルに分散する HTTP ロードバランサを作成したり、Cloud Armor による望ましくない IP アドレスの拒否などに VPC フローログを使用できます。

目標

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

  • VPC フローログを使用してカスタム ネットワークを構成する。
  • Apache ウェブサーバーを作成する。
  • ネットワーク トラフィックがログに記録されていることを確認する。
  • ネットワーク トラフィックを BigQuery にエクスポートしてログをさらに分析する。
  • VPC フローログの集約を設定する。

設定と要件

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

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

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

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

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

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

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

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

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

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

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

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

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

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

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

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

  2. 出力は次のようになります。

出力:

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

出力:

[core] project = <project_ID>

出力例:

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

タスク 1. VPC フローログを使用してカスタム ネットワークを構成する

カスタム ネットワークを作成する

デフォルトでは、VPC フローログはネットワークで無効になっています。そのため、カスタムモードのネットワークを新規に作成して VPC フローログを有効にする必要があります。

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン) > [VPC ネットワーク] > [VPC ネットワーク] に移動します。

    [VPC ネットワーク] オプションへのナビゲーション パス

  2. [VPC ネットワークを作成] をクリックします。

  3. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 vpc-net
    説明 必要に応じて説明を入力します(任意)。
  4. [サブネット作成モード] で [カスタム] をクリックします。

  5. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 vpc-subnet
    リージョン
    IPv4 範囲 10.1.3.0/24
    フローログ オン
  6. [完了]、[作成] の順にクリックします。

注: VPC フローログを有効にしてもパフォーマンスは低下しませんが、システムによっては多数のログが生成されて費用が増える可能性があります。 注: ネットワークが作成されるまで待ってから次のステップに進みます。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

カスタム ネットワークを作成する。 カスタム ネットワーク用のサブネットを リージョンで作成する。

ファイアウォール ルールを作成する

ネットワークで HTTP / SSH トラフィックを提供するには、ファイアウォール ルールを作成する必要があります。

  1. 左側のメニューで [ファイアウォール] をクリックします。

  2. [ファイアウォール ルールを作成] をクリックします。

  3. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 allow-http-ssh
    ネットワーク vpc-net
    ターゲット 指定されたターゲットタグ
    ターゲットタグ http-server
    ソースフィルタ IPv4 範囲
    送信元 IPv4 範囲 0.0.0.0/0
    プロトコルとポート [指定したプロトコルとポート] と [tcp] のチェックボックスをオンにして「80, 22」と入力
注: すべてのネットワークを指定するために、[送信元 IPv4 の範囲] には /0 を含めます。
  1. [作成] をクリックします。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

カスタム ネットワークでファイアウォール ルールを作成する。

タスク 2. Apache ウェブサーバーを作成する

ウェブサーバーを作成する

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン)> [Compute Engine] > [VM インスタンス] に移動します。

  2. [インスタンスを作成] をクリックします。

  3. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 web-server
    リージョン
    ゾーン
    マシンタイプ e2-micro(2 vCPU、1 GB メモリ)
    ファイアウォール HTTP トラフィックを許可する
  4. [ネットワーク、ディスク、セキュリティ、管理、単一テナンシー] をクリックします。

  5. [ネットワーキング] をクリックします。

  6. [ネットワーク インターフェース] で、[default] をクリックして編集します。

  7. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    ネットワーク vpc-net
    サブネットワーク vpc-subnet
  8. [完了]、[作成] の順にクリックします。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

カスタム ネットワーク(ゾーン: )でウェブサーバーを作成する。

Apache をインストールする

作成した VM インスタンスを Apache ウェブサーバーとして構成し、デフォルトのウェブページを上書きします。

  1. コンソールの [VM インスタンス] ページ(ナビゲーション メニューナビゲーション メニュー アイコン) > [Compute Engine] > [VM インスタンス])に戻ります。 web-server の [SSH] をクリックし、ターミナルを起動して接続します。
  2. web-server の SSH ターミナルで、パッケージ インデックスを更新します。
sudo apt-get update
  1. apache2 パッケージをインストールします。
sudo apt-get install apache2 -y
  1. 次のように入力してデフォルトを上書きし、新しいデフォルトのウェブページを作成します。
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
  1. SSH ターミナルを終了します。
exit

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

ウェブサーバーに Apache をインストールする。

タスク 3. ネットワーク トラフィックがログに記録されていることを確認する

ネットワーク トラフィックを生成する

  1. コンソールの [VM インスタンス] ページ(ナビゲーション メニューナビゲーション メニュー アイコン) > [Compute Engine] > [VM インスタンス])に戻ります。
  2. web-server を表示するため、[外部 IP] をクリックしてこのサーバーにアクセスします。
注: 構成した「Hello World!」ウェルカム ページが開きます。新しいタブを開き、http:// に続けて外部 IP アドレスを入力してもサーバーにアクセスできます。

自分の IP アドレスを調べる

使用しているパソコンの IP アドレスを調べます。下記のウェブサイトに表示させて簡単に調べることができます。

  1. whatismyip.host をクリックすると使用中の IP v4 アドレスが表示されます。
  2. IP アドレスをコピーします。ここからはこのアドレスを YOUR_IP_ADDRESS と呼びます。

VPC フローログにアクセスする

  1. コンソールで、ナビゲーション メニュー > [ロギング] > [ログ エクスプローラ] に移動します。

  2. [ログのフィールド] パネルの [リソースの種類] で [サブネットワーク] をクリックします。サブネットワーク ログのエントリが [クエリ結果] ペインに表示されます。

  3. [ログのフィールド] パネルの [ログ名] で [compute.googleapis.com/vpc_flows] をクリックします。

  4. 上部のクエリ検索ボックスに YOUR_IP_ADDRESS を入力します。[クエリを実行] をクリックします。

注: [compute.googleapis.com/vpc_flows] フィルタ オプションが表示されない場合やログがない場合は、数分待ってから更新しなければならない可能性があります。

[クエリを実行] ボタンがハイライト表示された [ログ エクスプローラ] ページ

  1. ログエントリの 1 つをクリックして展開します。
  2. エントリ内の矢印をクリックし、[jsonPayload] > [connection] を展開します。[Expand all] をクリックして [connection] を表示しなければならない場合もあります。

クエリ結果に表示されたすべての接続

注: [connection] には、宛先 IP アドレス / ポート番号、プロトコル、ソース IP アドレス / ポート番号が含まれています。トラフィックの方向に応じて、宛先は web-server か作業用のマシンになり、ソースはその逆になります。

プロトコルは 6(TCP トラフィック用の IANA プロトコル)になっているはずです。ポート番号の一方は 80web-server 上の HTTP ポート)であり、もう一方は 1024 より大きい数(マシン上の HTTP ポート)である必要があります。

次のタスクに進む前に、ログエントリ内の他のフィールドを自由に確認できます。

タスク 4. ネットワーク トラフィックを BigQuery にエクスポートしてログをさらに分析する

エクスポート シンクを作成する

  1. コンソールで、左側のパネルの [ログ エクスプローラ] をクリックします。

  2. [リソース] プルダウンから [サブネットワーク] を選択します。[適用] をクリックします。

  3. [ログ名] プルダウンで [vpc_flows] にチェックを入れて、[適用] をクリックします。[クエリを実行] をクリックします。

  4. [その他の操作] > [シンクの作成] をクリックします。

  5. [シンク名] に「vpc-flows」と入力して [次へ] をクリックします。

  6. [シンクサービスの選択] で [BigQuery データセット] を選択します。

  7. [シンクの宛先] で [新しい BigQuery データセットを作成する] を選択します。

  8. [データセット ID] に「bq_vpcflows」と入力し、[データセットを作成] をクリックします。

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

BigQuery 用のログ トラフィックを生成する

ネットワーク トラフィック ログが BigQuery にエクスポートされたら、web-server に複数回アクセスしてトラフィックをさらに生成します。Cloud Shell で curl コマンドを実行して、web-server の IP アドレスを複数回調べます。

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン) > [Compute Engine] > [VM インスタンス] に移動します。
  2. web-server インスタンスの 外部 IP アドレスを次のステップ用にメモします。今後はこれを EXTERNAL_IP と呼びます。
  3. Cloud Shell のコマンドラインで次のコマンドを実行し、EXTERNAL_IP を環境変数に入れます。<EXTERNAL_IP> の部分はメモしたアドレスで置き換えてください。
export MY_SERVER=<EXTERNAL_IP>
  1. Cloud Shell から web-server に 50 回アクセスします。
for ((i=1;i<=50;i++)); do curl $MY_SERVER; done

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

ネットワーク トラフィックを BigQuery にエクスポートする。

VPC フローログを BigQuery で可視化する

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン) > [BigQuery] に移動します。
  2. [完了] をクリックします。
  3. 左側にある bq_vpcflows データセットを展開してテーブルを表示します。まず [プロジェクト ID] を展開してこのデータセットを表示しなければならない場合もあります。
  4. テーブルの名前をクリックします。compute_googleapis で始まる名前が付いているはずです。
注: bq_vpcflows データセットが表示されないか展開されない場合は、しばらく待ってからページを更新してください。
  1. [詳細] タブをクリックします。

  2. [詳細] タブに表示される [テーブル ID] をコピーします。

  3. クエリエディタに次の内容を追加します。your_table_id の部分は TABLE_ID に置き換えますが、両側のアクセント記号(`)は残します。

#standardSQL SELECT jsonPayload.src_vpc.vpc_name, SUM(CAST(jsonPayload.bytes_sent AS INT64)) AS bytes, jsonPayload.src_vpc.subnetwork_name, jsonPayload.connection.src_ip, jsonPayload.connection.src_port, jsonPayload.connection.dest_ip, jsonPayload.connection.dest_port, jsonPayload.connection.protocol FROM `your_table_id` GROUP BY jsonPayload.src_vpc.vpc_name, jsonPayload.src_vpc.subnetwork_name, jsonPayload.connection.src_ip, jsonPayload.connection.src_port, jsonPayload.connection.dest_ip, jsonPayload.connection.dest_port, jsonPayload.connection.protocol ORDER BY bytes DESC LIMIT 15
  1. [実行] をクリックします。
注: 結果のテーブルに、送信された合計バイト数、ソース IP アドレス、宛先 IP アドレス、宛先ポート、プロトコル、それぞれの VPC 名とサブネット名が示されます。 注: エラーが発生する場合は、クエリの #standardSQL の部分が削除されていないことを確認します。それでもうまく行かない場合は、TABLE_ID にプロジェクト ID を入力していないか確認してください。

VPC フローログを BigQuery で分析する

前のクエリでは Cloud コンソールに表示された情報と同じ情報が表示されました。web-server とやり取りしたトラフィックが特に多い IP アドレスを識別できるようにクエリを変更してみましょう。

  1. クエリエディタで次のような新しいクエリを作成します。your_table_id の部分は TABLE_ID で置き換えますが、両側のアクセント記号(`)は残します。
#standardSQL SELECT jsonPayload.connection.src_ip, jsonPayload.connection.dest_ip, SUM(CAST(jsonPayload.bytes_sent AS INT64)) AS bytes, jsonPayload.connection.dest_port, jsonPayload.connection.protocol FROM `your_table_id` WHERE jsonPayload.reporter = 'DEST' GROUP BY jsonPayload.connection.src_ip, jsonPayload.connection.dest_ip, jsonPayload.connection.dest_port, jsonPayload.connection.protocol ORDER BY bytes DESC LIMIT 15
  1. [実行] をクリックします。
注: 結果のテーブルには各ソース IP を示す行が、web-server に送信したバイト数が大きい順に表示されます。最上位の結果は Cloud Shell の IP アドレスであるはずです。 注: エクスポート シンクの作成後に web-server にアクセスした場合を除いて、自分のマシンの IP アドレスはテーブルに含まれません。

複数のソースから web-server へのトラフィックをさらに生成した後、テーブルをもう一度クエリしてサーバーへの送信バイト数を調べることもできます。

タスク 5. VPC フローログの集約を追加する

ここでは、新しくリリースされた機能である VPC フローログ ボリューム削減について説明します。すべてのパケットが独自のログレコードに収集されるとは限りません。ただし、サンプリングの場合を含め、収集されるログレコード数はかなり大きくなる可能性があります。

このセクションで説明するログ収集の特定の側面を調整することで、トラフィックの可視性とストレージ費用のニーズのバランスをとることができます。

集約を設定する

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン) > [VPC ネットワーク] > [VPC ネットワーク] に移動します。

  2. [vpc-net]、[編集] の順にクリックします。

  3. [サブネット] タブで、[vpc-subnet] をクリックします。

vpc-subnet がハイライト表示された [サブネット] タブ

  1. [編集] > [ログを構成] をクリックして次のフィールドを表示します。

フローログの構成ページに表示された複数のフィールド

各フィールドの目的は次のとおりです。

  • 集約の間隔: 一定の時間間隔でサンプリングされたパケットは、単一のログエントリに集約されます。この時間間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分から選択できます。

  • メタデータ アノテーション: デフォルトでは、フローログ エントリには、ソースと宛先の VM の名前や、外部のソースと宛先の地理的リージョンなどのメタデータ情報を含むアノテーションが追加されます。保存容量を節約するために、このメタデータ アノテーションをオフにできます。

  • ログエントリのサンプリング: データベースに書き込む前に、ログの数をサンプリングして減らすことができます。デフォルトでは、ログエントリのボリュームが 0.50(50%)に縮小されます。つまり、エントリの半分が保持されます。このサンプルレートは 1.0(100%、すべてのログエントリを保持)から 0.0(0%、ログを保持しない)の範囲で設定できます。

  1. [集約の間隔] を [30 秒] に設定します。

  2. [サンプルレート] を [25%] に設定します。

  3. [保存] をクリックします。次のメッセージが表示されます。

「1 日あたりの生成ログの推定数: 6.14 MB」というメッセージ

集約の間隔を 30 秒に設定すると、デフォルトの間隔である 5 秒の場合と比べてフローログのサイズを最大で 83% 縮小できます。フローログの集約を構成すると、トラフィックの可視性とストレージ費用に大きな影響が出る可能性があります。

お疲れさまでした

VPC ネットワークを構成し、VPC フローログを有効にしてそのネットワークでウェブサーバーを作成しました。その後、ウェブサーバーへの HTTP トラフィックを生成し、Cloud コンソールでトラフィック ログを表示し、BigQuery でログを分析しました。

クエストを完了する

このセルフペース ラボは、「Network Performance and Optimization」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のクエストを受講する

引き続き別のクエストを受講してください。たとえば、「Google Cloud ソリューション I: インフラストラクチャのスケーリング」を受講するか、以下のおすすめのラボもご確認いただけます。

次のステップと詳細情報

Google Cloud Identity and Access Management の基本コンセプトについては次をご覧ください。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 9 月 28 日

ラボの最終テスト日: 2023 年 9 月 28 日

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