ソリューションのアイデア
この記事ではソリューションのアイデアについて説明します。 クラウド アーキテクトはこのガイダンスを使用すると、このアーキテクチャの一般的な実装の主要コンポーネントを視覚化しやすくなります。 ワークロードの特定の要件に適合する、適切に設計されたソリューションを設計するための出発点として、この記事を使用してください。
このソリューションでは、エンド ツー エンドの暗号化を提供するアーキテクチャで、相互 TLS (mTLS) を介して Azure Kubernetes Service (AKS) と Azure API Management を統合する方法を示します。
概念
Azure API Management を使用すると、複数のメカニズムを介してバックエンド サービスに安全にアクセスできます。 トランスポート (ネットワーク) 層では、 Azure API Management はクライアント証明書をバックエンドに提示し バックエンド サーバーによって提示される証明書をさらに検証できます。 この相互 TLS 認証シナリオでは、次の手順が実行されます。
- Azure API Management はバックエンド サーバー (このシナリオでは、AKS で実行されているイングレス コントローラー) に接続します。
- バックエンド サーバー (AKS のイングレス コントローラー) は、サーバー証明書を提示します。
- Azure API Management は、サーバー証明書を検証します。
- Azure API Management は、クライアント証明書をサーバー (AKS のイングレス コントローラー) に提示します。
- サーバー (AKS のイングレス コントローラー) は、Azure API Management によって提示される証明書を検証します。
- サーバー (AKS のイングレス コントローラー) は、Azure API Management を介してプロキシされる要求へのアクセスを許可します。
Architecture
このアーキテクチャの Visio ファイル をダウンロードします。
データフロー
- ユーザーがインターネットからアプリケーション エンドポイントに対して要求を行います。
- Azure アプリlication Gateway はトラフィックを HTTPS として受信し、Azure Key Vault から以前に読み込まれたパブリック証明書をユーザーに提示します。
- Application Gateway では、秘密キーを使用してトラフィックの暗号化を解除し (SSL オフロード)、Web アプリケーション ファイアウォールの検査を実行し、公開キーを使用してトラフィックを再暗号化 (エンドツーエンド暗号化) します。
- Application Gateway は、バックエンド プールに基づいてルールとバックエンド設定を適用し、HTTPS 経由で API Management バックエンド プールにトラフィックを送信します。
- API Management は、プライベート IP アドレスを使用して内部仮想ネットワーク モード (Developer または Premium レベルのみ) にデプロイされます。 カスタム ドメイン PFX 証明書を使用して HTTPS としてトラフィックを受信します。
- Microsoft Entra ID は認証を提供し、OAuth と必要に応じてクライアント証明書の検証を介して API Management ポリシーを適用します。 Azure API Management でクライアント証明書を受信して確認する手順 を参照してください。
- API Management は、AKS イングレス コントローラーによって信頼されているクライアント証明書を使用して、HTTPS 経由で AKS プライベート クラスターのイングレス コントローラーにトラフィックを送信します。
- AKS イングレス コントローラーは HTTPS トラフィックを受信し、Azure API Management によって提示されるクライアント証明書を検証します。 ほとんどのエンタープライズ レベルのイングレス コントローラーでは、mTLS がサポートされています。 AKS イングレス コントローラーは、API Management によって検証される SSL サーバー証明書を使用して Azure API Management に応答します。
- イングレス コントローラーは、cert.pem と key.pem を使用して TLS シークレット (Kubernetes シークレット) を処理します。 イングレス コントローラーは、秘密キーを使用してトラフィックの暗号化を解除します (オフロード)。 要件に基づいてセキュリティが強化されたシークレット管理の場合は、CSI ドライバーと AKS の統合を使用できます。
- イングレス コントローラーは秘密キーを使用してトラフィックを再暗号化し、HTTPS 経由で AKS ポッドにトラフィックを送信します。 要件に応じて、AKS イングレスを HTTPS バックエンドまたはパススルーとして構成できます。
Components
- Application Gateway。 Application Gateway は、Web アプリケーションへのトラフィック管理に使用できる Web トラフィック ロード バランサーです。 このシナリオでは、Azure アプリlication Gateway は、SSL 終了とコンテンツ検査を実行するレイヤー 7 WAF です。
- AKS。 AKS は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理のためのフル マネージド Kubernetes クラスターを提供します。 このシナリオでは、バックエンド ロジック/マイクロサービスが AKS にデプロイされます。
- Azure Container Registry。 Container Registry は、Azure 上の管理されたプライベートな Docker レジストリ サービスです。 Container Registry を使用して、クラスターにデプロイされるプライベート コンテナー イメージを格納できます。
- Microsoft Entra ID。 このシナリオでは、クライアント要求に OAuth 2.0 トークンを含めることができます。検証 Microsoft Entra トークン ポリシーを使用して Microsoft Entra ID に対して Azure API management によって承認されます。
- マネージド ID。 マネージド ID により、Microsoft Entra ID 認証をサポートするリソースに接続するときに使用される Microsoft Entra のマネージド ID がアプリケーションに自動的に提供されます。 このシナリオでは、AKS マネージド ID を使用して、Azure SQL Database や Azure Cosmos DB などのバックエンド システムに対する認証を行うことができます。
- Azure SQL データベース。 SQL Database は、クラウド向けに構築されたフル マネージドのインテリジェントなリレーショナル データベース サービスです。 SQL Database を使用すると、最新のクラウド アプリケーションのための高可用性かつ高パフォーマンスのデータ ストレージ層を作成できます。 このシナリオでは、構造化データのデータ永続化レイヤーとして Azure SQL データベースが使用されます。
- Azure Cosmos DB Azure Cosmos DB は、スケーラブルでハイ パフォーマンスのアプリケーションを構築および最新化するためのフル マネージド NoSQL データベース サービスです。 このシナリオでは、半構造化データのデータ永続化レイヤーとして Azure Cosmos DB が使用されます。
- API Management。 Azure API Management を使用して、開発者、パートナー、従業員に API を発行できます。 このシナリオでは、Azure API Management を使用して、AKS でホストされているマイクロサービスとビジネス ロジックへのセキュリティで保護されたマネージド アクセスを提供します。
- Azure Private Link。 Private Link は、Microsoft ネットワークにデータを保持できるように、Azure でホストされている PaaS サービスへのアクセスを提供します。 このシナリオでは、AKS から Azure SQL データベース、Azure Cosmos DB、および Azure Container Registry へのネットワーク接続は、プライベート リンクを介して行われます。
- Key Vault。 Key Vault により、キーやその他のシークレットのセキュリティを強化できます。 このシナリオでは、TLS 証明書は Azure Key Vault に格納されます。
- Defender for Cloud。 Defender for Cloud は、クラウド セキュリティ態勢管理とクラウド ワークロード保護のためのソリューションです。 クラウド構成全体の弱点を検出し、環境のセキュリティの強化を支援し、進化する脅威からマルチクラウドとハイブリッドの環境全体のワークロードを保護できます。 このシナリオでは、Azure Container Registry と Azure Kubernetes Service にデプロイされたコンテナー イメージは、 Microsoft Defender for containers によってスキャンされます。
- Azure Monitor。 Monitor を使用すると、Azure およびオンプレミス環境からテレメトリ データを収集、分析、処理できます。 Monitor により、アプリケーションのパフォーマンスと可用性を最大限に高め、事前に問題を特定できます。
- Log Analytics。 Log Analytics を使用すると、Azure Monitor ログのデータを使用して、ログ クエリを編集および実行できます。 このシナリオでは、Azure アプリlication Gateway、AKS、API Management、Azure SQL Database、Azure Cosmos DB などの診断ログをログ分析ワークスペースに送信して、要件に基づいてログを分析できます。
- Application Insights。 Application Insights は、Azure Monitor の拡張機能です。 アプリケーション パフォーマンス監視を提供します。 Azure Kubernetes Service の Azure API 管理とコンテナーを Application Insights に統合できるため、アプリケーション レベルのトレースを取得および分析できます。
- Microsoft Sentinel. Microsoft Sentinel は、組み込みの AI を使用する、クラウドネイティブのセキュリティ情報およびイベント マネージャー プラットフォームです。大量のデータを分析するのに役立ちます。 このシナリオでは、Microsoft Sentinel を SIEM ソリューションとして使用して、ソリューションのセキュリティを強化します。
- Azure Bastion。 Azure Bastion は、パブリック IP アドレスを介して公開することなく、VM への RDP および SSH アクセスを提供するフル マネージド サービスです。 ローカルまたはピアリングされた仮想ネットワークにサービスを直接プロビジョニングして、そのネットワーク内のすべての VM に対応できます。 このシナリオでは、プライベート ネットワーク リソースは、Azure Bastion 経由でジャンプ サーバーを介してアクセスされます。
- Azure プライベート DNS。 Azure プライベート DNS を使用すると、カスタム DNS ソリューションを追加せずに、仮想ネットワークのドメイン名を管理および解決できます。 このシナリオでは、API 管理、Azure Cosmos DB、Azure SQL データベース、および Azure Container Registry の名前解決にプライベート DNS ゾーンが使用されます。
シナリオの詳細
このソリューションを使用すると、エンド ツー エンドの暗号化を提供するアーキテクチャで、mTLS を介して AKS と API Management を統合できます。
考えられるユース ケース
- mTLS を介した API Management および Application Gateway との AKS 統合。
- API Management と AKS の間のエンド ツー エンドの mTLS。
- エンド ツー エンド TLS を必要とする組織向けの高いセキュリティが求められるデプロイ。 たとえば、金融部門の組織には、このソリューションが有益です。
この方法を使用して、次のシナリオを管理できます。
- API Management を内部モードでデプロイし、Application Gateway を使用して API を公開する。
- 高いセキュリティと HTTPS 経由のトラフィックのために mTLS とエンド ツー エンドの暗号化を構成する。
- 強化されたセキュリティ プライベート エンドポイントを使用して Azure PaaS サービスに接続する。
- Defender for Containers のセキュリティを実装する。
相互 TLS 構成
Azure API Management でバックエンド証明書を構成する方法については、「 Azure API Management のクライアント証明書認証を使用したセキュリティで保護されたバックエンド サービス を参照してください。
管理された AKS イングレス コントローラーでも mTLS を構成必要があります。 AKS が APIM に提示するサーバー証明書は、Kubernetes シークレットとして直接インポートすることも、Key Vault シークレットを介してアクセスすることもできます。 AKS マネージド イングレス コントローラーでのサーバー証明書の構成の詳細については、「 アプリケーション ルーティング アドオンを使用してカスタム ドメイン名と SSL 証明書を設定する 」を参照してください。 イングレス コントローラーでクライアント証明書認証を実行して、API Management によって提示される証明書を検証できます。 API Management によって提示されるクライアント証明書を確認するには、CA 証明書を AKS クラスターに提供する必要があります。 CA 証明書を使用してクライアント証明書の検証を適用するには、イングレス コントローラーで注釈を構成する必要がある場合があります。 詳細については、 client 証明書認証の手順と 注釈付きの サンプル イングレス YAML ファイル を参照してください。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Saswat Mohanty | シニア クラウド ソリューション アーキテクト
その他の共同作成者:
- Mick Alberts | テクニカル ライター
- Arshad Azeem | シニア クラウド ソリューション アーキテクト
- Raj Penchala | プリンシパル クラウド ソリューション アーキテクト
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次のステップ
- Application Gateway
- AKS のロードマップ
- AKS のドキュメント
- AKS ラーニング パス
- API Management ラーニング パス
- API Management ランディング ゾーン アクセラレータ
- Microsoft Defender for Cloud ブログ