Azure Container Apps のデプロイをセキュリティで保護する

Azure Container Apps には、エンタープライズ レベルのセキュリティ機能を提供しながら、複雑なインフラストラクチャを管理せずにコンテナー化されたアプリケーションを実行する機能が用意されています。 このサービスをデプロイするときは、セキュリティのベスト プラクティスに従って、データ、構成、インフラストラクチャを保護します。

この記事のセキュリティに関する推奨事項では、ゼロ トラストの原則 ("明示的に確認する"、"最小限の特権アクセスを使用する"、"侵害を想定する") が実装されています。 包括的なゼロ トラスト ガイダンスについては、 ゼロ トラスト ガイダンス センターを参照してください。

この記事では、Azure Container Apps のデプロイを保護するためのセキュリティに関する推奨事項について説明します。

ネットワークのセキュリティ

ネットワーク セキュリティ制御は、コンテナー アプリ エンドポイントへの不正アクセスを防ぎ、アプリケーションと外部サービスの間にセキュリティで保護された通信境界を確立します。

  • 仮想ネットワークにコンテナー アプリをデプロイする: ネットワーク トラフィックを制御し、バックエンド リソースへのアクセスをセキュリティで保護するには、コンテナー アプリ環境を Azure Virtual Networks と統合します。 仮想ネットワーク統合により、アプリはインターネットベースの攻撃から保護しながら、プライベート ネットワーク内のリソースにアクセスできます。 「仮想ネットワークの構成」を参照してください。

  • 受信アクセスのプライベート エンドポイントを有効にする: Azure Private Link を使用してクライアント トラフィックを仮想ネットワーク経由でルーティングすることで、パブリック インターネットへの公開を排除します。 プライベート エンドポイントは、仮想ネットワークからプライベート IP アドレスを提供し、コンテナー アプリをネットワーク境界に効果的に取り込みます。 「Azure Container Apps 環境でプライベート エンドポイントを使用する」を参照してください。

  • 完全な分離のために内部環境を構成する: 内部 Container Apps 環境をデプロイして、仮想ネットワーク内のクライアントへのすべての受信アクセスを制限します。 内部環境では、パブリック インターネットから完全に分離され、コンテナー アプリとその他のネットワーク リソース間の安全な通信が可能になります。 Azure Container Apps 環境でのネットワークに関するページを参照してください。

  • パブリック ネットワーク アクセスを無効にする: プライベート エンドポイントを使用するときにパブリック ネットワーク アクセスを無効にするように Container Apps 環境を構成し、制御された仮想ネットワーク環境を通じてすべての接続が確実に行われるようします。 この構成により、承認されていない外部アクセスの試行が防止されます。 Azure Container Apps 環境での仮想ネットワークのプライベート エンドポイントと DNS に関するページを参照してください。

  • 送信トラフィック制御用に Azure Firewall を実装する: Azure Firewall とユーザー定義ルート (UDR) を使用して、コンテナー アプリからのすべての送信トラフィックを制御および監視し、承認された宛先でのみ通信が行われるようにします。 「ユーザー定義ルートの有効化 (UDR)」を参照してください。

  • 制限付き規則を使用してネットワーク セキュリティ グループを構成する: 必要な通信パターンに対して特定の許可規則を持つ既定の拒否ポリシーを実装することで、Container Apps サブネットとの間のトラフィック フローを制御するネットワーク セキュリティ グループを適用します。 NSG を使用した既存の VNet のセキュリティ保護に関するページを参照してください。

  • アプリ レベルの制限を構成する: コンテナー アプリケーションの安全な公開のためのクライアント証明書認証や IP 制限など、適切なセキュリティ制御を使用してイングレス設定を構成します。 インターネットからアクセスできないアプリケーションには、内部イングレスを使用します。 イングレスの概要を参照してください。

ID およびアクセス管理

ID とアクセス管理の制御により、承認されたユーザーとアプリケーションのみが、適切なアクセス許可と認証メカニズムを使用して Container Apps リソースにアクセスできるようになります。

  • 認証と承認を有効にする: Microsoft Entra ID やその他の ID プロバイダーを使用して組み込み認証を構成し、基本的なアクセス制御以外のコンテナー アプリ エンドポイントを保護します。 この構成では、一元化された ID 管理が提供され、カスタム承認規則がサポートされます。 Azure Container Apps での認証と承認に関するページを参照してください。

  • サービス接続にマネージド ID を使用する: コードまたは構成に資格情報を格納せずに、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を構成して、他の Azure サービスに対して認証を行います。 マネージド ID は、資格情報管理のオーバーヘッドを排除し、シークレットの自動ローテーションを提供します。 Azure Container Apps でのマネージド ID の使用に関するページを参照してください。

  • ロールベースのアクセス制御 (RBAC) の実装: Azure RBAC を使用して、Container Apps 管理操作にきめ細かなアクセス許可を提供します。 ユーザーの責任に基づいて、共同作成者、所有者、閲覧者などの最低限必要なロールをユーザーに割り当てます。 Azure Container Apps の Azure セキュリティ ベースラインを参照してください。

  • Microsoft Entra ID 認証の構成: 一元化された ID 管理に Microsoft Entra ID を使用し、条件付きアクセス ポリシーを有効にして、ユーザー、場所、デバイスの条件に基づいてアクセスを制御します。 この構成では、エンタープライズ レベルの認証機能と多要素認証のサポートが提供されます。 Azure Active Directory を使用した Azure Container Apps での認証と承認の有効化に関するページを参照してください。

  • セキュリティで保護された認証のためにトークン ストアを有効にする: 組み込みのトークン ストア機能を使用して、アプリケーション コードから安全に認証トークンを管理します。 トークン ストアはトークンの自動更新を提供し、カスタム トークン管理コードを排除することで攻撃対象領域を減らします。 「認証トークン ストアを有効にする」を参照してください。

