Microsoft Azureから外部接続するために覚えておくべきこと

はじめに

Microsoft AzureはMicrosoftの提供するクラウドサービス群の総称です。この中にはLinuxやWindowsOSの仮想マシンを構築できる「Virtual Machines」、アプリ開発に適した「App Service」、サーバーレスなアプリ開発が可能な「Azure Functions」、ブロックストレージサービスの「Azure Disk Storage」、リレーショナルデータベースサービスの「Azure SQL Database」など2021年の時点で100以上の様々なPaaS、IaaSサービスがリリースされています。なお今回取り上げるネットワーク関連のサービスとしては、仮想のプライベートネットワーク構築が可能な「Azure Virtual Network」、オンプレミス環境とAzure間の接続を可能とする「Azure VPN Gateway」等があります。

Microsoft Azureを利用することでMicrosoftの強力なネットワークバックボーンでシステムを構築・運用できる他、複数のAzureサービスを連携することで複雑なシステムの運用も可能で、GUIの「統合コンソール」とAzure CLI、Azure PowerShell、Azure Cloud Shellを利用したCUIでの管理のどちらも可能となります。AI・機械学習やIoTといったシステムの開発が可能なサービスも提供されており、Azureで実現できる分野は幅広いです。

もちろんAWSやGCPといったクラウドサービス同様にAzureのほとんどのサービスが従量課金制であるため、必要最低限の稼働によるコスト削減も実現できます。さらに55 以上のサービスにおいて無料で利用し続けることもできる他、Virtual MachinesやAzure SQL Database、Azure VPN Gatewayといった人気サービスにおいては12か月間無料で利用できるようになっています。

以上がMicrosoft Azureの概要ですが、Azureでシステム開発・運用をする際はプライベートネットワーク接続だけでなくインターネットを経由した接続が必要になる場面もあることでしょう。今回このインターネットを介するAzureとの接続を「外部接続」と表現しますが、この記事では一般的な外部接続の仕組みやAzureでの外部接続方法について、またAzureで提供されているネットワーク関連サービスについて紹介していきます。

サーバーの運用やプログラミングには精通しているもののネットワーク関連に疎いという方、今後Azureで外部接続が必要となるため学びたいという方、クラウドサービス全般について勉強しているという方、各社のクラウドサービスを比較見当している最中というはぜひご覧ください。

一般的な外部接続の仕組みとAzureでの外部接続について

社内ネットワーク等の内部接続からインターネットを使った外部接続を行うためには、そのための設定をする必要があります。また接続には方向があり、外部→内部、内部→外部の2種類があります。今回HTTPプロトコル等を利用して外部からポートの許可されているWebサーバーにアクセスすることは外部→内部の対象に含めません。内部ネットワークは誰彼構わずアクセスされるわけにはいかないので、当然ながら接続先やポートの制限・制御、権限の適切な設定を行って情報漏洩やデータの改竄等が行われないよう管理します。そのような中、外部からアクセスする際はVPN(Virtual Private Network)で仮想的な専用ネットワークを確立したり、特定の開かれたポートを利用して接続先で指定されたログイン情報でのアクセスを可能とするリモートデスクトップで接続したりという方法を検討することとなります。

内部→外部の場合ですが、内部ネットワークから外部へアクセスする際はIPアドレスの変換が必要となります。社内ネットワークで例えば管理サーバー、Webサーバー、データベースサーバー、DNSサーバーをそれぞれ別のサーバーとして運用している場合、その間の接続において不特定多数が利用しているインターネットを経由することはなく、一般的には社内専用のネットワーク(プライベートネットワーク)内だけで完結させることがほとんどです。この社内専用のネットワークのことを「イントラネット」とも呼び、不特定多数が利用するインターネットの対義語になると思っていただいて問題ありません。さらに内部ネットワークにはLAN(Local Area Network)とWAN(Wide Area Network)という分別があり、例えば複数の支社を持つ大きな企業において前者は1支社内だけのネットワーク、後者は支社間をも結ぶネットワークのことをそれぞれ表します。今回特に重要な部分ではないので詳しく掘り下げませんが、ネットワークにはこういった分別もあることを頭の片隅に入れておいてください。

