Application Gateway と API Management を使用して API を保護する
組織は、Web アプリケーションに対する脅威の増大に直面しながら、API 優先の設計アプローチをますます採用しています。 API を保護するための包括的なセキュリティ戦略が必要です。特に、AI を利用した API を公開し、ゼロ トラスト アーキテクチャの原則を実装する場合です。 ゲートウェイ ルーティング パターンは、ネットワーク トラフィックを保護することで API セキュリティに 1 つのアプローチを提供します。 ゲートウェイは、柔軟なルーティング規則をサポートしながら、トラフィック ソースの場所とトラフィックの品質を制限します。 この記事では、Azure Application Gateway と Azure API Management を使用して API アクセスを保護する方法について説明します。
Architecture
この記事では、App Service Environment、Azure SQL Managed Instance、Azure Kubernetes Service (AKS) などのアプリケーションの基になるプラットフォームについては説明しません。 図のこれらの部分は、より広範なソリューションとして実装できる内容を示しています。 この記事では、網かけ領域、API Management、および Application Gateway について具体的に説明します。
このアーキテクチャの Visio ファイルをダウンロードします。
Workflow
Application Gateway は、サブネットのネットワーク セキュリティ グループ (NSG) が許可する HTTPS 要求を受け取ります。
Application Gateway 上の Web アプリケーション ファイアウォール (WAF) は、 geomatch カスタム ルールを含む WAF 規則に対して要求をチェックします。 要求が有効な場合、要求は続行されます。
Application Gateway は、要求を適切な バックエンド プールに送信する URL プロキシ メカニズムを設定します。 ルーティング動作は、API 呼び出しの URL 形式によって異なります。
api.<some-___domain>/external/*として書式設定された URL は、要求された API と対話するためにバックエンドに到達できます。api.<some-___domain>/*として書式設定された呼び出しは、シンクプールと呼ばれるデッド エンドに移動します。これは、ターゲットのないバックエンド プールです。Application Gateway レベルのルーティング規則により、
portal.<some-___domain>/*下のユーザーが開発者ポータルにリダイレクトされます。 開発者は、内部環境と外部環境の両方から API とその構成を管理できます。 または、開発者ポータルを完全にブロックすることもできます。
Application Gateway は、
api.<some-___domain>/internal/*下の同じ Azure 仮想ネットワーク内のリソースからの内部呼び出しを受け入れてプロキシします。API Management レベルでは、API は次のパターンで呼び出しを受け入れます。
api.<some-___domain>/external/*api.<some-___domain>/internal/*
このシナリオでは、API Management はパブリック IP アドレスとプライベート IP アドレスを使用します。 パブリック IP アドレスは、管理プレーンと外部仮想ネットワーク構成のランタイム API トラフィックに対するポート 3443 での管理操作をサポートします。 API Management がパブリック インターネットに接続しているバックエンドに要求を送信すると、要求の配信元としてパブリック IP アドレスが表示されます。 詳細については、 仮想ネットワーク内の API Management の IP アドレスを参照してください。
Components
Azure Virtual Network を使用すると、さまざまな種類の Azure リソースが互い、インターネット、およびオンプレミス ネットワークとプライベートに通信できます。 このアーキテクチャでは、Application Gateway はパブリック インターネット トラフィックをこのプライベート ネットワークにトンネルします。
Application Gateway は、Web アプリケーションへのトラフィックを管理する Web トラフィック ロード バランサーです。 この種類のルーティングは、 アプリケーション層 (OSI レイヤー 7) 負荷分散と呼ばれます。 このアーキテクチャでは、ゲートウェイはルーティングを提供し、一般的な Web ベースの攻撃ベクトルから保護する WAF をホストします。
API Management は、すべての環境にわたる API 用のハイブリッドマルチクラウド管理プラットフォームです。 API Management は、既存のバックエンド サービス用に一貫性のある最新の API ゲートウェイを作成します。 このアーキテクチャでは、API Management は完全プライベート モードで動作し、API コードとホストから横断的な問題をオフロードします。
Alternatives
他のサービスを使用して、同様のレベルのファイアウォールと WAF 保護を提供できます。
Azure Front Door には、分散型サービス拒否 (DDoS) 保護とグローバル負荷分散が組み込まれています。
Azure Firewall は、ネットワーク レベルの保護と一元化されたセキュリティ ポリシー管理を提供します。
Barracuda WAF などのパートナー ソリューションや他の WAF ソリューションは、Azure Marketplace で利用できます。
Recommendations
このアーキテクチャでは、ソリューション全体の実装と、API Management 仮想ネットワークの内外からの API アクセスのテストに重点を置いています。 統合プロセスの詳細については、「 Application Gateway を使用して内部仮想ネットワークに API Management を統合する」を参照してください。
バックエンドのプライベート リソースと通信するには、Application Gateway と API Management をリソースと同じ仮想ネットワークまたはピアリングされた仮想ネットワークに配置します。
プライベートな内部デプロイ モデルを使用すると、API Management は既存の仮想ネットワークに接続できます。これにより、そのネットワーク コンテキスト内から到達可能になります。 この機能を有効にするには、クラシック仮想ネットワークの挿入用に Developer レベルまたは Premium API Management レベルをデプロイします。 新しい仮想ネットワーク オプションの場合は、仮想ネットワーク統合またはインジェクション機能を備えた Standard v2 または Premium v2 レベルを使用します。
クライアントが別のサブスクリプションで動作している場合、または別の Microsoft Entra ID ディレクトリで管理されている場合 は、Azure Private Link for Application Gateway を使用して、サブスクリプションとリージョン間のクライアント仮想ネットワークから Application Gateway へのプライベート接続を提供します。
Azure Key Vault で Application Gateway 証明書を管理します。
サービスとの対話をカスタマイズするには、 正規名 (CNAME) エントリを使用できます。
Considerations
これらの考慮事項では、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。 詳細については、「 Well-Architected Framework」を参照してください。
Reliability
信頼性は、アプリケーションが顧客に対して行ったコミットメントを確実に満たすことができるのに役立ちます。 詳細については、「信頼性 設計レビューチェックリスト」を参照してください。
Application Gateway は、インスタンス数に関係なく、常に高可用性構成でデプロイされます。 ゾーンの誤動作の影響を軽減するために、複数の可用性ゾーンにまたがるアプリケーション ゲートウェイを構成できます。 詳細については、「 自動スケーリングと高可用性」を参照してください。
API Management サービス コンポーネントのゾーン冗長性を有効にして、回復性と高可用性を実現します。 ゾーン冗長性は、物理的に分離されたゾーン内のデータセンター間で API Management ゲートウェイとコントロール プレーンをレプリケートします。 この構成により、ゾーンの障害に対する回復性が向上します。 可用性ゾーンをサポートするには、API Management Premium レベルを使用する必要があります。
API Management ではマルチリージョンデプロイもサポートされており、1 つのリージョンがオフラインになった場合に可用性を向上させることができます。 詳細については、 マルチリージョンのサポートを参照してください。 このトポロジでは、Application Gateway はリージョン サービスであるため、リージョンごとに 1 つのアプリケーション ゲートウェイをデプロイします。
セキュリティ
セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティ 設計レビューチェックリスト」を参照してください。
Application Gateway セキュリティの詳細については、Application Gateway の Azure セキュリティ ベースラインに関するページを参照してください。
API Management セキュリティの詳細については、API Management の Azure セキュリティ ベースラインに関するページを参照してください。
常に次のセキュリティ対策を実装します。
最新の Open Web Application Security Project (OWASP) Core Rule Set (CRS) 3.2 以降で Azure Web アプリケーション ファイアウォール ポリシーを使用して、OWASP Top 10 の脅威を含む一般的な Web 脆弱性から保護します。
地理的な場所に基づいてトラフィックをブロックまたは許可するように WAF geomatch カスタム ルール を構成します。 このアプローチでは、DDoS 攻撃に対する保護が提供されます。
Azure Web Application Firewall と Application Gateway を使用して アプリケーション (レイヤー 7) DDoS 保護 を有効にして、帯域幅消費型攻撃やプロトコルベースの攻撃から保護します。 Azure DDoS Protection とアプリケーション設計プラクティスを組み合わせて、DDoS 軽減機能を強化します。
API Management のプライベート エンドポイントを 使用して、セキュリティで保護された受信接続を提供します。
Microsoft Defender for API を有効にして、API のセキュリティ体制を監視し、脅威を検出します。
悪意のあるボットを識別してブロックするように WAF ボット保護規則 を構成します。
コストの最適化
コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コストの最適化 設計レビューチェックリスト」を参照してください。
このアーキテクチャのコストは、いくつかの構成の側面によって異なります。
サービス レベル: コスト効率とパフォーマンスを向上させるには、API Management の Standard v2 レベルと Premium v2 レベルを検討してください。
スケーラビリティ: サービスは、特定の需要をサポートするためにインスタンスの数を動的に割り当てます。
ランタイム期間: コストは、アーキテクチャが継続的に実行されるか、毎月数時間しか実行されていないかによって異なります。
データ転送: マルチリージョンデプロイでは、リージョン間の転送コストが発生します。
WAF の処理: コストは、評価された要求とルールの数によって異なります。
次のコスト最適化戦略を検討してください。
API Management 従量課金レベルを使用して、使用量が少ない、実際の使用量に対してのみ支払う可変ワークロードを使用します。
Application Gateway の自動スケーリングを実装して、要求に基づいてインスタンス数を最適化します。
これらの側面を評価したら、 Azure 料金計算ツール を使用して価格を見積もります。
オペレーショナル エクセレンス
オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスのデザイン レビュー チェック一覧」を参照してください。
包括的な監視と可観測性を実装します。
Log Analytics を使用して詳細な API 分析を行えるように、Azure Monitor にログを送信するように API Management 診断 を構成します。
WAF イベントとパフォーマンス メトリックを監視するように Application Gateway 診断 を設定します。
API のパフォーマンスと可用性のしきい値に関する API Management アラート を実装します。
パフォーマンス効率
パフォーマンス効率とは、ユーザーの要求を効率的に満たすためにスケーリングするワークロードの能力を指します。 詳細については、「パフォーマンス効率 設計レビュー チェックリスト」を参照してください。
Application Gateway はこのアーキテクチャのエントリ ポイントとして機能し、Azure Web Application Firewall 機能には要求分析ごとに処理能力が必要です。 Application Gateway が必要に応じてコンピューティング能力を拡張できるようにするには、自動スケーリングを有効にします。 詳細については、「 Application Gateway の自動スケールとゾーン冗長性」を参照してください。 適切なサブネットのサイズ設定など、 Application Gateway インフラストラクチャ構成に関する製品ドキュメントの推奨事項に従ってください。 この方法により、完全なスケールアウトをサポートするのに十分な大きさのサブネットが確保されます。
API Management の次のパフォーマンス最適化を検討してください。
API Management の自動スケーリングを有効にして、増加する要求ボリュームに自動的に応答します。
API Management キャッシュ ポリシーを使用して、バックエンドの負荷を軽減し、応答時間を向上させます。
バックエンド サービスを過剰な負荷から保護するために 、API Management のレート制限 を実装します。
Standard v2 または Premium v2 レベルを使用して、パフォーマンスとネットワーク機能を向上させます。
次のステップ
API を設計するには、適切な Web API 設計 ガイドラインに従ってください。 API を実装するには、適切な Web API 実装 プラクティスを使用します。
関連リソース
- ゲートウェイ ルーティング パターン: 1 つのエンドポイントを使用して複数のサービスに要求をルーティングします。
- ゲートウェイ集約パターン: 複数の要求を 1 つの要求に集約します。
- ゲートウェイ オフロード パターン: API ゲートウェイに共有機能をオフロードします。
- URL パス ベースのルーティングの概要
- チュートリアル: Azure CLI を使用して URL パスベースのリダイレクトを使用するアプリケーション ゲートウェイを作成する