Azure研究サイト

Azure研究サイト

~理解しずらい情報をシンプルにお伝えします~

Azure仮想ネットワーク(Vnet)を理解する

Azure仮想ネットワーク(Vnet)とは

まず、仮想ネットワーク(Vnet)とは、数年システム開発を経験されている方でしたら「クライアントやAzureリソース間のインターネット通信をVPN接続で通信出来るようにすること」だけで伝わるかもしれません。仮想ネットワークを使うと、ネットワークレベルで暗号化を行ってくれるので、アプリケーションレベルで漏れずにHTTPS通信ができているか、ということを心配する必要がなくなる=HTTP通信でも盗聴される心配がなくなります。
 
上記説明でよくわからない方は、「VPN接続」「プライベートIPで通信」「サブネット」この辺りをまずGoogle検索してみてください。参考にChatGPTにも聞いたので載せておきますね。

ChatGPTに仮想ネットワークを説明してもらってみた

Google検索してみてくださいで終わらせようと思いましたが、流行りのChatGPTに説明してもらいました。(2023/04/30時点)

  • [ChatGPTへの質問]: 私はAzureを教えています。Azure仮想ネットワークについてAzure初心者にわかる説明を2000文字程度で教えてください。説明の中に、「VPN接続」「プライベートIPで通信」「サブネット」のワードを含めてください。

  • [ChatGPTからの回答]: Azure仮想ネットワークは、Azure上で仮想的にネットワークを構築することができるサービスです。これにより、複数の仮想マシンやクラウドサービスを同じネットワーク上に接続することができます。Azure仮想ネットワークでは、VPN接続を利用することができます。VPN接続を利用することで、オンプレミスのネットワークとAzure仮想ネットワークを安全に接続することができます。VPN接続を利用することで、オンプレミスのネットワークとAzure仮想ネットワーク間でプライベートIPで通信することができます。Azure仮想ネットワークでは、サブネットを利用することができます。サブネットを利用することで、Azure仮想ネットワーク内で複数の仮想マシンやクラウドサービスをグループ化することができます。サブネットを利用することで、同じネットワーク上にある仮想マシンやクラウドサービス同士でプライベートIPで通信することができます。Azure仮想ネットワークは、Azure上でのネットワーク構築を簡単にすることができます。VPN接続やサブネットを利用することで、安全かつ効率的なネットワーク構築が可能となります。Azure初心者でも簡単に利用することができるため、クラウド上でのネットワーク構築を行いたい方にはおすすめのサービスです。

私が仕事相手に説明した際の文章を載せます

仮想ネットワークとは?を説明します。仮想ネットワークがどのようなものかを理解するにあたって、「VPN接続」を知っていると話が早いです。VPN接続とは、ネットワークレイヤーですべての通信が暗号化されるためHTTPS通信が保証されるイメージです。インターネット経由の通信がすべて暗号化されるので、アプリケーションの実装ミスなどでHTTPSではなくHTTP通信が発生してしまっても、もっと上のネットワークレイヤーで暗号化されているのでアプリケーションレイヤーでは暗号化を考える必要がなくなる、という考え方です。 このような暗号化を、Azureリソース同士のAzure内部通信や、ローカルPCとAzureとの間のインターネットを経由した通信で実現するのが仮想ネットワークというイメージです。仮想ネットワークを使用する場合は、仮想ネットワークに所属させたすべてのリソースにてグローバル通信を拒否設定した上で、プライベートIPでの通信をさせることになります。
 
メリット・デメリットを分けた説明まではまだできていませんが、上記が仮想ネットワークの概要説明になります。仮想ネットワークを使った場合の代表的なメリットや、仮想ネットワークの概要、およびAzureADの認証とは別の話であることはご理解いただけたでしょうか?
 
仮想ネットワークを説明するためには色々な話が混ざるので、箇条書きぽくなってしまいますがご了承ください。
 
