コンテンツに移動
ネットワーキング

コンプライアンスを維持しながらネットワーク障害を検出、回避する方法

2020年3月16日
https://storage.googleapis.com/gweb-cloudblog-publish/images/gcp_networking.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2020 年 3 月 3 日に、Google Cloud blog に投稿されたものの抄訳です。

ある予測データによれば、ネットワーク障害やパフォーマンスの問題の 75% は構成ミスが原因であり、そうしたミスのほとんどは、本番環境になってから見つかるそうです。このような状況は、ネットワーク管理者やアーキテクトにストレスを与えます。ファイアウォールのルールやルーティングのルールの構成変更が及ぼす影響を把握できなければ、ネットワーク モニタリングが事前対応ではなく事後対応とならざるを得ず、リスクが生まれ、トラブルシューティングにかかる時間が長くなるためです。

Google が最近リリースした Network Intelligence Center は、Google Cloud の包括的なネットワーク モニタリング、検証、最適化のプラットフォームです。クラウドでもオンプレミスのデータセンターでも利用でき、ネットワーク障害を予測して修正するモジュール群が最初から組み込まれています。この投稿では、Connectivity Test について詳しく取り上げます。このモジュールは、接続に関する問題の診断と構成変更が及ぼす影響の予測を可能にし、ネットワーク停止を適切に回避できるようにします。

Connectivity Test を使用すると、Google Cloud 内や Google Cloud から外部のエンドポイント(オンプレミスにあるものや、場合によっては別のクラウドにあるものも)への接続に関する問題を自己診断できます。また、テストを作成、保存、実施することも可能です。こうした機能を備えた Connectivity Test を利用することで、以下のようなさまざまなネットワーク管理の重要業務を遂行できます。

1.ネットワークの設計とアーキテクチャを理解し、検証する

2.接続に関する問題のトラブルシューティングと修復を行う

3.構成変更が及ぼす影響を確認する

4.ネットワークのセキュリティを確保する

5.セキュリティとコンプライアンスに関する監査を簡単に管理できるようにする

これらの各ユースケースについては以降で詳しく取り上げますが、まずは Connectivity Test のアーキテクチャをご紹介しましょう。

Connectivity Test の技術の概要

Connectivity Test モジュールは、ネットワーク到達性分析プラットフォームを基盤として、ソースと宛先の間で接続が可能かどうかを判断します。接続ができない場合は、Connectivity Test が障害箇所を突き止め、その根本原因(接続をブロックしているファイアウォールのルールなど)を特定します。この到達性分析プラットフォームでは、トラフィック フローをリアルタイムで確認したり、データプレーンを介してトラフィックを送信したりする従来の手法ではなく、公式な検証テクニックに基づいたネットワーク検証手法を採用しています。この手法では、現在のネットワーク設計、構成、ネットワーク状態に基づいて、正確かつ包括的なネットワーク モデルを作成します。モデルは発生し得るすべての動作を分析し、構成の問題のトラブルシューティングや目的のポリシーへの準拠を支援します。そのため、ネットワークの検証により、従来の手法では不可能であった方法で到達性を徹底的に証明または否定できます。

Connectivity Test では、この分析を実施するために、特に 2 つの主要コンポーネントを使用しています。  

データプレーン モデル

Connectivity Test では、静的な到達性分析を実行するために、理想化したデータプレーン モデルを使用しています。言い換えると、Connectivity Test は GCP のプロジェクト構成からインスタンス、ネットワーク、ファイアウォールのルール、ルート、VPN トンネルなどを取得し、分析を実施して 2 つのポイントに到達できるかどうかを検証します。このモジュールが使用する最も重要な構成は、VPC ネットワーク プロパティ、ネットワーク サービス(ロードバランサ)、ハイブリッド クラウドの構成(VPN、Interconnect、Cloud Router)、VM および Google Kubernetes Engine エンドポイントの構成です。

ネットワーク抽象状態機械

Connectivity Test はネットワーク抽象状態機械も利用しています。これは、Google Cloud VPC ネットワークによるパケット処理方法の理想化モデルです。具体的には、Google Cloud は有限状態機械としてモデル化されている複数の論理ステップでパケットを処理します。有限状態機械は、パケットが配信またはドロップされるまで、離散状態の間で限られた数のステップを実行します。

以下の図に、Connectivity Test による 2 つの VM 間のトレース トラフィックのシミュレーション モデルを示します。GCP ネットワークとリソースの構成によって異なりますが、このトラフィックは Cloud VPN トンネル、GCP ロードバランサ、ピアリングされる VPC ネットワークなどを通過してから宛先 VM に到達します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Simulating_traffic_between_two_VMs.max-1600x1600.jpg
ネットワーク モデルに基づいた 2 つの VM 間のトラフィックのシミュレーション

Connectivity Test の実用例

先にも述べましたが、Network Intelligence Center を早期導入したお客様は、Connectivity Test を 5 つの主要ユースケースに利用しています。それでは、各ユースケースについて詳しく見ていきましょう。

