1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azureのサービスはバラバラにしか配置できないって前提で設計しろ

Last updated at Posted at 2025-04-04

2025年4月よりAzureを触りだしたので、思ったことをつらつらと。

Azureでリージョン跨ぎの仮想ネットワーク構成をするときに必ずハマるプライベートエンドポイント地獄

はじめに

Azure構成でセキュアなネットワークを組もうとしたときに、意外と見落とされがちなのが「サービスのリージョンがバラバラ問題」と「サービスエンドポイントが使えない問題」。

この記事では、実際に自分がハマった経験をもとに、App Service, Cosmos DB, Azure AI Search, Azure OpenAI, Functionsなどを含むリージョン跨ぎのVNet構成で陥りやすい落とし穴とその回避法をまとめます。


構成概要

利用サービス:

  • App Service(日本リージョン)
  • Azure Cosmos DB(海外リージョン)
  • Azure AI Search(海外リージョン)
  • Azure OpenAI(海外リージョン)
  • Azure Functions(Flexプラン、海外リージョン)

要件:

  • すべてのサービスを仮想ネットワーク経由でセキュアに接続
  • App ServiceとFunctionsはVNet統合
  • その他のサービスはPrivate Endpointで閉域接続

なぜプライベートエンドポイントが必須になるのか?

理由1:サービスエンドポイントは同一リージョンのみ

Azureのサービスエンドポイントはリージョンをまたぐと機能しないため、日本リージョンのApp Serviceから海外リージョンのCosmos DBなどへは接続不可になります。

理由2:Azureはサービスごとに対応リージョンが異なる

  • Azure OpenAIやFunctionsのFlexプランは日本リージョンに未対応(2025年現在)
  • Cosmos DBやAI Searchも機能対応が地域によってバラバラ

したがって、リージョン跨ぎが前提になるため、サービスエンドポイントではなく、Private Endpoint + Private DNSで接続する必要があるのです。


プライベートエンドポイント構成の要点

1. Private Endpoint を各サービスに対して作成

  • Cosmos DB、AI Search、OpenAI → それぞれのリージョンでPrivate Endpoint作成

2. Private DNSゾーンの作成とVNetへのリンク

  • 各サービスに対応するPrivate DNSゾーンを作成
  • 日本リージョンVNetと海外リージョンVNetの両方にリンク
  • 名前解決の不整合を防ぐため、手動でAレコード追加が必要な場合あり

3. App Service / FunctionsのVNet統合

  • App Service:従来通りRegional VNet IntegrationでOK
  • Functions:Flexプラン必須。従来の従量課金プランではVNet統合不可

SNATではなぜ代用できないのか?

SNAT(Source NAT)の特徴:

  • インターネット経由のアクセス(出るときにAzureの外部IPに変換)
  • 出口制御が難しい、IPが不定、セキュリティに弱い

問題点:

  • リージョン跨ぎではSNATでも接続できないサービスがある(CosmosやOpenAIなど)
  • セキュリティグループやFirewallで許可できないケースが発生

結論:

セキュリティ、安定性、リージョン跨ぎすべてを満たすには、Private Endpoint一択!


注意点まとめ

項目 内容
サービスエンドポイント リージョン跨ぎでは使えない
プライベートDNS 双方向にVNetリンク、手動登録も考慮
Azure Functions FlexプランのみVNet統合対応、日本未対応
ネットワークセキュリティ NSGやルートテーブルの設定に注意
コスト DNSゾーン・PE・データ転送で増加あり

補足:VNet外部からAzure OpenAIを使いたい場合は?

Azure OpenAI は Private Endpoint に対応しているとはいえ、クライアント側がVNet外にある場合は直接アクセスできないという制約があります。
このとき、Azure Functions を中継プロキシとして使う構成をとれば、以下のように完全対応可能です。

仕組み:

  1. 外部からのリクエストは HTTPS で Azure Functions に送る
  2. Functions は VNet統合されており、内部から Private Endpoint 経由で Azure OpenAI にリクエスト
  3. 応答を外部へ返却

メリット:

  • 外部公開は Functions のみ → エンドポイントを一元管理できる
  • Azure OpenAI への通信は VNet 内の Private Endpoint 経由 → セキュアで安定
  • Functions を認証ゲートとして使えば、認可・監査も可能

イメージ構成:

[ 外部クライアント ]
        |
    (HTTPS)
        |
[ Azure Functions (Flexプラン, VNet統合) ]
        |
    (Private Endpoint)
        |
[ Azure OpenAI (海外リージョン) ]

「VNet外部 ↔ OpenAI」構成は Functions 経由でセキュア&完全対応!


結論:Azureでは“できるものは全部プライベートエンドポイントにしておけ”

Azureの世界では「すべてのサービスを同じリージョンにまとめられる」と思うのは幻想です。サービス対応リージョンの制約により、リージョン跨ぎ構成はむしろ前提

その上でセキュアな接続を実現したいなら、Private Endpoint + DNS構成が唯一の解決策になります。


これからAzureで閉域接続構成を組もうとしてる人が、同じ地雷を踏まないことを祈って!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?