■ 仮想ネットワークを使う場合
すべての通信が暗号化されるので、アプリケーションでHTTPS等を考慮しなくても第三者による盗聴などがされないようになります。(今どきはアプリケーション開発の際にフレームワークを利用することであまり意識しなくてもHTTPS通信が実現できるとは思いますが、フレームワークを使わないケースもあったりはします。) ですので、使った方が良いかどうかでいうと使うにこしたことはない、ということになると思います。(合っているかわからない例え話ですが・・・自宅に現金を置いておくときに、金庫があった方が良いかどうかみたいな話になってくるかもしれませんが。。そりゃああった方が良いけど、例えば現金1万円を置いておくために10万円の金庫を買うのか。でも現金1000万円を置いておくなら金庫を買うのはありなんじゃないかという。。何が言いたいかというと、いくつかのコストをかけてまで安全性を上げる必要があるのか。どうしても安全に守る必要がある部分があるのであれば、それはWebアプリケーションではないところで管理するとかいう考え方もあるかもしれません。どういうシステム内容かを把握していないので、あくまでも選択肢という話にはなりますが。)
 
■ Azure上に仮想ネットワークを構築した場合
まずローカルPC側にVPN接続の準備(証明書等)が必要になります。準備した状態で、ローカルPCのブラウザでシステムにアクセスすると、ローカルPC⇔AppService上のアプリケーションの通信間が暗号化されて安全に通信されます。更に、AzureストレージアカウントやAzureSQLデータベースも仮想ネットワークに所属させておくと、AppServiceのアプリケーション処理でAzureストレージアカウントやAzureSQLデータベースにアクセスする際も、仮想ネットワーク内の通信がされます。※ちなみにAzureリソース間の通信は、リージョンが異なればインターネットを経由しますし同じリージョンであればプライベートIPでの通信が行われます。じゃあAzureストレージアカウントやAzureSQLデータベースを所属させる意味があるのかというとあります。デフォルト状態だとインターネットからアクセス・ログイン試行できてしまうので、仮想ネットワークに所属させる際に「インターネットからの通信を拒否する」を設定することになるのでインターネットからアクセスしてログイン試行等ができなくなります。
 
■ 仮想ネットワークのデメリット
今nakanishiさんがされているように学習コストがかかる、仮想ネットワークを構築するためにはAzureリソースが複数作成することになるのでその分の課金コストがかかる、システム利用者側のPCもVPN接続をするための設定・証明書の用意等が必要になる、などでしょうか。
 
■ 仮想ネットワークを使用しない場合はどうなるか
ローカルPC⇔AppService上のアプリケーションの通信間は通常のインターネット経由での通信になります。仮想ネットワークを使ってもインターネット自体は使用されますが、アプリケーション側でHTTPS通信を抜けもれなく実装することが必要になります。何かのミスでHTTP通信が発生したりりすると、第三者に盗聴などされる可能性が出てきます。
 
仮想ネットワークの説明をしていたので触れていませんでしたが、アクセス制御という意味での補足情報をお伝えしておきます。それなりの規模のシステムで使われる設定ではないかもしれませんが、特定のグローバルIPアドレスだけを許可させるアクセス制御というネットワーク設定もあります。例えば、AppServiceのネットワーク設定画面で設定すると、特定のグローバルIPアドレスからしか該当アプリケーションにアクセスできなくなります。手軽にアクセス制御できますが、HTTPS実装は漏れなく必要ですし、利用者分のグローバルIPアドレスを把握しないといけないですし、じゃあAzureSQLDatabase側ののアクセス制御はどうするの?とかが出てきますし(答えの一つは、SQLDatabaseのネットワーク設定にAppServiceのIPアドレス許可を設定する)、通信を暗号化できるとかではないので、すべてが網羅される仮想ネットワークは強力ですよね。
 
以上です。
 

ご意見・ご要望はこちらへ 


/*--------------------------------------------------------------------*/