マルチテナント機能に関する Azure NAT Gateway の考慮事項
Azure NAT Gateway を使うと、Azure 仮想ネットワーク内でホストされているリソースからのアウトバウンド ネットワーク接続を制御できます。 この記事では、マルチテナント アプリケーションに影響を与える可能性がある送信元ネットワーク アドレス変換 (SNAT) ポートの枯渇を、NAT Gateway でどのように軽減できるかについて説明します。 また、NAT Gateway によってマルチテナント ソリューションからのアウトバウンド トラフィックに静的 IP アドレスがどのように割り当てられるのかも確認します。
注意
Azure Firewall のようなファイアウォールを使うと、アウトバウンド トラフィックの制御とログ記録を行うことができます。 Azure Firewall では、同様の SNAT ポートのスケーリングとアウトバウンド IP アドレスの制御も、NAT Gateway に提供されます。 NAT Gateway は低コストですが、機能も少なく、セキュリティ製品ではありません。
マルチテナント機能をサポートする NAT Gateway の機能
高スケールの SNAT ポート
SNAT ポートは、アプリケーションが同じポートで同じパブリック IP アドレスに対して同時に複数のアウトバウンド接続を行うと割り当てられます。 SNAT ポートは、ロード バランサー内の有限リソースです。 アプリケーションが同じホストに対して多数の独立した接続を開くと、使用可能なすべての SNAT ポートが消費される可能性があります。 この状況は "SNAT ポートの枯渇" と呼ばれます。
ほとんどのアプリケーションでは、SNAT ポートの枯渇は、アプリケーションによる HTTP 接続または TCP ポートの処理が正しくないことを示します。 ただし、一部のマルチテナント アプリケーションには、接続が適切に再利用されている場合であっても、SNAT ポートの制限を超える特定のリスクがあります。 たとえば、アプリケーションが同じデータベース ゲートウェイの内側にあるテナント固有の多くのデータベースに接続すると、この状況が発生する可能性があります。
ヒント
マルチテナント アプリケーションで SNAT ポートの枯渇が発生する場合は、アプリケーションが適切な方法に従っているかどうかを確認する必要があります。 HTTP 接続を再利用しており、外部サービスに接続するたびに新しい接続を作成し直していないことを確認します。 NAT Gateway をデプロイして問題を回避できる場合がありますが、コードがベスト プラクティスに従っていない場合は、今後も問題が発生する可能性があります。
Azure App Service や Azure Functions など、複数の顧客間で SNAT ポートの割り当てを共有する Azure サービスを使用すると、問題が悪化します。
SNAT の枯渇が発生していて、アプリケーションのコードによるアウトバウンド接続の処理は正しいと判断した場合は、NAT Gateway をデプロイすることを検討してください。 このアプローチは、Azure App Service と Azure Functions に基づいて構築されたマルチテナント ソリューションをデプロイするお客様によく使用されます。
個々の NAT ゲートウェイには複数のパブリック IP アドレスを接続でき、各パブリック IP アドレスには、インターネットへの送信に接続するための一連の SNAT ポートが用意されています。 1 つの NAT ゲートウェイでサポートできる SNAT ポートと IP アドレスの最大数については、「Azure サブスクリプションとサービスの制限、クォータ、制約」を参照してください。 この制限を超えてスケーリングする必要がある場合は、複数のサブネットまたは VNet に複数の NAT Gateway インスタンスをデプロイすることを検討できます。 サブネット内の各仮想マシンは、必要に応じて、使用可能な SNAT ポートのいずれかを使用できます。
アウトバウンド IP アドレスの制御
アウトバウンド IP アドレスの制御は、次のすべての要件が満たされる場合に、マルチテナント アプリケーションで役に立ちます。
- アウトバウンド トラフィックに対して専用の静的 IP アドレスを自動的に提供しない Azure サービスを使用しています。 このようなサービスには、Azure App Service、Azure Functions、API Management (従量課金レベルで実行されている場合)、Azure Container Instances が含まれます。
- テナントのネットワークにインターネット経由で接続する必要があります。
- テナントは、各要求の IP アドレスに基づいて受信トラフィックをフィルター処理する必要があります。
NAT Gateway インスタンスをサブネットに適用すると、そのサブネットからのすべてのアウトバウンド トラフィックで、NAT Gateway に関連付けられているパブリック IP アドレスが使われます。
注意
複数のパブリック IP アドレスを 1 つの NAT Gateway に関連付けると、それらの IP アドレスのいずれからでもアウトバウンド トラフィックが発生する可能性があります。 場合によっては、宛先でファイアウォール規則を構成する必要があります。 各 IP アドレスを許可するか、パブリック IP アドレス プレフィックス リソースを使って、同じ範囲内のパブリック IP アドレスのセットを使用する必要があります。
分離モデル
テナントごとに異なるアウトバウンド パブリック IP アドレスを指定する必要がある場合は、個別に NAT Gateway リソースをデプロイする必要があります。 各サブネットは、1 つの NAT Gateway インスタンスと関連付けることができます。 NAT Gateway をさらにデプロイするには、複数のサブネットまたは仮想ネットワークをデプロイする必要があります。 また、コンピューティング リソースの複数のセットをデプロイすることが必要な場合があります。
マルチテナント ネットワーク トポロジの設計方法について詳しくは、「マルチテナント ソリューションでのネットワークのアーキテクチャに関するアプローチ」をご覧ください。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- John Downs | FastTrack for Azure のプリンシパル カスタマー エンジニア
その他の共同作成者:
- Aimee Littleton | Azure NAT Gateway のプログラム マネージャー 2
- Arsen Vladimirskiy | FastTrack for Azure のプリンシパル カスタマー エンジニア
- Joshua Waddell | FastTrack for Azure のシニア カスタマー エンジニア
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。