はじめに
Azure PaaSサービスへの接続方法を整理したくなり、記事を書いてみました。
アクセス方法に迷った際はこちらを参照いただければと思います。
接続方法の説明
1. プライベートエンドポイント
プライベートエンドポイントは、プライベートIPアドレスを利用し、VNet内-PaaSサービス間でプライベートでセキュアな通信を実現する機能です。これにより、VNetやオンプレミス環境からPaaSサービスに対して、インターネットを経由せずにプライベートな通信でアクセスすることが可能になります。
本サービスは利用時間及び受信・送信データに応じて料金が発生します。
利用料:0.01$/時間(1ヵ月利用し続けた場合、約1,100円)
受信データ処理:0.01$/GB
送信データ処理:0.01$/GB
2. サービスエンドポイント
サービスエンドポイントはパブリックIPを利用し、Azureが提供する専用通信経由でVNet内からAzure PaaSサービスへの接続を実現します。また、自前のVNetからの通信に限定してアクセス制御することができるため、インターネット経由に比べセキュアです。さらに、Azure内部で最適化された経路で接続されますので、ネットワーク全体のパフォーマンスも向上します。
本サービスは追加料金なしで利用できます。
オンプレミスからのアクセスについて
サービスエンドポイントは原則、VNet内の特定のサブネットからのアクセスが制限されていますので、オンプレミスからサービスエンドポイントを経由してPaaSサービスへアクセスすることはできません。
アクセスしたい場合はパターン4のインターネット経由の接続が必要です。
既定では、仮想ネットワークからのアクセスに限定された Azure サービス リソースは、オンプレミスのネットワークからはアクセスできません。 オンプレミスからのトラフィックを許可する場合は、オンプレミスまたは ExpressRoute からのパブリック IP アドレス (通常は NAT) を許可する必要もあります。 これらの IP アドレスは、Azure サービス リソースの IP ファイアウォール構成を使用して追加できます。
3. VNet統合
VNet統合は、「PaaSサービスをVNet内に配置できる機能」と思われがちですが、正確には「PaaSサービスがVNetにアクセスできるようになる機能」です。留意事項として、VNet統合を使ってVNet内のリソースからPaaSサービスへ通信することはできませんので、その場合はプライベートエンドポイントを利用する必要があります。
本サービスは追加料金なしで利用できます。
4. インターネット経由の接続
最もイメージしやすい接続方法かと思います。
パブリックIPアドレスを使用し、インターネット経由でアクセスする方法です。誰でもどこからでもアクセス可能となります。
本サービスは追加料金なしで利用できます。
サービスエンドポイント・プライベートエンドポイントの使い分け
上記の説明を聞くとこれらの使い分けが難しいと思いますが、セキュリティ・コスト面で選択するのが良いと思います。また、サービスエンドポイントに対応するサービスは限られるため、後に記載されている一覧表を参考にしてみてください。
・機密性の高いデータを扱っており、料金がかかってもよいのでプライベートな環境で通信したい。
→プライベートエンドポイント
・そこまで重要なデータを扱っていない。できるだけクラウド費用を安く抑えたい。
・利用サービスがサービスエンドポイントに対応している。
→サービスエンドポイント
主要PaaSサービスで利用可能な通信サービス一覧
各サービスで利用可能なサービスを一覧化しました。
プライベートエンドポイント | サービスエンドポイント | VNet統合 | インターネット | |
---|---|---|---|---|
Storage Account | 〇 | 〇 | × | 〇 |
Database for PosgreSQL・MySQL(Flexible Server) | 〇 | 〇 | 〇※1 | 〇 |
SQL Database | 〇 | × | 〇※1 | 〇 |
Cosmos DB | 〇 | 〇 | × | 〇 |
Cache for Redis | 〇 | × | △ ※2 | 〇 |
Functions | 〇 | 〇 | 〇 | 〇 |
Container Apps | 〇 | × | 〇 | 〇 |
App Service | 〇 | 〇 | 〇 | 〇 |
OpenAI Service | 〇 | 〇 | × | 〇 |
API Management | 〇 | × | 〇 | 〇 |
※1 Database for PosgreSQL・MySQL、SQL Databaseは例外的に、VNet統合を利用することで、VNet内のリソースから当該DBにもアクセスすることができます。(おそらく他のVNet統合とは異なるサービスなのかもしれません。)
https://learn.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-networking-private
※2 Cache for RedisもDatabase for PosgreSQL・MySQLと同様、VNet内のリソースから当該DBへのアクセスができます。ただし、MS公式からはエラーが発生しやすくなるため、VNet統合の利用は非推奨とされています。
https://learn.microsoft.com/ja-jp/azure/azure-cache-for-redis/cache-how-to-premium-vnet
(おまけ)Database for PostgreSQLへの通信経路
運用保守端末からPaaS型DBへのセキュアな通信経路を記載します。
主な選択肢としては以下2つになるかと思います。
①運用保守端末→Bastion→Private Endpointを経由してアクセス
②運用保守端末→VPN Gateway→Private Endpointを経由してアクセス