続いてIPアドレスの話を続けます。IPアドレスはよくインターネット上の住所と言われ、IPv4(10進数)という形式の場合は「192.168.○○○.○○○」のように最大12桁以内で表されます。近年はIPv6(16進数)という形式も普及しており、こちらはIPv4で表現できるIPアドレス数の枯渇を解消するために利用され始めています。日本中に一つとして同じ住所が存在しないのと同様にインターネット上のIPアドレスも重複はできないので、個数は有限となる状況です。また、インターネットの世界に出る時は接続元の端末にもIPアドレスを付与してその住所を明かす必要があります。ログの情報を見たときに接続元のIPアドレスが記載されているのを見たことがある人もいるのではないでしょうか。ただし個人所有のスマートフォンのように外部→内部からのアクセスを必要としない場合は固定のIPアドレスを保持する必要はなく、なんのセキュリティ設定も行わず固定IPアドレスを持っているのはかえって危険です。IPアドレスを保持するためにはその分のコストも発生します。そのため皆さんが普段パソコンやスマートフォンからインターネットへアクセスする場合は、契約しているプロバイダーよりランダムなIPアドレスが自動付与され、そのIPアドレスが自動的に変更されるという仕組み「DHCP(Dynamic Host Configuration Protocol)」が利用されています。これにより、初めてスマートフォンでインターネット接続する際はルーター等の設定こそ必要となるものの、端末側でIPアドレス等のネットワーク設定をすることなく接続可能となる状況です。

IPアドレスにはグローバルIPアドレスとプライベートIPアドレスの2種類があり、グローバルIPアドレスは上述したインターネットの世界へ出るためのもので、プライベートIPアドレスは内部ネットワークだけで利用するものとなります。そのためプライベートIPアドレスは内輪だけで通用するIPアドレスであれば良く、インターネット上ではすでに存在しているものであっても内部ネットワークで存在していなければ付与が可能となります。ただしインターネットに接続する際にはこのプライベートIPアドレスをグローバルIPアドレスに変換する必要があります。例えば「ヒロ」というあだ名の人がいたとして、家族・友達間で「ヒロ」と呼ぶと問題なく通じますが、学校や会社といった規模の大きい環境へ出たとたん「ヒロ」は唯一のあだ名ではなくなり、何人もいる可能性があります。何人も「ヒロ」がいたら同じあだ名の人のうち誰かしらは便宜上あだ名が変わるかもしれません。あだ名くらいであれば臨機応変になんとかなりますが、IPアドレスの場合インターネット上に出たら必ずその存在はユニーク(一意)でなければなりません。

このプライベートIPアドレス→グローバルIPアドレスへ変換する仕組みのことを「NAT(Network Address Translation)」と言います。なお、この変換は必ず1対1となり、ポートも同時に変換する仕組みとして「NAPT(Network Address Port Translation)」というものも存在します。

接続には外部→内部、内部→外部があることを述べましたが、このうち外部→内部のためのIP変換を一般的に「DNAT (destination NAT)」、内部→外部のためのIP変換を「SNAT(source NAT)」と呼びます。Azureでも外部接続するためにはこのSNATを利用し、グローバルIPアドレスを付与することとなります。

グローバルIPアドレスはパブリックIPアドレスとも呼ばれますが、Azureではこの「パブリックIPアドレス」というリソースにおいてIPアドレスがネットワークインターフェースへ自動付与されます。AzureのVMの仕組みとしては、パブリックロードバランサー(LB)に付与されているフロントエンドIPアドレスをバックエンドのインスタンスに割り当てることで外部接続可能になるという状況です。ロードバランサーはバックエンドインスタンスから接続要求を受け取る際に自由に利用できる「エフェメラルポート」と呼ばれるポートを利用しますが、SNATを行う際の一時的なポートのことを「SNAT Port」と言います

