🔒

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