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 などのアプリケーションの基になるプラットフォームについては説明しません。 図のこれらの部分は、より広範なソリューションとして実装できる内容を示しています。 この記事では特に、網掛けされた領域である、API Management と Application Gateway について説明します。
このアーキテクチャの Visio ファイルをダウンロードします。
Workflow
Application Gateway は、サブネットのネットワーク セキュリティ グループ (NSG) が許可する HTTPS 要求を受け取ります。
Application Gateway 上の Web アプリケーション ファイアウォール (WAF) は、 Geomatch カスタム ルールを含む WAF 規則に対して要求をチェックします。 要求が有効な場合、要求は続行されます。
Application Gateway sets up a URL proxy mechanism that sends the request to the proper backend pool. たとえば、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 では、パブリックとプライベートの 2 種類の IP アドレスが使用されます。 パブリック IP アドレスは、管理プレーンと外部仮想ネットワーク構成のランタイム API トラフィックに対するポート 3443 での管理操作用です。 API Management がパブリック インターネットに接続しているバックエンドに要求を送信すると、要求の配信元としてパブリック IP アドレスが表示されます。 詳細については、「VNet 内の API Management サービスの IP アドレス」を参照してください。
Components
Azure Virtual Network を使用すると、さまざまな種類の Azure リソースが互い、インターネット、およびオンプレミス ネットワークとプライベートに通信できます。 このアーキテクチャでは、Application Gateway はパブリック インターネット トラフィックをこのプライベート ネットワークにトンネルします。
Azure Application Gateway は、Web アプリケーションへのトラフィックを管理する Web トラフィック ロード バランサーです。 この種類のルーティングは、アプリケーション レイヤー (OSI レイヤー 7) の負荷分散と呼ばれます。 このアーキテクチャでは、ゲートウェイはルーティングを提供し、一般的な Web ベースの攻撃ベクトルから保護する Web アプリケーション ファイアウォール (WAF) をホストします。
Azure API Management は、すべての環境にわたる API 用のハイブリッドマルチクラウド管理プラットフォームです。 API Management では、既存のバックエンド サービス用に一貫性のある最新の API ゲートウェイが作成されます。 このアーキテクチャでは、API Management は完全プライベート モードで動作し、API コードとホストから横断的な問題をオフロードします。
Recommendations
このソリューションでは、ソリューション全体を実装し、API Management 仮想ネットワークの内外から API アクセスをテストすることに重点を置いています。 API Management 仮想ネットワーク統合プロセスの詳細については、「 Application Gateway を使用して内部仮想ネットワークに API Management をデプロイする」を参照してください。
バックエンドのプライベート リソースと通信するには、Application Gateway と API Management がリソースと同じ仮想ネットワーク内またはピアリングされた仮想ネットワーク内にある必要があります。
プライベートな内部デプロイ モデルを使用すると、API Management は既存の仮想ネットワークに接続でき、そのネットワーク コンテキスト内から到達可能になります。 To enable this feature, deploy either the Developer or Premium API Management tiers for classic virtual network injection. For newer virtual network options, use Standard v2 or Premium v2 tiers with virtual network integration or injection capabilities.
クライアントが別のサブスクリプションに存在する場合、または別の Entra ID ディレクトリで管理されている場合は、 Application Gateway Private Link を使用して、サブスクリプションとリージョン間のクライアント仮想ネットワークから Application Gateway へのプライベート接続を提供します。
Azure Key Vault で Application Gateway 証明書を管理します。
To personalize interactions with the services, you can use CNAME entries.
Alternatives
他のサービスを使用して、同様のレベルのファイアウォールと Web アプリケーション ファイアウォール (WAF) 保護を提供できます:
- DDoS 保護とグローバル負荷分散が組み込まれた Azure Front Door
- Azure Firewall for network-level protection and centralized security policy management
- Barracuda Web Application Firewall などのパートナー ソリューション、または Azure Marketplace で使用可能なその他の Web アプリケーション ファイアウォール ソリューション
Considerations
これらの考慮事項は、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。 詳細については、Microsoft Azure Well-Architected Framework のに関するページを参照してください。
Reliability
信頼性により、アプリケーションは顧客に対するコミットメントを確実に満たすことができます。 詳細については、「信頼性 設計レビューチェックリスト」を参照してください。
Azure Application Gateway は、インスタンス数に関係なく、常に高可用性の方法でデプロイされます。 ゾーンの誤動作の影響を回避するために、複数の可用性ゾーンにまたがるよう Application Gateway を構成できます。 詳細については、「自動スケーリングと高可用性」を参照してください。
API Management サービス コンポーネントのゾーン冗長性を有効にして、回復性と高可用性を実現します。 ゾーン冗長では、物理的に分離されたゾーン内にある複数のデータセンター間で API Management ゲートウェイとコントロール プレーンをレプリケートすることで、ゾーン障害に対する回復性を持たせています。 The API Management Premium tier is required to support Availability zones.
API Management では、複数リージョンのデプロイもサポートされていて、1 つのリージョンがオフラインになった場合に可用性を向上させることができます。 For more information, see Multi-region deployment. このトポロジでは、Application Gateway はリージョン サービスであるため、リージョンごとに 1 つの Application Gateway を使用することも重要です。
セキュリティ
セキュリティは、意図的な攻撃や貴重なデータとシステムの悪用に対する保証を提供します。 詳細については、「セキュリティ 設計レビューチェックリスト」を参照してください。
Application Gateway セキュリティの詳細については、Application Gateway の Azure セキュリティ ベースラインに関するページを参照してください。
API Management セキュリティの詳細については、API Management の Azure セキュリティ ベースラインに関するページを参照してください。
常に次のセキュリティ対策を実装します。
最新の OWASP Core Rule Set (CRS) 3.2 以降で Azure Web Application Firewall (WAF) ポリシーを使用して、OWASP Top 10 の脅威などの一般的な Web 脆弱性から保護します。
地理的な場所に基づいてトラフィックをブロックまたは許可するように WAF geomatch カスタム ルール を構成します。 この方法では、分散型サービス拒否 (DDoS) 攻撃に対する保護が提供されます。
Azure WAF と Application Gateway を使用して Application (レイヤー 7) DDoS 保護 を有効にして、ボリュームおよびプロトコルベースの攻撃から保護します。 Azure DDoS Protection とアプリケーション設計プラクティスを組み合わせることで、DDoS 攻撃に対する防御を強化するための強化された DDoS 軽減機能が提供されます。
Use private endpoints for API Management to provide secure inbound connectivity.
Microsoft Defender for API を有効にして、API のセキュリティ体制を監視し、脅威を検出します。
悪意のあるボットを識別してブロックするように WAF ボット保護規則 を構成します。
Cost Optimization
コストの最適化は、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳細については、「コストの最適化 設計レビューチェックリスト」を参照してください。
このアーキテクチャのコストは、次のような構成の側面によって異なります。
- Service tiers. コスト効率とパフォーマンスが向上する API Management の Standard v2 および Premium v2 レベルを検討してください。
- スケーラビリティ。つまり、特定の需要をサポートするためにサービスによって動的に割り当てられるインスタンスの数
- このアーキテクチャが継続的に実行されるか、月に数時間だけ実行されるか
- 複数リージョンデプロイを使用する場合のリージョン間のデータ転送コスト
- 評価された要求とルールの数に基づく WAF 処理コスト
次のコスト最適化戦略を検討してください。
- API Management 従量課金レベルを使用して、使用量が少ない、実際の使用量に対してのみ支払う可変ワークロードを使用します。
- Application Gateway の自動スケーリングを実装して、要求に基づいてインスタンス数を最適化します。
これらの側面を評価したら、 Azure 料金計算ツール を使用して価格を見積もります。
Operational Excellence
オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスのデザイン レビュー チェック一覧」を参照してください。
包括的な監視と可観測性を実装します。
- 詳細な API 分析のために Azure Monitor ログへの API Management ログ を構成する
- WAF イベントとパフォーマンス メトリックを監視するように Application Gateway 診断 を設定する
- API のパフォーマンスと可用性のしきい値に関する API Management アラート を実装する
Performance Efficiency
パフォーマンス効率は、ユーザーの要求を効率的に満たすワークロードの機能です。 詳細については、「パフォーマンス効率 設計レビュー チェックリスト」を参照してください。
Application Gateway はこのアーキテクチャのエントリ ポイントであり、WAF 機能には要求分析ごとに処理能力が必要です。 Application Gateway が必要に応じてコンピューティング能力を拡張できるようにするには、自動スケーリングを有効にします。 詳細については、「 Application Gateway の自動スケールとゾーン冗長性」を参照してください。 適切なサブネットのサイズ設定など、 Application Gateway インフラストラクチャ構成に関する製品ドキュメントの推奨事項に従ってください。 この方法により、完全なスケールアウトをサポートするのに十分な大きさのサブネットが確保されます。
API Management の場合は、次のパフォーマンスの最適化を検討してください。
- API Management の自動スケーリングを有効にして、増加する要求ボリュームに自動的に応答します。
- API Management キャッシュ ポリシーを使用して、バックエンドの負荷を軽減し、応答時間を向上させます。
- API Management のレート制限を実装して、バックエンド サービスを過剰な負荷から保護します。
- パフォーマンスとネットワーク機能を向上させるには 、Standard v2 または Premium v2 レベル を使用します。
Next steps
適切な Web API 設計 ガイドラインに従って API を設計 し、適切な Web API 実装 プラクティスを使用して実装します。
Related resources
- ゲートウェイ ルーティング パターン - 1 つのエンドポイントを使用して複数のサービスに要求をルーティングする
- ゲートウェイ集約パターン - 複数の要求を 1 つの要求に集約する
- ゲートウェイ オフロード パターン - API ゲートウェイへの共有機能のオフロード
- URL パス ベースのルーティングの概要
- チュートリアル:Azure CLI を使用して URL パスベースのリダイレクトのあるアプリケーション ゲートウェイを作成する