Azureには「Azure NAT Gateway 」というサービスが提供されており、これを利用することでVMに直接グローバルIPアドレスが付与されていなくても仮想ネットワークからの外部接続のみを可能にできます。仮想ネットワークのサブネットをNATのグローバルIPアドレスを紐付けるという方法です。大量にSNATポートが必要になる場合や、複数のVMで同じIPを利用したい場合、オンプレミスのようなSNATを実現したい場合、一つのパブリックIPアドレスを制限したい場合などに適している方法と言えます。他にもパブリックIPアドレスを保持したくないものの外部からのアクセスを可能にしたいという場合は「VPN Azure」というサービスを利用することも可能です。

Microsoft Azureで提供されているネットワーク関連サービス

次に、Azureで提供されているネットワーク関連サービスを6つに絞って紹介します。今後Azureにおいてネットワークの確立が必須となる場合はぜひご参照ください。なおAzureのネットワーク関連サービスもその他サービス同様に単独でも利用できますが、複数を組み合わせて利用することも可能です。

ExpressRoute

オンプレミス環境とAzure間、またはMicrosoft 365、Dynamics 365といったMicrosoftのサービス間において閉域ネットワークを利用して接続できるサービスです。閉域ネットワークを利用するためにはMicrosoftと提携しているプロバイダーが提供する専用回線を利用することとなります。その結果、通常のインターネット回線を使ったアクセスと比べてセキュリティ的に安全で安定したスピードでの通信が可能となります。

ExpressRouteにはAzureプライベートピアリング、Microsoftピアリングと2つのピアリング方法が用意されています。ピアリングとはネットワーク同士がお互いに通信できる仕組みのことを表します。ExpressRouteでAzureプライベートピアリングを利用すると、オンプレミスで利用しているプライベートIPアドレスをそのまま使ってAzureとの通信が可能となります。MicrosoftのPaaS、SaaSサービスと通信したい場合はMicrosoftピアリングの方を利用することとなります。

VPN Gateway

Azure VNet(論理的に他のネットワークから分離された環境の構築ができるサービス)内に構築された環境と他のネットワーク環境間の接続を安全に行える仮想ネットワークゲートウェイサービスです。このVPNという仕組みはAzureだけではなく様々なサービスで提供されており、インターネット回線を利用しつつその中に仮想的な専用ネットワークを構築する仕組みとなっています。

1つのVNetに作成できるVPN Gatewayは1つのみですが、その1つのVPN Gatewayにおいて同時接続数できる最大数は128台となることに注意が必要です。またオンプレミス環境からVPN Gatewayを経由したPaaSへの接続はできません。

Virtual WAN

WANが支社間を結ぶ規模の大きなネットワークということは前述しましたが、Virtual WANはAzureを介することで最大1000の支社間・拠点間の通信を可能とするサービスです。さらに推奨パートナーのデバイスを利用することで難しい設定が不要となる他、Network Watcherと連携することでリソース状態やVM間の通信状況等をモニタリングできるようになります。

仕組みとしては、拠点デバイス(サイトとも呼ばれる)とその設定情報をAzureの仮想ハブと連携することで通信を可能とします。仮想ハブは1リージョンに対して1つのみ作成可能で、同一リージョン内の仮想ネットワークと拠点ネットワークをS2S(Site-to-Site)VPNで接続します。

Azure Route Server

やや複雑なサービスの一つですが、一言で表すとネットワーク仮想アプライアンス(NVA)と仮想ネットワーク間において動的ルーティングを簡単に行えるサービスとなります。ネットワーク仮想アプライアンスは聴き慣れない用語かもしれませんが、ファイアウォール、ロードバランサーといった機器を仮想マシンとして提供するサービスのことです。BGP(Border Gateway Protocol)という経路情報を交換するプロトコルを使ってルーティング情報を直接交換しますが、実際のデータ転送は行われません。

