Azure PaaSアクセス時に設定できるネットワーク制限
はじめに
今回は、AzureでPaaSのサービスにアクセスする際に、直接インターネット経由で/サービスエンドポイント経由で/プライベートエンドポイント経由でアクセスする際の、通信経路と制御ポイントについてまとめます。
結構前になりますが、サービスエンドポイント・プライベートエンドポイントの違いはまとめたことがあるのですが、「何を基準に選ぶか」観点で書いたのでどこでどういう制御ができるかっていう比較がわかりづらいものでした。
今回は、ネットワークの通信制御を中心として語ってみたいと思います。
通信パターン
今回検討対象とするのは下記4パターンです。
VMなどの何かしらのコンピュートリソースから、Azure上のPaaSにアクセスする経路とその時の通信制御を考えます。
ちょっと概念的な図にしているので、技術的に正確なわけではありませんが、意図は順に説明していきます。
①(Azureの)外部からアクセス
オンプレミスや別のクラウドから、PaaSサービスのパブリックIP向けにアクセスします。
この場合はもちろん、接続元もパブリックIPです。
PaaSサービス側の接続元制限は、FWを有効にして「パブリックIP」を(allowに)指定して穴あけすることで実装できます。
②VNETからインターネット経由でのアクセス
VMの(暗黙的に設定されるなどした)パブリックIPアドレスから、パブリックなインターネットに通信が出て、PaaSサービスのパブリックIP向けにアクセスします。
出どころがAzureなだけで、①のパターンと基本的に変わりません。
(自分が管理している)Azureの範囲をグレーの網掛けの外としていますが、白い部分も(基本的には)マイクロソフト社の管理するネットワークの中ですので、この「状態が危険だ」と言っているわけではありません。
なお、この場合も①と同じくPaaSサービス側でFWを有効にして「パブリックIP」を(allowに)指定したFWを設定することで接続元制限を実装できます。
③VNETからサービスエンドポイント経由でのアクセス
通信元のVNETから、サービスエンドポイント経由でのアクセスを行います。PaaS側では接続元のVNETを指定することで、それ以外からのアクセスを禁止、という形で接続元制限を実装します。
この時、PaaSから見た接続元はVNETの中で付与されているプライベートIPアドレスとなりますが、①や②で使用したFWのIPアドレス指定はグローバルIPに対して設定する機能となっているため、「プライベートIPアドレス指定での制御はできない」ということになります。
なお、通信元であるVMから見た通信先は、①や②と同じくPaaSのグローバルIPとなっていますので、Azureの中のルーティングの世界で、インターネットに出るのか、サービスエンドポイント経由での通信となるかが制御されているものと想定されます。
④VNETからプライベートエンドポイント経由でのアクセス![]
このパターンの場合は、通信先がプライベートエンドポイントの持つプライベートIPアドレスとなり、PaaSから見た接続元もプライベートIPアドレスになります。
この場合は、PaaS側での接続元制限は「プライベートエンドポイント(プライベートリンク)経由でのアクセスに限る」といった設定で実装可能です。
例外系の話
基本的に上で書いてきた①~④のパターンとなるのですが、注意すべき通信パターンがあり、知っている例を2つほど挙げておきます。
SQL Databaseの場合
③(サービスエンドポイント経由)の通信パターンでSQL Databaseに接続する場合は、VNETと接続先SQL Databaseが同じリージョンでなければいけない、という制約があります。
VNETと別のリージョンのSQL Databaseに接続する場合は、④パターンにするなど検討が必要です。
ストレージアカウントの場合
②のAzureからインターネット経由…と思われるアクセスをする場合、通信先がストレージアカウントだと接続元のIPアドレスがプライベートのものになります。すなわち、IPアドレスをベースとしたPaaS側のFW設定は効果を発揮しません。こういう通信パターンとなる場合は③のサービスエンドポイント利用がオススメとなります。
おわりに
パブリックから、あるいはサービスエンドポイントやプライベートエンドポイント経由でPaaSに通信する際のネットワーク制限についてまとめました。
ドキュメントを探しに行けばすぐに見つかる情報ではあるのですが、一か所にはまとまってないので…。リンク集みたいな扱いでどなたかの役にたてれば幸いです。
Discussion