Azureにおけるプライベート通信について
Azureで使用しているリソース間の通信をインターネット経由させず、プライベート化する設定作業を、一時期かなりやっていました。
いずれ役立つときが来るかもしれないので、そのときのメモをまとめました。自分用のメモではありますが、何かの参考になれば幸いです。
前提
Azureでは、特に設定しない限り、基本的に全ての通信がパブリック(=インターネット)に向かいます。
そのため、通信がインターネットを経由しないプライベートな環境を実現するには、意図的な設定が必要です。
AWSやOCIでは出口を作らない限りインターネットには出られないようなので、その辺りは真逆の思想になっていると思われます。
要素
私が行っていた作業では、仮想ネットワーク、ピアリング、プライベートDNSゾーン、仮想ネットワークリンク、プライベートエンドポイント、VNET統合といった登場人物がいました。
以降では、これらについて説明していきます。
似た作業で、内部ロードバランサーを作成したときに、プライベートリンクサービスというものを使ったのですが、「Azureマネージドではなく、Azure上(AKS上など)に独自構築したサービスへのプライベート通信を確立する際に必要になるもの(?)らしい」という漠然とした理解しかできていないため、ここで書くのはやめておきます。
各論
仮想ネットワーク
仮想ネットワーク(VNET)はプライベートIPを持つネットワークです。
複数のVNETは、同じテナント・同じサブスクリプション・同じリソースグループにあったとしても、互いに独立しています。
VNET同士をピアリングすることで、ひとつのネットワークのように通信することができます。
その際は、ピアリングするVNET同士のIPセグメントが重複していない必要があります。
ピアリング
先にも書きましたが、ピアリングを実施する際には、IPセグメントの重複を避けなければなりません。
重複NGは、ピアリングしようとしているVNET同士だけでなく、対象のVNETに既にピアリングされている別のVNETとの重複であってもNGです。
より詳細な条件があるかもしれませんが、IPが被るのはNG、なのは間違いないです。
トラフィック転送
ピアリングするとVNET同士でプライベート通信できるようになりますが、ピアリング先がさらに別のネットワークとつながっていて、そちらとも通信できるようにしたい場合は、ピアリングの設定でトラフィックの転送を許可する必要があります。
トラフィックの転送については、詳しく理解できていないのですが、以下の2パターンがあるようです。
別VNETへの転送の場合
こちらのパターンでは、トラフィック転送の受信を許可することで通信が可能になります。
Azure外部への転送の場合
こちらのパターンでは、VNET内に設置された仮想ネットワークゲートウェイなどを通ってAzure外と通信するので、そのための設定も必要です。
仮想ネットワークゲートウェイは、Azure外部のネットワークとの接続に用いられるもののようです。
インターネットを通るVPNか、専用線のExpressRouteか、という選択肢があり、プライベートIPを使う場合は、ExpressRouteを選ぶ必要があるようです。
トラフィック転送の受信許可に加えて、ゲートウェイに関する設定が必要です。
(VNET_A)→(VNET_B)→(Azure外部)と通信する場合、VNET_Aでは「ピアリング先のゲートウェイを使用するために自VNETを有効化」(外部に向かうため)、VNET_Bでは「自VNETにあるゲートウェイにピアリング先へのトラフィック転送を許可」(戻りの通信を通すため)が必要になります。
プライベートDNSゾーン
FQDN指定でプライベートのリソースにアクセスする場合は、プライベートDNSゾーンにレコードを追加する必要があります。
(プライベートではないDNSゾーンでも名前解決はできるものの、プライベート環境のFQDNやIPが表に出てしまって好ましくない、だったかもしれません。)
プライベートDNSゾーンは、そのプライベートDNSゾーンに対して仮想ネットワークリンク済みのVNETからのみ参照可能となるDNSサーバのようなものです。
Azureリソースの種類ごとに名前(FQDNのドメイン部分)が決まっていて、ひとつのVNETが複数の同名プライベートDNSゾーンとリンクすることはできません。
VNETをまたぐ場合、プライベートDNSゾーン周りの設定を行うと、名前解決はできるようになりますが、それに加えてピアリングも実施しなければ、ネットワークとしては通信が通りません。
プライベートエンドポイント
プライベートエンドポイントは、Azureマネージドのサービスをプライベート化するための出入り口のようなものです。
対象のリソースに紐づけて作成し、VNET上に配置します。VNET統合することでプライベートDNS統合も行われ、マネージドサービスへのプライベート接続が可能になります。
VNET統合はプライベートエンドポイント作成時でなく、後からやることも可能だったかもしれませんが、作成時にやっておくほうが手間がかからないと思われます。
接続先となるマネージドサービスのプライベートエンドポイントと接続元リソース(VMなど)が別々のVNETにいる場合は、VNETのピアリングも必要になります。
この記事が気に入ったらサポートをしてみませんか?