Azure Firewall

その他サービスにあるものと同様、Azureで提供されているファイヤーウォールサービスであり、利用することでAzure上のネットワークの保護はもちろん、サブスクリプション、仮想ネットワークにかかわらずアプリケーションやネットワークにおける接続ポリシーを一元管理できるようになります

稼働率99.99%のSLAが提示されている他、IP アドレスやポート番号、プロトコル、FQDNにおいて柔軟なルール設定が可能であり、ゲートウェイ装置としてのNAT機能も備わっています。また最大250個のパブリックIPアドレスをファイヤーウォールに関連づけたり、悪意のあるIPアドレス、ドメイン間のトラフィックの警告をしたり拒否したりもできます。

Azure Load Balancer

ロードバランサーは大量なリクエストを負荷分散する仕組みとして有名ですが、Azureにもロードバランサーサービスとしてレイヤー4で動作する「Azure Load Balancer」が提供されています。利用することでAzureの仮想マシンサービス「Virtual Machines」や仮想マシンスケールセットへのアクセスにおいてIP アドレス、ポート番号、またはその両方を対象に負荷分散することが可能となります。

内部アクセス・外部アクセスによって2種類のロードバランサーを使い分けることができ、インターネットからの通信を負荷分散したい場合は「パブリックロードバランサー」、Azure内部やオンプレミス環境からの通信を負荷分散したい場合は「プライベートロードバランサー」を選択することとなります。なお、Azure Load BalancerはTCP/UDPを対象としますが、HTTPを対象として負荷分散したい場合は別途「Azure Application Gateway」等のサービスを利用する必要があります。

オンプレミスとAzureを接続する方法

オンプレミス環境とAzure間における接続にはS2S(Site-to-Site)VPNと呼ばれる方法を使います。似た名称で「P2S(Point-to-Site)VPN」というものがありますが、こちらはクライアント端末とAzure間でのVPN接続となります。P2S(Point-to-Site)VPNではVPN Gatewayの利用やクライアント証明書・自己署名ルート証明書が必須となります。ただしグローバルIPアドレスやルーター等の機器は不要であり、最大128台のクライアント端末からの同時接続が可能です。

S2S(Site-to-Site)VPNではオンプレミス環境とAzureの仮想ネットワークをVPNで接続します。またAzure VNet(Virtual Network)間の接続も可能です。これを実現するためにはP2S(Point-to-Site)同様にVPN Gatewayが必要となる他、オンプレミス環境において固定のグローバルIPアドレスとVPNデバイスを用意しておく必要があります。あわせてオンプレミス側にローカルネットワークゲートウェイ(オンプレミス側のネットワークに関する情報)を設定しておくことで初めてVPN Gatewayを経由してAzureとの接続が可能となります。

複数のオンプレミス環境をAzureと接続する場合にはS2S(Site-to-Site)VPNの中のマルチサイト接続という方法を利用することとなります。マルチサイト接続において、Azureの仮想ネットワークと構築できるAzure VPN Gatewayの環境は1対1となることもあわせて覚えておきましょう。

まとめ

オンプレミス環境、クラウドサービスにかかわらずインターネットを介した外部接続は多くのシステムで欠かせない部分ですが、設定を間違えてしまうとアタック等の温床となり、いつセキュリティリスクに晒されてもおかしくない状態となります。そのためネットワークの仕組みはもちろんのこと利用するサービスの仕様や仕組みについても十分に理解しておく必要があります。

ぜひ今回の記事をきっかけに、Microsoft Azureのネットワーク関連サービスについて正しく理解したうえで、適切なサービスを選択してセキュアな接続が維持できるシステム構築を目指してみてください。Azureには無料で利用できるサービスもあるため、それらを利用したうえでテスト運用してみるのもおすすめです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です