データ保護

データ保護メカニズムは、暗号化、セキュリティで保護されたストレージ、シークレットと構成データの適切な処理を通じて、コンテナー アプリによって処理される機密情報を保護します。

  • すべての通信に HTTPS を適用する: すべてのデータ転送で TLS 暗号化が使用されるように、すべての HTTP トラフィックを HTTPS にリダイレクトするように Envoy プロキシを構成します。 イングレス構成で allowInsecure: false を設定して、暗号化されていない接続を防ぎます。 Azure Container Apps での HTTPS または TCP イングレスの設定に関するページを参照してください。

  • シークレット管理には Azure Key Vault を使用します。接続文字列、API キー、その他のシークレットをアプリケーション設定の代わりに Azure Key Vault に格納します。 Key Vault 参照を使用して実行時にシークレットを取得すると同時に、セキュリティと監査の機能が強化された一元化されたシークレット管理を維持します。 「Azure Key Vault から証明書をインポートする」を参照してください。

  • 相互トランスポート層セキュリティ (mTLS) を有効にする: mTLS を使用してサービス間のトラフィックを認証および暗号化し、クライアント ID とサーバー ID の両方を検証する双方向認証を提供します。 この機能により、コンテナー アプリ環境内でのサービス間通信のセキュリティが強化されます。 相互トランスポート層セキュリティ (mTLS) の使用を参照してください。

  • 適切なシークレット管理を実装する: 適切な分離とアクセス制御を使用して、Container Apps の組み込みのシークレット管理を使用します。 コンテナー イメージまたは環境変数にシークレットを直接格納しないようにします。代わりに、運用環境にシークレット参照と Key Vault 統合を使用します。 Azure Container Apps のセキュリティの概要を参照してください。

  • セキュリティで保護されたコンテナー イメージ ストレージ: 認証を有効にして Azure Container Registry にコンテナー イメージを格納し、ディザスター リカバリー用に geo レプリケーションを構成します。 イメージ アクセスの制御を維持するには、運用ワークロードにパブリック リポジトリの代わりにプライベート レジストリを使用します。 Azure Container Apps のアーキテクチャのベスト プラクティスを参照してください。

ログ記録と監視

包括的なログ記録と監視により、Container Apps の操作、セキュリティ イベント、およびパフォーマンス メトリックが可視化され、脅威の検出と運用上の監視が可能になります。

  • Azure Monitor Log Analytics 統合を有効にする: Log Analytics ワークスペース統合を構成して、環境内のすべてのコンテナー アプリからシステム ログとアプリケーション ログを収集および分析します。 この構成では、一元的なログ管理が提供され、セキュリティの監視とコンプライアンスの監査がサポートされます。 詳細については、「 Log Analytics を使用した Azure Container Apps でのログの監視」を参照してください。

  • 診断設定の構成: 診断設定を有効にして、コンテナー アプリのログとメトリックを Azure Monitor ログ、ストレージ アカウント、または Event Hubs にストリーミングし、一元的な分析と長期的なリテンション期間を実現します。 この構成では、セキュリティ調査とコンプライアンス要件がサポートされます。 詳細については、「 Azure Container Apps の可観測性」を参照してください。

  • Azure Monitor アラートの設定: 失敗した認証、異常なトラフィック パターン、高いエラー率、リソース消費の異常など、疑わしいアクティビティのアラートを構成します。 アクション グループを使用して、潜在的なセキュリティ インシデントに対する自動応答を有効にします。 詳細については、「 Azure Monitor アラート」を参照してください。

  • リアルタイム監視のためにログ ストリーミングを有効にする: ログ ストリーミング機能を使用して、コンテナーからほぼリアルタイムのシステム ログとコンソール ログを表示し、すぐにトラブルシューティングとセキュリティ イベント検出を行います。 この機能は、セキュリティ インシデント時の迅速な対応機能を提供します。 詳細については、「 ログ ストリーミング」を参照してください。

  • Application Insights 統合の実装: Application Insights 統合を構成して、コンテナー アプリケーションから詳細なテレメトリ、パフォーマンス メトリック、カスタム トレースをキャプチャします。 この統合により、セキュリティ分析とパフォーマンスの最適化のための包括的な可観測性が提供されます。 詳細については、 Azure Container Apps での Azure Functions の概要に関するページを参照してください。

