Azure API Management ランディング ゾーンのアーキテクチャ
API は、内部システム内と外部チャネルの両方で、組織とその顧客がサービスにアクセスする方法にますます不可欠になっています。 内部的には、API は基幹業務 (LoB) アプリケーション、独自のソリューション、およびパートナー統合へのアクセスを容易にします。 外部的には、API の収益化を通じて生産性を向上させ、収益を生み出すことに重点を置く組織が増えています。 この傾向を考えると、Azure API Management は、内部と外部の両方の利害関係者に対する API の標準化されたガバナンス、公開、および監視の基本要素として機能します。
Azure Application Gateway は、API のセキュリティ チェックポイントとして機能します。 ユーザーがインターネット経由で直接接続できるようにする代わりに、すべてのトラフィックをアプリケーション ゲートウェイ経由でルーティングします。 このセットアップでは、API の保護に役立つ追加のアクセス制御が追加されます。 この方法では、1 つの API Management インスタンスを使用して、組織内の内部 API と組織外の外部 API の両方をサポートしながら、公開されている API をゲートウェイの背後でセキュリティで保護することができます。
注
このアーキテクチャは、Azure 向けクラウド導入フレームワーク の Azure ランディング ゾーンでの API Management のガイダンスの基礎として機能します。
アーキテクチャ
このアーキテクチャの Visio ファイルをダウンロードします。
このアーキテクチャでは、 ポリシーが Azure ランディング ゾーン参照実装 から配置され、その構造が管理グループから下方に向かっていることを前提としています。
Workflow
パブリック IP アドレスは、外部トラフィックのエントリ ポイントとして機能するアプリケーション ゲートウェイに割り当てられます。 そのエンドポイントは、カスタム ドメインを介して API を公開します。
アプリケーション ゲートウェイは、独自のサブネットにデプロイされ、受信要求を検査およびフィルター処理するために Web アプリケーション ファイアウォール (WAF) ポリシーによって保護されます。
トラフィックは、アプリケーション ゲートウェイから別の API Management サブネットに存在する API Management (Premium) にルーティングされます。 API Management インスタンスは内部モードで構成されているため、直接パブリック アクセスは禁止されます。
プライベート エンドポイントは、仮想ネットワークにのみ公開されているバックエンド アプリケーション サーバーに API Management を安全に接続するために使用されます。 API Management では、Azure キー コンテナーなどの依存関係も定期的に接続されます。 通常、このプライベート接続はすべて、専用プライベート エンドポイント サブネット内のエンドポイントで行われます。
Log Analytics ワークスペースと Application Insights は、ログ記録、監視、テレメトリ用に統合されています。
コンポーネント
API Management は、ハイブリッド環境とマルチクラウド環境間でサービスを管理できるマネージド サービスです。 内部ユーザーと外部ユーザーの両方による API の監視と使用に対する制御とセキュリティを提供します。 このアーキテクチャでは、API Management はバックエンド アーキテクチャを抽象化するためのファサードとして機能します。
Application Gateway は、レイヤー 7 のロード バランサーと WAF として機能するマネージド サービス です。 Application Gateway は内部 API Management インスタンスを保護します。これにより、内部モードと外部モードの両方を使用できます。 このアーキテクチャでは、API Management によって API がセキュリティで保護され、Application Gateway によって WAF などの補完的な機能が追加されます。
プライベート ドメイン ネーム システム (DNS) ゾーン は、カスタム DNS ソリューションを実装しなくても、仮想ネットワーク内のドメイン名を管理および解決できる Azure DNS の機能です。 プライベート DNS ゾーンは、 仮想ネットワーク リンクを介して 1 つ以上の仮想ネットワークにアラインできます。 このアーキテクチャでは、仮想ネットワーク内で適切な名前解決を確保するためにプライベート DNS ゾーンが必要です。
Application Insights は、開発者が異常を検出し、問題を診断し、使用パターンを理解するのに役立つ拡張可能なアプリケーション パフォーマンス管理サービスです。 Application Insights は、拡張可能なアプリケーション パフォーマンス管理とライブ Web アプリの監視を備えています。 .NET、Node.js、Java、Python など、さまざまなプラットフォームがサポートされています。 Azure、オンプレミス、ハイブリッド環境、またはその他のパブリック クラウドでホストされているアプリがサポートされます。 このアーキテクチャでは、Application Insights はデプロイされたアプリケーションの動作を監視します。
Log Analytics はクラウドベースのデータ分析ツールであり、必要に応じて Azure portal 内から Azure Monitor ログ内のデータに対してログ クエリを編集および実行できます。 開発者は、単純なクエリを実行してレコードを取得したり、Log Analytics を使用して高度な分析を行ったり、結果を視覚化したりできます。 このアーキテクチャでは、Log Analytics は分析とレポートのためにすべてのプラットフォーム リソース ログを集計します。
Azure Key Vault は、シークレットを安全に格納してアクセスするクラウド サービスです。 これらのシークレットの範囲は、API キーとパスワードから、証明書と暗号化キーまでです。 このアーキテクチャでは、Key Vault は Application Gateway が使用する Secure Sockets Layer (SSL) 証明書を格納します。
代替
API Management インスタンスが接続するバックエンド サービスでは、いくつかの代替手段を使用できます。
Azure App Service は、Web アプリを構築、デプロイ、スケーリングする、フル マネージドの HTTP ベースのサービスです。 .NET、.NET Core、Java、Ruby、Node.js、PHP、Python がサポートされています。 アプリケーションは、Windows または Linux ベースの環境で実行およびスケーリングできます。
Azure Kubernetes Service (AKS) は、フル マネージド クラスターを提供するマネージド Kubernetes オファリングです。 統合された継続的インテグレーションと継続的デリバリー (CI/CD) と、組み込みのガバナンスとセキュリティを実現します。
Azure Logic Apps は、自動化されたワークフローを作成して実行するクラウドベースのプラットフォームです。 詳細については、 参照アーキテクチャの例を参照してください。
Azure Container Apps は、サーバーレス プラットフォーム上でマイクロサービスとコンテナー化されたアプリケーションを実行できる、フル マネージドのサーバーレス コンテナー サービスです。
マルチリージョンデプロイの場合は、 Azure Front Door を使用して、ユーザーとアプリケーションの静的および動的な Web コンテンツとの間に高速で信頼性の高い安全なアクセスを提供することを検討してください。
Application Gateway で API を保護する方法のその他の例については、「 Application Gateway と API Management を使用した API の保護」を参照してください。
考慮事項
これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「 Well-Architected Framework」を参照してください。
[信頼性]
信頼性は、アプリケーションが顧客に対して行ったコミットメントを確実に満たすことができるのに役立ちます。 詳細については、「信頼性の設計レビュー チェックリスト」を参照してください。
各リージョンの 2 つ以上の可用性ゾーンに分散された API Management の少なくとも 2 つの スケール ユニット をデプロイします。 容量メトリックを監視し、1 つの可用性ゾーン内のユニットが失われた場合でも操作を続行できるように、十分な容量ユニットをプロビジョニングします。
Premium レベルは可用性ゾーンとマルチリージョンデプロイをサポートしているため、Premium レベルを使用することをお勧めします。 この機能は、1 つのリージョンまたはゾーンがダウンした場合でも、サービスを引き続き実行できることを意味します。 これらの機能は、障害や災害時にアプリケーションを保護するのに役立ちます。
ディザスター リカバリーの場合は、システム割り当て ID ではなく、ユーザー割り当てマネージド ID を使用して API Management を設定します。 リソースを再デプロイまたは削除しても、ID とそのアクセス許可は維持されるため、アクセスをより簡単に復元できます。 Azure Pipelines を使用してバックアップを自動化します。 信頼性を高めるために、複数のリージョンにサービスをデプロイする必要があるかどうかを判断します。
仮想ネットワーク ピアリングは、リージョン内で強力なパフォーマンスを提供しますが、ネットワークのスケーラビリティの制限は 500 です。 さらにワークロードを接続する必要がある場合は、 ハブスポーク設計 または Azure Virtual WAN を使用します。
セキュリティ
セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティの設計レビュー チェックリスト」を参照してください。
API Management 検証ポリシーは、 OpenAPI スキーマに対する API 要求と応答を検証します。 これらの機能は WAF の代わりではありませんが、一部の脅威に対する追加の保護を提供できます。 検証ポリシーを追加するとパフォーマンスに影響する可能性があるため、パフォーマンス ロード テストを使用して API スループットへの影響を評価することをお勧めします。
Microsoft Defender for API は、API Management で 公開されている API のライフサイクル全体の保護、検出、応答を提供します。 主な機能の 1 つは、機械学習ベースの検出とルールベースの検出を使用して、実行時の異常観察によって Open Web Application Security Project (OWASP) API Top 10 の脆弱性の悪用を検出することです。
API Management ワークスペースは、 API の整理と分離に役立ちます。 この方法を使用すると、アクセスして管理できるユーザーを簡単に制御できます。 各ワークスペースには独自のアクセス許可セットを設定できるため、アクセスを必要とするユーザーまたはチームのみに制限できます。 この分離により、偶発的な変更や不正アクセスのリスクが軽減され、より安全な API 環境がサポートされます。
API Management ポリシーの機密情報を保護するには、API Management ポリシーで Key Vault シークレットを名前付き値として使用 します。
内部 API Management インスタンスの外部アクセスには Application Gateway を使用して、API Management インスタンスを保護し、WAF を使用して一般的な Web アプリケーションの悪用や脆弱性から保護し、ハイブリッド接続を有効にします。
ハイブリッド接続とセキュリティの強化をサポートするために、仮想ネットワークに API Management ゲートウェイをデプロイします。
仮想ネットワーク ピアリングにより、リージョンのパフォーマンスが向上し、仮想ネットワーク間のプライベート通信が可能になります。
WAF を使用する場合は、着信トラフィックの悪意のある動作を検査するレイヤーを導入します。 この保護は、SQL インジェクションやクロスサイト スクリプティングなどの一般的な脅威をブロックするのに役立ちます。 Application Gateway と分散型サービス拒否 (DDoS) 保護は、過剰なトラフィックや接続の洪水による API Management インスタンスの過負荷を防ぐのに役立ちます。 詳細については、「 Application Gateway と API Management を使用した API の保護」を参照してください。
Azure Functions のプライベート エンドポイントを使用すると、仮想ネットワーク内のプライベート IP アドレス経由で関数アプリに安全に接続できます。 この設定により、関数がパブリック インターネットに公開されるのを防ぎ、不正アクセスのリスクが軽減されます。 このアーキテクチャでは、プライベート エンドポイントにより、ネットワーク内の信頼されたリソースのみが Azure Functions にアクセスできるようになります。
コストの最適化
コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。
このデプロイでは、 Premium プラン を使用して、可用性ゾーンと仮想ネットワークの機能をサポートします。 専用インスタンスが不要な場合は、ネットワーク アクセスと可用性ゾーンの両方をサポートする Flex Consumption を使用することもできます。 このデプロイの 料金計算ツール を確認します。
概念実証やプロトタイプの場合は、Developer や Standard などの他の API Management レベルを使用することをお勧めします。
オペレーショナル エクセレンス
オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスのデザイン レビュー チェック一覧」を参照してください。
API Management の構成を Azure Resource Manager テンプレートとして表し、コードとしてのインフラストラクチャ (IaC) アプローチを採用します。
CI/CD プロセスを使用して、API Management の構成を管理、バージョン管理、更新します。
API Management インスタンスの状態を検証するのに役立つカスタム正常性プローブを作成します。 URL
/status-0123456789abcdefを使用して、アプリケーション ゲートウェイで API Management サービスの共通の正常性エンドポイントを作成します。キー コンテナーで更新された証明書は API Management で自動的にローテーションされ、4 時間以内の変更が反映されます。
Azure DevOps や GitHub などの DevOps ツールを使用する場合、クラウドでホストされるエージェントまたはランナーはパブリック インターネット経由で動作します。 このアーキテクチャの API Management は内部ネットワークに設定されているため、仮想ネットワークにアクセスできる DevOps エージェントを使用する必要があります。 DevOps エージェントは、アーキテクチャ内の API に対するポリシーやその他の変更をデプロイするのに役立ちます。 これらの CI/CD テンプレート を使用してプロセスをパーツに分割し、開発チームが各 API の変更をデプロイできるようにします。 DevOps ランナーは、これらの個々のデプロイを処理するテンプレートを開始します。
このシナリオのデプロイ
このアーキテクチャは、GitHub で入手できます。 これには、必要なすべての IaC ファイルと デプロイ手順が含まれています。
共同作成者
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
プリンシパルの作成者:
非公開の LinkedIn プロファイルを表示するには、LinkedIn にサインインします。