Azure Container Apps を 仮想ネットワーク統合とプライベートエンドポイントで閉域化する
はじめに
Azure Container Apps は、コンテナ化されたアプリケーションをサーバーレスな形で運用するためのPaaS(Platform as a Service)です。
エンタープライズ企業などで利用する場合、インターネットへの公開リスクや内部通信のセキュリティ確保のために、ネットワークの閉域化が求められる場合があるでしょう。
この記事では、Azure Container Apps を「仮想ネットワーク統合」と「プライベートエンドポイント」を活用して閉域化する実機検証したのでまとめます。
Azure Container Appsとは
Azure Container Apps は、完全にマネージドされた環境でコンテナ化アプリケーションを実行できるサービスです。以下のような特徴があります。
- サーバーレスな運用: インフラ管理の手間を大幅に軽減し、需要に応じて自動スケーリングを行います。
- イベント駆動型: リクエストやイベントに応じて動的にコンテナを起動し、効率的なリソース利用が可能です。
- 開発の柔軟性: マイクロサービスアーキテクチャやコンテナベースのアプリケーション設計に最適化され、複数のコンテナやサービス間の連携が容易になります。
また、Azure Container Apps は Kubernetes をベースに構築されていますが、その複雑な運用や管理作業は完全に抽象化され、ユーザーは直接 Kubernetes の操作を行う必要がありません。つまり、Kubernetes をラッピングしてマネージドに提供されるため、より簡単にコンテナアプリケーションのデプロイや運用ができます。
Kubernetesとは
Kubernetes は、Google によって開発されたオープンソースのコンテナオーケストレーションプラットフォームです。コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化することで、複雑な運用作業を大幅に簡素化します。大規模なシステムにおいては、複数のコンテナを効率的に管理し、高い可用性と柔軟なリソース利用を実現できるため、業界内で広く利用されています。
閉域化とは
クラウド上では、アプリケーションやデータがインターネットと接続された環境に存在します。しかし、すべての機能を公開状態にしてしまうと、不正アクセスやデータ漏洩のリスクが高まります。そこで「閉域化」という考え方が重要になってきます。
閉域化 とは、必要な通信だけを許可し、不必要なパブリックアクセスを遮断することで、システム全体の安全性を高める手法です。Azure Container Apps を閉域化するためには、以下の2つの主要な手法を利用します。
- 仮想ネットワーク統合: コンテナアプリを専用の仮想ネットワーク内に配置し、内部通信をセキュリティグループやアクセスルールで管理します。
- プライベートエンドポイント: サービスへのアクセスをインターネット経由ではなく、専用のプライベートネットワーク経由に制限することで、外部からのアクセスリスクを低減します。
以下のような構成図となります。
※一部Kubernetesの概念は省略した構成図です。
仮想ネットワークには、二つのサブネットがあります。
サブネット名 | 説明 |
---|---|
左側のサブネット | Azure Container Apps 環境の仮想ネットワーク統合先 |
右側のサブネット | プライベートエンドポイントを配置するサブネット |
設定方法
以下二つのパターンでの設定方法を紹介します。また、コマンドではなくAzure Portal からの設定とします。
- コンサンプションタイプ
- ワークロードプロファイルタイプ
プランと環境の違いによる仮想ネットワーク統合の設定の違い
Container Apps には2種類の環境があり、それぞれでサポートされるプランやネットワーク統合の設定に重要な違いがあります。
コンサンプション タイプ
-
サポートされるプラン:
-
消費プラン
- ゼロへのスケールをサポートするサーバーレス アプリを実行し、アプリが使用するリソースに対してのみ料金を支払います。
-
消費プラン
-
特徴:
- ユーザー定義ルート (UDR)、NAT Gateway 経由のエグレス、リモート ゲートウェイ経由のピアリング、およびその他のカスタムエグレスはサポートされない
- 最小サブネットサイズ: /23
ワークロード プロファイル タイプ
-
サポートされるプラン
-
従量課金プラン
- ゼロへのスケールをサポートするサーバーレス アプリを実行し、アプリが従量課金プロファイルで使用するリソースに対してのみ支払います。
-
専用プラン
- 専用のワークロード プロファイルを使用して、カスタマイズされたハードウェアを使用してアプリを実行し、コストの予測可能性を高めることもできます。
-
従量課金プラン
-
特徴:
- ユーザー定義ルート (UDR) の利用が可能
- NAT Gateway 経由のエグレス通信をサポート
- 最小サブネットサイズ: /27
コンサンプションタイプでの設定
仮想ネットワークとサブネットの作成
そのため、事前に仮想ネットワークを作成します。
仮想ネットワーク名とリージョンを指定します。
IPアドレスタブで、仮想ネットワークのレンジとサブネットのレンジを指定します。
ここで指定するサブネットは、仮想ネットワーク統合先とします。
コンサンプションタイプの場合、サブネットサイズは/23以上にしましょう。
設定を確認して作成します。
プライベートエンドポイントを配置するサブネットも作成しましょう。
作成した仮想ネットワークのサブネット画面に遷移し、サブネットを追加します。
サブネットレンジは**/27**とします。
仮想ネットワークのサブネットは以下のようになります。これにて仮想ネットワークとサブネットの作成は完了です。
Azure Container Apps の作成
次に、Azure Container Apps を作成します。
Azure Portal でのリソース作成時の設定で構成できます。
Container Apps environmentで、「新しい環境の作成」をクリックします。
Container Apps 環境を作成する際に、仮想ネットワーク統合を有効にします。
ワークロードプロファイルは、デフォルトのままにします。
ネットワークタブで以下を設定します。ここで仮想ネットワーク統合とプライベートエンドポイントの設定をします。
- パブリックネットワークアクセス:無効
- 自分の仮想ネットワークを使用する:はい
- 仮想ネットワーク:作成した仮想ネットワーク
- サブネット:作成したサブネットを選択
- プライベートエンドポイントの有効化:はい
- プライベントエンドポイント名:任意の名前
- プライベートエンドポイントの仮想ネットワーク:作成した仮想ネットワーク
- サブネット:プライベートエンドポイントを配置するサブネットを選択
Container Appsの作成画面の戻ります。
コンテナーの設定では、今回はネットワーク観点の検証のため、クイックスタートイメージを使用します。
設定を確認して、作成します。
コンサンプションタイプにおける仮想ネットワーク統合とプライベートエンドポイントの設定は以上です。
作成されたContainer Apps 環境で以下のように設定されています。
ワークロードプロファイルタイプでの設定
次に、ワークロードプロファイルタイプでの閉域化設定です。
コンサンプションタイプと同様に、仮想ネットワークとサブネットを作成してから、Azure Container Apps を作成します。
仮想ネットワークとサブネットの作成
仮想ネットワークを作成します。
IPアドレスタブで、仮想ネットワークのレンジとサブネットのレンジを指定します。
ここで指定するサブネットは、仮想ネットワーク統合先とします。
ワークロードプロファイルタイプの場合、サブネットサイズは/27以上にしましょう。
設定を確認して作成します。
プライベートエンドポイントを配置するサブネットも作成しましょう。
作成した仮想ネットワークのサブネット画面に遷移し、サブネットを追加します。
サブネットレンジは /27 とします。
仮想ネットワークのサブネットは以下のようになります。これにて仮想ネットワークとサブネットの作成は完了です。
Azure Container Apps の作成
次に、Azure Container Apps を作成します。
リソースグループ、Container Apps 環境名、リージョンを指定します。
Container Apps environmentで、「新しい環境の作成」をクリックします。
Container Apps 環境を作成します。
ワークロードプロファイルタブで、「ワークロード プロファイルの追加」をクリックします。
ワークロードプロファイルのサイズは最小のDedicated-D4を選択します。
自動スケーリングは最初数とします。(min:0 - max:1)
Container Apps 環境の作成画面に戻ると、以下のようになります。
ネットワークタブで以下を設定します。ここで仮想ネットワーク統合とプライベートエンドポイントの設定をします。
- パブリックネットワークアクセス:無効
- 自分の仮想ネットワークを使用する:はい
- 仮想ネットワーク:作成した仮想ネットワーク
- サブネット:作成したサブネットを選択
- プライベートエンドポイントの有効化:はい
- プライベントエンドポイント名:任意の名前
- プライベートエンドポイントの仮想ネットワーク:作成した仮想ネットワーク
- サブネット:プライベートエンドポイントを配置するサブネットを選択
- サブネット:プライベートエンドポイントを配置するサブネットを選択
Container Appsの作成画面の戻ります。
コンテナーの設定では、今回はネットワーク観点の検証のため、クイックスタートイメージを使用します。
設定を確認して、作成します。
ワークロードプロファイルタイプにおける仮想ネットワーク統合とプライベートエンドポイントの設定は以上です。
作成されたContainer Apps 環境で以下のように設定されています。
まとめ
コンサンプションタイプとワークロードプロファイルタイプの二つのパターンで、Azure Container Apps を仮想ネットワーク統合とプライベートエンドポイントで閉域化する方法を紹介しました。
まだプレビュー機能ですが、Azure Container Apps の仮想ネットワーク統合とプライベートエンドポイントを利用することで、セキュアな環境でコンテナ化されたアプリケーションを運用することが可能です。
GAが待ち遠しいですね。
Discussion