1. ネットワークの設計とアーキテクチャを把握し、検証する: ワークロードをオンプレミスからクラウドに移行する場合、ネットワーク パスをより明確に把握する必要があります。トラフィックが VPN または Interconnect を通過しているかどうかや、ソースと宛先のエンドポイント間に適用されているファイアウォールのルールやルーティングのルールを確認したい場合があります。Connectivity Test を利用すれば、パケットフローのトレース全体を、ソースから宛先まで、すべてのホップ(ルート、外向き / 内向き(下り / 上り)のファイアウォールのルール、VPN / Interconnect、VPC ピアリング、NAT など)を含めて確認できるため、ネットワーク設計をより把握し、簡単に検証することができます。ソースと宛先の間の複数のトレースも確認できるため、高可用性 VPN などのネットワーク構成に役立ちます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/trace_path.max-700x700.jpg

2. 接続に関する問題のトラブルシューティングと修復を行う: ほとんどのネットワーク障害の原因は、誤った設計のファイアウォール ルールや不適切なルーティング ポリシーといった構成ミスです。共有 VPC や多数のファイアウォールおよびルーティング構成がある複雑なクラウド環境では、接続に関する問題のトラブルシューティングや原因の特定に数時間から数日もかかることがあります。こうした状況は、カスタマー サポートのケースでよく見られます。Connectivity Test を使用すれば、接続に関する問題が発生しているソース エンドポイントと宛先エンドポイントの間で診断テストを実施し、特定のファイアウォールのルールやルーティングの問題といった原因を迅速かつ正確に特定できます。その後、ファイアウォールのルールを更新し、テストを再度実施して、接続に関する問題が解消するかどうかを確認します。トラブルシューティングにかかる時間が数日または数時間から数分に短縮されるだけでなく、原因を迅速に特定し、対策を講じて、修正の状態を確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/trace_path_2.max-800x800.jpg

3. 構成変更による影響を確認する: 本番環境では、ミスを事前に特定できるように、構成変更による影響を把握してから変更を実施することが不可欠です。Connectivity Test を利用すれば、接続インテントを反映したテストセットを作成できます。例えば、ソース エンドポイントと宛先エンドポイントの間に接続があるべき / あるべきではない、といったインテントです。構成を変更後、1 つのテストまたはすべてのテストを再実施して、接続インテントに違反していないかどうかを確認できます。インテントに違反していることがわかった場合、構成変更をロールバックしてテストを再実施し、接続がテストのインテントどおりになっていることを確認します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/verify.max-1900x1900.jpg

4. ネットワークのセキュリティを確保する: Connectivity Test により、ネットワーク構成にネットワーク セキュリティに関するインテントを確実に反映することができます。例えば、ウェブ階層の VM をデータベース階層の VM に接続したくない、またはデータベース階層の VM をインターネットに接続すべきではないとします。こうしたセキュリティ インテントを Connectivity Test として指定し、エンドポイントが本当に「到達不可」であること(つまり、希望どおりに分離されていること)を確認できます。その後、これらのテストを定期的に実施することで、セキュリティ違反がある場合はそれらを検出できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/connectivity_test.max-1500x1500.jpg

5. セキュリティとコンプライアンスに関する監査を簡単に、管理しやすくする: 前述の例で、Connectivity Test を介してセキュリティ インテントを指定し、違反を特定した場合はそれらを修正する方法を紹介しました。セキュリティおよびコンプライアンスの監査に、従うべき特定のルール、ポリシー、インテントがある場合は、テストセットを作成して定期的にテストを実施し、結果のログを記録することができます。そうすることで、セキュリティおよびコンプライアンスの監査中に、監査の要件に照らしてネットワークがどのように動作していたかを示すログを事前に準備することがきます。

以上のすべてのユースケースは、使いやすい UI で実現できます。また、コマンドラインか API からテストを実施し、CI / CD パイプラインの一環としてテストを自動的に実施することもできます。

お客様の声

Network Intelligence Center を早期導入したお客様から、Connectivity Test モジュールのおかげで問題を早い段階で特定し、解決することができたという声が寄せられています。人材紹介会社の Randstad 社では、Connectivity Test が同社のネットワーキング ツールセットに欠かせない要素となっているそうです。

「ネットワーク接続に関する問題のトラブルシューティングに Network Intelligence Center を利用していますが、素晴らしいの一言です。Network Intelligence Center に組み込まれている Connectivity Test は頻繁に使っています。GCP 構成内の接続の問題を解決し、問題が GCP の対象外となった時点を確認するためです。おかげでトラブルシューティングにかかる労力を全体的に減らし、時間を大幅に節約できています。」 - Randstad 社 IT インフラストラクチャおよびアーキテクチャ担当シニア ディレクター Kevin Scott 氏

一方、マネージド サービス プロバイダの HIPAA Vault 社は、Connectivity Test をコンプライアンスの検査と証明に利用しています。

「Network Intelligence Center を使用すれば、意図したとおりにネットワーク接続が構成されているかどうかを検証でき、ネットワーク構成に問題があればすぐにトラブルシューティングができるので、とても便利です。」 - HIPAA Vault 社クラウドおよびネットワーク担当エンジニア David Breise 氏   

Network Intelligence Center と Connectivity Test を利用してネットワークのパフォーマンスと可用性を高める方法の詳細については、こちらの動画をご覧ください。

Video Thumbnail

- By プロダクト マネージャー Shishir Agrawal、シニア エンジニアリング マネージャー Gargi Adhav

投稿先