1. 非公開APIとは?
アプリや社内システムからだけ呼ばれるAPIのこと。
不特定のインターネットへは公開しません。Azure内の閉域網で通信を作ることが可能なため、データ漏洩などのリスクなく安全性が確保できます。
Azure Functions でAPI構築することでAzure内リソース横断やセキュリティを担保することができます。
2. なぜ Azure Functions?
- サーバーレスで小回りが利く:HTTP・Blob・TimerなどのイベントでAPI処理を利用するのに最適。
- ネットワークを閉じられる設計:Private Endpointで Inbound を閉域、VNet Integrationで Outbound を社内に限定など設計次第で柔軟に作成可能。
3. 全体アーキテクチャ(図解)
Azure Functions をバックエンドとして採用する最大のメリットの一つが、
KeyValue(Key Vault)や DB と“シームレスに連携できる設計”が標準で揃っていることです。
特に、今回の構成図のように Functions が Azure VNet 内(Azure_Vnet2)で動作する場合、通信の全てを閉域網(Private Link / VNet Integration)で完結できるため、API から重要データへアクセスする際のセキュリティとパフォーマンスが担保されます。
これにより:
● セキュアで漏れにくいアーキテクチャを標準機能だけで構築可能
● ローテーションの自動化・更新容易性も高い
● 複数の Functions や APIM で同じ仕組みを共通化できる

4. DB(例:PostgreSQL)との連携
Azure FunctionsはVNet 内に存在するDB(PostgreSQL / SQL / MySQL など)へのアクセスを 閉域網で安全に行うことができます。
具体的には:
- Functions → DB 通信は VNet 経由のプライベートルート
- DB には Public Access 無効 / Private Access のみで構築可能 API が DB を直接叩く構成より、セキュリティ & 可搬性が高い
さらに、Functions の特徴としてステートレスでスケールアウトが容易なため、DB 負荷を考慮した接続プール管理(pg-pool など)とも相性が良いです。
5. Functions を中心に KeyValue / DB を集約するメリット
構成図の通り、Azure Functions が中心(ハブ)となり、
KeyValue・DB・オンプレ/他システムをつなぐことで次のメリットがあります:
| メリット | 説明 |
|---|---|
| セキュリティ高い | すべて閉域網で完結(PrivateEndpoint / VNet Integration) |
| 拡張性が高い | フロントや他システムが増えても、Functions 経由で統一的に接続 |
| 接続情報管理が簡単 | Key Vault に集約し、Functions/APIMで一元管理 |
| 開発効率が良い | APIレイヤが標準化し、DB〜KeyVault連携の定型化が容易 |
6. KeyValue(Azure Key Vault)とのセキュア連携
Functions では、接続文字列やシークレットをアプリ設定に“直書き”せず、
Key Vault 参照(Key Vault Reference) を利用できます。
- Functions は Managed Identity で Key Vault にアクセス
- アプリ設定には
@Microsoft.KeyVault(SecretUri=…)を書くだけ - 秘密情報がアプリ構成やコードに露出しない
7. Functions監視は「App Insights+Log Analytics」の二刀流
Application Insights は、リクエストがどの処理で遅延・失敗したのかを追跡したり、DBや外部サービスとのつながりを可視化する機能に強く、Log Analytics は横断ログの蓄積と KQL 分析に強い。App InsightsをLog Analyticsワークスペースに連携しておくのが実運用の定番です。
8. この構成を一言でまとめると?
Azure Functions をハブに据え、Key Vault でシークレットを管理し、DB と閉域網で安全につなぐ“セキュアでシンプルなバックエンド基盤”が作れる。
これは Azure で非公開 API を構築する際の定石パターンでもあり、
多数の企業システムで採用される強い構成です。
最後に
Azure Functions の非公開 API 構成って、最初は複雑そうに見えて整理しやすい構造なんですよね。
この記事が少しでも誰かの参考になれば幸いです。