【Azure】オンプレ環境とAzure環境を接続する方法

# はじめに
Azure環境とオンプレミス環境との接続経路を構築する際の選択肢とそれぞれの特徴を比較し、設計デザインを描く際のポイントを纏めてみました。

尚、筆者はJavaアプリケーション開発でSE経験を積んできたので、ネットワークやインフラ設計周りは得意でありません。素人なりに公式ドキュメントや書籍を参考にしながら事実誤認がないよう留意していますが、もし不審な点があれば、どうぞご遠慮なくコメントや修正リクエストを頂ければ幸いです。

【参考にしたドキュメント】
[[MS-Learn]オンプレミス ネットワークの Azure への接続](https://learn.microsoft.com/ja-jp/azure/architecture/reference-architectures/hybrid-networking/)他、Microsoft公式ドキュメント

<sub>※ 本記事はシステム間連携に焦点を当てるので、クライアント端末からのAzure環境接続(P2P接続)には触れない。</sub>

# Azureとオンプレミス環境の接続を必要とする想定シーン
:small_blue_diamond:企業がデータセンターやプライベートクラウドを維持しながら、一部のワークロードをAzureへ展開する。
:small_blue_diamond:オンプレミスで重要なデータを保持している企業が、パブリッククラウド上にセカンダリバックアップを保持してデータ保護を行う。
:small_blue_diamond:オンプレミスのデータベースやレガシーシステムと、クラウドベースのアプリケーションやサービスとを外部インターフェース連携する。
:small_blue_diamond:特定の業界や規制要件に準拠している企業で、セキュリティやデータ保護の観点から全てのデータ送受信をプライベートネットワークを介して安全にデータをやり取りする必要がある(=コンプライアンス要件)

# オンプレ環境とAzure環境の接続方法
Azure環境とオンプレミス環境との接続経路を構築するには、以下の3つの実現方式がある。
## 【実現方式①】 VPN接続（[Azure VPN Gateway](https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-about-vpngateways)）
:::note info
Azure VPN Gatewayの機能を用いて、オンプレミス(Site)と仮想ネットワーク(Site)をVPN接続[^VPN接続]する。（もしくは仮想ネットワーク同士を接続）
Azure VPN Gatway側とオンプレミス側のローカルゲートウェイの双方向で接続が必要。
:::
 
#### Azure VPN Gatewayのサイト間接続(S2S VPN)とは
Azure仮想ネットワークとオンプレミスの間で暗号化されたトラフィックを送信する仮想ネットワークゲートウェイ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3315076/818b5cf5-0718-aa47-1d37-d4533a643d73.png)
　<sub>※ 図：[MS-Learn：Azure VPN Gateway とは](https://learn.microsoft.com/ja-jp/training/modules/intro-to-azure-vpn-gateway/2-what-is-azure-vpn-gateway) より出典</sub>
 
* 暗号化されたトラフィックはパブリックなインターネットを経由する。
* 暗号化プロトコルIPsec[^IPSec]/IKE (IKEv1[^IKEv1] または IKEv2[^IKEv2]) VPNトンネルをサポート。
* ルートベースVPN[^rootVPN]とポリシーベースVPN[^policyVPN]の両方をサポート。
* 選択したSKU[^SKU]に応じて最大10～最大30個までの接続をサポート。(一度に接続できるのは1つ)
* 選択したSKU[^SKU]に応じて100 Mbps から 1.25 Gbps までの合計スループット。
* 選択したSKU[^SKU]に応じてBorder Gateway Protocol (BGP[^BGP]) のサポート。
:bulb:Azure VPN GatewyのSKUは[[公式ドキュメント]Gateway の SKU](https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-about-vpngateways)参照。

#### 利用シーン
 * オンプレミスハードウェアとクラウド間のトラフィックが軽量な小規模のサイト
 * 待機時間が若干長くなっても柔軟性とクラウドの処理能力の向上が望まれるハイブリッドアプリケーション
#### メリット
 * 接続設定が簡単かつ迅速
 * VPN Gateway SKU[^SKU]に応じて、最大10Gbpsの高い合計帯域幅を利用可能
#### 課題
 * オンプレミス側でVPNデバイスが必要、可用性もオンプレミス側の責任範囲
 * Azure VPN Gatewayは99.9%の可用性を保証しているが、Gatewayへのネットワーク接続は含まれない。

#### 構築手順
 1. VPN(仮想ネットワーク)の作成
 2. VPN Gatewayの作成
 3. ローカルゲートウェイの作成
 4. VPN接続を作成後、接続確認
 5. 仮想マシンへの接続 
:bulb:[公式ドキュメント チュートリアル: Azure portal でサイト間 VPN 接続を作成する](https://learn.microsoft.com/ja-jp/azure/vpn-gateway/tutorial-site-to-site-portal)参照

#### 利用料金
* VPNネットワークのセットアップは無料、接続時間に応じて従量課金。

https://azure.microsoft.com/ja-jp/pricing/details/vpn-gateway/


## 【実現方式②】 専用線接続（[Azure ExpressRoute](https://learn.microsoft.com/ja-jp/azure/expressroute/)）
:::note info
[Azure ExpressRoute](https://learn.microsoft.com/ja-jp/azure/expressroute/)で専門業者が提供する接続プロバイダーを使ってインターネットを経由せずに、Azureとオンプレミスの自社システムを閉域網で接続する。
:::

### Azure ExpressRouteとは
ExpressRoute接続はサードパーティ製接続プロバイダーを経由するプライベートの専用接続。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3315076/54765bf2-9cfe-8123-7549-8edf9fcf1b19.png)
<sub>※ 図：[公式ドキュメント ExpressRoute を使用してオンプレミス ネットワークを拡張する](https://learn.microsoft.com/ja-jp/azure/architecture/reference-architectures/hybrid-networking/expressroute) より引用</sub>

* Azureのランニングコストに加え、接続プロバイダーの費用も発生。
*  ExpressRouteは、Microsoft Azure、Microsoft 365 などの Microsoft クラウドサービスへの接続できる
*  ExpressRoute 接続はパブリックなインターネットを経由しない閉域網。
*  安全性と信頼性が高く、待機時間も一定して高速。
*  Microsoftネットワークは、ExpressRoute回線のプライマリ接続とセカンダリ接続がActive/Acticeで冗長構成される。(高可用性設計にするにはオンプレミス側の考慮が重要)
*  接続プロバイダーと帯域幅オプションに応じて50Mbps～10Gbps。(切断を損なわずに変更可、[公式ドキュメント RxpressRoute回線の変更](https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-howto-circuit-portal-resource-manager#modify)を参照)
*  接続アップタイム [SLA](https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1)が約束される。
*  BGP[^BGP]によるレイヤー3接続。(詳細は[MS-Learn ルーティングの要件](https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-routing)参照)

 - 以下の3つのタイプの接続モデルが使用できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3315076/a6524d71-b2c6-edae-0c87-021fa8e2a2ae.png)
<sub>※ 図：[ExpressRoute接続モデル](https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-connectivity-models)より出典</sub>

| 接続モデル | 説明 |
|:-:|:-|
|Cloud Exchangedでのコロケーション接続|Cloud Exchangeがあるデータセンターにネットワーク機器を配置している場合、併置プロバイダーのイーサネット交換経由でAzure環境に仮想交差接続が可能。<br/>併設プロバイダーは通常、レイヤー2接続とレイヤー3接続両方を提供する。|
|P2Pのイーサネット接続|オフィスや自社が契約するオンプレミスデータセンターとAzureをP2Pのイーサネットリンクで接続できる。<br/>P2Pのイーサネットのプロバイダーはレイヤー2接続とレイヤー3接続両方を提供する。|
|Any 間 (IPVPN) ネットワーク<br/>(Any to Any接続)|オフィスや自社が契約するオンプレミスデータセンターとAzureを、IPVPNプロバイダーで統合する。<br/>AzureをWANに相互接続して、他のブランチオフィスのように見せることができる。 <br/>通常、WANプロバイダーは管理レイヤー3接続を提供する。|

#### 利用シーン
 * 高度なスケーラビリティを必要とする大規模なミッション クリティカルのワークロードを実行するハイブリッド アプリケーション。
 * 高度な低レイテンシー要件、広帯域幅を求められるアプリケーション。
 * 自社の情報セキュリティガイドラインにて、オンプレミスとAzure間で送信される全てのデータがインターネットを経由しないよう規制されている。
 
#### メリット
 * 接続プロバイダーに応じて、最大 10 Gbps の高帯域幅を使用可能。
 * 安全性と信頼性が高く、待機時間も一定して高速。
 * 要求が低い期間のコストを削減できる、帯域幅の動的スケーリングがサポートされます。ただし、このオプションがない接続プロバイダーもあります。
接続プロバイダーによっては、組織は各国のクラウドに直接アクセスできる場合があります。
 * 接続全体に、99.9%の可用性SLAが適用される。
#### 課題
 * ExpressRoute 接続の作成には、サード パーティ製接続プロバイダーの操作が必要。
 * オンプレミスの高帯域幅のルーターが必要。
#### 利用料金
 * ExpressRoute回線の受信データ転送料金は無料で帯域幅に応じた月額固定料金。
 * ExpressRoute回線でAzureプライベートピアリング接続した場合、ExpressRoute Gatewayの接続時間に応じて従量課金。

https://azure.microsoft.com/ja-jp/pricing/details/expressroute/#pricing

## 【実現方式③】専用線接続とVPN接続の併用
:::note info
通常はExpressRoute接続を使用し、ExpressRoute回線が切断した場合にAzure VPN GatewayのVPN接続にフェールオーバーする。
:::

#### 利用シーン
 * ExpressRoute の高帯域幅 及び 可用性の高いネットワーク接続を必要とするハイブリッド アプリケーション。
#### メリット
 * フェールバック接続はより低い帯域幅ネットワークとなりますが、ExpressRoute回線が切断されても可用性が高いままとなります。
#### 課題
 * VPN 接続と ExpressRoute 回線の両方を設定する必要があり、構成が複雑となる。
 * 冗長ハードウェア (VPN アプライアンス)、および有料の冗長 Azure VPN Gateway 接続が必要です。


# VPN設置にあたってのセキュリティチェック項目
Azure VPNを使用する場合、以下の手順でセキュリティ診断を実施することが推奨される。
* VPN設定の正当性の確認
    * 認証方式や暗号化設定が適切に構成されているか確認。
    * セキュリティプロトコル（IKEv2、OpenVPNなど）が最新のバージョンであることを確認。
    * 各VPNゲートウェイのアクセスポリシーやファイアウォール設定を確認し、不要なトラフィックを遮断するように構成されているか確認。
* トラフィックフローの監視とログの確認
    * VPN経由のネットワークトラフィックを監視し、許可されていない接続や異常なアクティビティがないかを確認。
    * ログファイルや監査ログを確認し、異常なアクセスや不審なパターンがないかを調査。
    * セキュリティインシデントや不正アクティビティの検知に備え、セキュリティ情報とイベント管理（SIEM）ツールを活用。
* アクセス制御と認証の強化
    * 多要素認証（MFA）を設定して、VPNへのアクセスに追加のセキュリティレベルを実装。
    * ユーザー権限やロールベースのアクセス制御（RBAC）を使用して、必要なユーザーだけがVPNに接続できるようにする。
    * VPNアカウントやプライベートキーや証明書などの認証資格情報の保護を確認し、不正なアクセスからの情報漏洩を防止する。
* 定期的な脆弱性スキャンとペネトレーションテスト
    * セキュリティ上の脆弱性を特定するために、定期的な脆弱性スキャンを実施します。
    * ペネトレーションテストを実施して、潜在的な攻撃ベクトルや脆弱性を特定し、修正措置を講じます。
* セキュリティポリシーの定期的な監査とアップデート
    * セキュリティポリシーと規制要件に合致するよう、VPN設定やネットワークセキュリティポリシーを定期的に監査し、必要に応じて更新や修正を行う。

これらの手順に従って、Azure VPNのセキュリティ診断を実施することで、VPN環境のセキュリティを向上させ、リスクを最小限に抑えられるでしょう。また、セキュリティ診断を定期的に実施することで、環境のセキュリティを継続的に評価することが重要です。

# まとめ
　全てのケースで専用接続が必要なわけでなく、小規模なサイトや小規模なブランチオフィスではS2SVPN接続が利用される。ただし、ExpressRoute接続を利用する多くの組織は、追加の冗長性レイヤーを実現するためにS2SVPN接続もデプロイしていると記載がある。([MS-LearnAzure VPN Gateway のしくみ](https://learn.microsoft.com/ja-jp/training/modules/intro-to-azure-vpn-gateway/3-how-vpn-gateway-works)参照)
　システムのグランドデザインを策定するにあたっては、まずはS2S VPN接続で要件を満たせそうか検討。送受信するデータ量を見積もった際に大容量の帯域幅が必要であったり、高可用性、低レイテンシ、より厳重なセキュリティ要件、コンプライアンス要件が出てきた場合に、ExpressRoute接続を検討し、併せてS2S VPN接続によるフェイルオーバーの設計を考えると良い。

[^rootVPN]: ルートベースVPN：VPNトンネルを介して暗号化する対象のパケットのIPアドレスセットを指定する。新しいサブネット作成などのトポロジ変更に対しての影響が限定される為、オンプレミスのデバイスに推奨される。
[^policyVPN]: ポリシーベースVPN：送信元と送信先はVPNポリシーで宣言し、各パケットを送信するトンネルインターフェースを指定する。
[^BGP]: BGP：Border Gateway ProtocolはAS(自律システム(Autonomous System))間で経路情報を交換するために設計されたルーティングプロトコル
[^SKU]: SKU：広義ではStock Keeping Unit（服に例えるとサイズ(L,M,S)のことで、AzureでのSKUは機能グレード/契約グレード/購買グレードのこと。
[^VPN接続]: VPN接続：階層のプロトコルで暗号化などの処理を行うことで、上位層のアプリケーションに依存せずに通信経路そのものをセキュアにする技術。つまり、仮想的な専用線(=トンネル)。
プロトコルはIPSecが標準的に使われているが、SSL/TSLを用いられる場合もある。
[^P2S接続]: P2S接続：クライアント端末から、直接 Azure上のVPNゲートウェイに対してVPN接続を行うサービス
[^IPSec]: IPSec：IP Security Protocol。パケットをIP層(OSI参照モデルのネットワーク層)で暗号化するプロトコルであり、VPNを実現する代表的な技術。
[^IKEv1]: IKEv1：Internet Key Exchange(鍵交換)はSAの作成、暗号化に用いる鍵の交換などに使用するプロトコル。IKEv1は独立したプロトコルとして500/UDPを使用する
[^IKEv2]: IKEv2：Internet Key Exchange(鍵交換)は IPsecとペアになり、ハッシュアルゴリズムを使用して暗号化とデータの整合性の形で認証と機密性を提供する。 IKEv2/iPsecは認証にX.509証明書を使用する。
[^IP-VPN]: IP-VPN：キャリアが独自に構築したIP網(専用線,xDSL,ATM,イーサネット等)を介してキャリアのIP-VPN網に接続する。MPLS(MultiProtocol Label Switching)と呼ばれるスイッチ技術を用いてパケットが転送される。通常のIPルーティングによるパケット転送方式に比べ、より高速な転送処理を実現する。