コンプライアンスとガバナンス

コンプライアンスとガバナンスの制御により、Container Apps のデプロイは、適切な構成管理と監査機能を通じて、規制要件と組織のポリシーを満たすことができます。

  • Azure Policy 定義を適用する: 組み込みの Azure Policy 定義を使用して、仮想ネットワークのデプロイ、認証要件、HTTPS 強制などのセキュリティ構成を監査および適用します。 ポリシーは、環境全体で一貫したセキュリティ体制を維持するのに役立ちます。 詳細については、「 Azure Container Apps の Azure Policy の組み込み定義」を参照してください。

  • リソースのタグ付けを実装する: コスト管理、セキュリティ監視、コンプライアンス追跡、ガバナンスのために、Container Apps リソースに一貫性のあるリソース タグを適用します。 タグを使用して、データ分類、所有者情報、規制要件を識別します。 詳細については、 Azure Container Apps の Azure セキュリティ ベースラインに関するページを参照してください。

  • 条件付きアクセス ポリシーを構成する: Microsoft Entra 条件付きアクセス ポリシーを使用して、認証機能を使用する場合のユーザー ID、場所、デバイスのコンプライアンス、リスク評価に基づいて Container Apps へのアクセスを制御します。 詳細については、 Azure Container Apps の Azure セキュリティ ベースラインに関するページを参照してください。

  • 監査証跡とコンプライアンスに関するドキュメントを維持する: 包括的なログ記録では、診断設定とアクティビティ ログを使用して、規制コンプライアンスとセキュリティ調査に関するすべてのコンテナー アプリの管理アクション、構成の変更、アクセス試行がキャプチャされるようにします。 詳細については、 Azure Container Apps の Azure セキュリティ ベースラインに関するページを参照してください。

バックアップと回復

バックアップと復旧の戦略により、コンテナー アプリの構成が保護され、適切なディザスター リカバリー計画と複数リージョンデプロイ戦略によってビジネス継続性が確保されます。

  • 高可用性のためにゾーン冗長性を有効にする: Container Apps 環境でゾーンの冗長性を構成し、リージョン内の複数の可用性ゾーンにレプリカを自動的に分散させます。 この構成により、ゾーン レベルの障害から保護され、アプリケーションのアップタイムが向上します。 Azure Container Apps の信頼性に関するページを参照してください。

  • 複数リージョンのデプロイを実装する: リージョンの停止時の自動フェールオーバー機能に Azure Front Door または Azure Traffic Manager を使用して、複数の Azure リージョンにコンテナー アプリをデプロイします。 この戦略により、重要なワークロードに対する継続的なアプリケーションの可用性が確保されます。 リージョン間のディザスター リカバリーとビジネス継続性に関する情報を参照してください。

  • デプロイの自動化のためのコードとしてのインフラストラクチャの使用: Azure Resource Manager テンプレート、Bicep、またはその他のインフラストラクチャをコード ツールとして使用して自動デプロイ プロセスを実装し、インシデント後または別のリージョンでコンテナー アプリ構成をすばやく再デプロイできるようにします。 Azure Container Apps - ランディング ゾーン アクセラレータの管理と操作に関するページを参照してください。

  • geo 冗長コンテナー レジストリの構成: geo レプリケーションが有効な Azure Container Registry を使用して、ディザスター リカバリー シナリオで複数のリージョン間でコンテナー イメージを使用できるようにします。 この構成は、レジストリの停止から保護し、複数リージョンのデプロイをサポートします。 Azure Container Apps - ランディング ゾーン アクセラレータの管理と操作に関するページを参照してください。

  • ディザスター リカバリー手順のテスト: アプリケーションのデプロイ、構成の復元、フェールオーバー プロセスを含むバックアップと復旧の手順を定期的にテストして、有効性を検証し、ディザスター リカバリー計画のギャップを特定します。 学習した教訓に基づいてテスト結果を文書化し、手順を更新します。 バックアップとディザスター リカバリーのテストを参照してください。

サービス固有のセキュリティ

Container Apps には、コンテナー化されたワークロード、マイクロサービス アーキテクチャ、およびクラウドネイティブ アプリケーション専用に設計された独自のセキュリティ機能が用意されています。

  • 環境レベルのセキュリティ境界を構成する: Container Apps 環境を使用して、さまざまなアプリケーションとワークロードの間にセキュリティ境界を作成します。 未承認のアクセスと構成の誤差を防ぐために、運用環境と非運用環境を分離します。 環境の概要を参照してください。

  • 適切なスケーリングとリソース制限の実装: リソース枯渇攻撃を防ぎ、アプリケーション間で公平なリソース割り当てを確保するために、適切なスケーリング ルールとリソース制限を構成します。 セキュリティの問題を示す可能性がある通常とは異なるパターンのスケーリング イベントを監視します。 Azure Container Apps でのスケーリング 規則の設定に関するページを参照してください。

次のステップ