読み込んでいます...
一致する結果は見つかりませんでした。

Google Cloud コンソールでスキルを試す

Managing Security in Google Cloud - 日本語版

700 以上のラボとコースにアクセス

Cloud Logging で VPC フローログを構成して使用する

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

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

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

目標

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

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

設定と要件

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

  1. Qwiklabs にシークレット ウィンドウでログインします。

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

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

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

  5. [Google Console を開く] をクリックします。

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

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

Google Cloud Shell の有効化

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

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

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

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

環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト 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 us-central1 --enable-flow-logs \ --logging-metadata=include-all gcloud compute networks subnets update default \ --region europe-west1 --enable-flow-logs \ --logging-metadata=include-all

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

  1. 次のコマンドを実行して、3 つのインスタンスをそれぞれ異なるサブネットに作成します(この後のテストで使用します)。
gcloud compute instances create default-us-vm \ --machine-type e2-micro \ --zone=us-central1-a --network=default gcloud compute instances create default-eu-vm \ --machine-type e2-micro \ --zone=europe-west1-b --network=default gcloud compute instances create default-ap-vm \ --machine-type e2-micro \ --zone=asia-east1-a --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.europe-west1-b 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. Google 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.us-central1-a ping -c 5 cloud.google.com curl http://www.google.com
  1. Google 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 フローログを Cloud Logging で表示します。

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

  1. Google Cloud コンソールで、ナビゲーション メニュー > [ロギング] > [ログ エクスプローラ] に移動します(このメニュー オプションが見つからない場合はこのラボのステップ 3 に進んでください)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. 現在のクエリを削除して、次の内容を貼り付けます。<INSERT_PROJECT_ID> は Qwiklabs の Google Cloud プロジェクト 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 データセットを作成する] を選択します。
  6. [データセット ID] に「flowlogs_dataset」と入力し、[データセットを作成] をクリックします。
  7. [シンクを作成] をクリックします。[ログルーターのシンク] ページが表示されます。

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

  1. そのシンクの右側にあるその他の操作メニュー()をクリックし、[シンクの詳細を表示する] を選択します。
  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. Google 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 europe-west1 --no-enable-flow-logs
  1. 無効になったことを確認するには、Google Cloud コンソールで VPC を表示します。ナビゲーション メニュー[VPC ネットワーク] > [VPC ネットワーク] をクリックします。プロンプトが表示されたら、[終了] をクリックします。

タスク 8. 確認

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

ラボを終了する

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

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

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

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

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

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

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

前へ 次へ

始める前に

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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