Table of Contents
現代のソフトウェアアーキテクチャでは、マイクロサービスがスケーラブルで弾力性のある、そして独立して展開可能なアプリケーションを構築するための標準になっています。 しかし、数十や数百のマイクロサービス API を管理することは、要求のルーティング、セキュリティポリシーの強化、処理速度制限の増強、およびトラフィックパターンの可視性の向上がすべての重要な課題です。 Azure API Gateway は、すべてのマイクロサービス API の完全管理された集中的なエントリ ポイントを提供することで、これらの課題に対処します。 相互の懸念を簡素化し、セキュリティを強化し、トラフィック ではなく、あらゆるサービス インフラストラクチャの構築に注力しています。
Azure API Gateway の理解
Azure API Gateway は、クライアントとマイクロサービスバックエンド間で、クラウドネイティブサービスです。 リバースプロキシとして機能し、すべての API 呼び出しを受け入れる、定義されたポリシー(認証、スロットリング、ロギング、変換)、および適切なバックエンドサービスへのリクエストを転送します。 従来のモノリシックゲートウェイとは異なり、Azure API Gateway は、トラフィックを自動的にスケールアップし、Azure Directory、Insight、Applications、および Azure Monitorなどの他のサービスと深く統合します。
APIゲートウェイを比較すると、Azure API Gateway は Azure エコシステムとの緊密な統合を目指しています。すでに Azure を使用しているチームでは、サーバーの管理やサーバーのロードバランサー、または逆プロキシのリバースを解消することで、運用上のオーバーヘッドを削減します。また、RESTful と WebSocket API の両方をサポートし、リアルタイムアプリケーションに適した機能も実現しています。
Azure API Gatewayのコア機能
ルーティングと変革の要求
Azure API Gateway は、URL パス、ヘッダ、クエリパラメーター、またはペイロード コンテンツに基づいて、異なるマイクロサービスへのリクエストをリクエストに着信するルートです。複数のバックエンドを定義し、ゲートウェイ ポリシーの式を使用して動的にマッピングできます。また、ゲートウェイはリクエストとレスポンスのペイロードを変換できます。例えば、XML を JSON に変換したり、ヘッダーをストリッピングしたり、バックエンドへのリクエストを渡す前に URL をリライトしたりできます。このデカップリングは、内部サービス契約からクライアントの期待を分離します。
認証と認証
セキュリティは一流機能です。Azure API Gateway は、さまざまな認証メカニズムをサポートしています。
- [OAuth 2.0/OpenID Connect[ – リクエストを転送する前に、Azure ADまたはOAuthプロバイダと統合してトークンを検証します。
- [APIキー] - 有効なキーを提示するクライアントへのアクセスを素早く制限し、パブリックまたはパートナーAPIに役立ちます。
- [JWT Validation] – 署名、発行者、オーディエンス、および自己完結トークンの有効期限を確認します。
- [ クライアント証明書 - mTLS(mutual TLS)のシナリオの場合、ゲートウェイは証明書を使用してクライアントを認証することができます。
これらのセキュリティポリシーは、【]]IP フィルタリング と の制限] と組み合わせて、悪意のあるトラフィックをブロックしてマイクロサービスに到達します。
レート制限とキオタ
レート制限は、不正防止やクライアント間での公正な使用を確保するために不可欠です。 Azure API Gateway では、パーキーまたはパーIP レート制限(例えば、1分100リクエスト)を定義し、クォーター(例えば、1日あたりの10,000呼び出し)を設定することができます。 制限が超過されると、ゲートウェイはバックエンドサービスに影響を与えることなく HTTP 429 (Too Many Requests) を返します。
パフォーマンスのキャッシュ
バックエンドのロードを減らし、応答時間を向上するために、Azure API Gateway はレスポンスキャッシュをサポートしています。 運用ごとにキャッシュの持続時間を設定できます。 キャッシュエントリは、ゲートウェイインスタンス間で共有された分散キャッシュに保存されます。 そのため、スケールアウトイベント中でも、応答は利用できなくなります。
分析とモニタリング
ゲートウェイを介してリクエストを流れるすべてのものは、ログ記録されます。 Azure API Gateway は、Azure Monitor と Application Insights と連携し、詳細なメトリック(毎秒のリクエスト、レイテンシー、エラー率、スロットルされたリクエスト)と監査ログを配信します。500 エラーの急なスパイクや特定のエンドポイントをターゲットとするトラフィックサージなど、異常に対するアラートを設定できます。
Azure API Gateway で Microservice API を管理する
集中管理は、APIゲートウェイを使用する最も強力な引数の1つです。 Azure API Gatewayは、Azureポータル内の統一ダッシュボードを提供します。
- API 定義を定義する(OpenAPI/Swagger 形式)、自動的にポリシーを生成します。
- 異なるアクセス層(無料、プレミアムなど)で製品に関連したAPIをグループ化。
- 既存のクライアントを破らずに、API のバージョンを管理します。
- 多岐にわたるレベルでのポリシーを適用します。グローバル、製品、API、および運用、および細かい管理のために。
インフラ・アソート・コードでは、Azure Resource Manager テンプレート、Bicep、または Terraform を使用してゲートウェイ、API、ポリシーを定義できます。これにより、CI/CD パイプラインが API の変更を自動的にデプロイし、環境全体での一貫性を確保できます。
Azure API Gateway で API のセキュリティ確保
セキュリティは多層の懸念です。Azure API Gatewayは、境界で防衛-in-depthの原則を強制するのに役立ちます。
認証とトークン検証
OAuth 2.0 トークン(Azure AD またはカスタム STS からアクセストークン)をゲートウェイで有効化することで、microservices はトークンをデコードし、検証する必要がなくなりました。これにより、ボイラープレート コードが削減され、セキュリティ監査が合理化されます。また、リクエストがバックエンドに到達する前に、ゲートウェイは期限切れまたは無効なトークンを拒否することもできます。
脅威保護
Azure API Gateway は、Azure Front ドアまたは Application Gateway の後ろにデプロイされた際に Azure Web Application Firewall (WAF) と統合できます。WAF は、API ゲートウェイに到達する前に、一般的な OWASP スタイルの攻撃 (SQL 注射、XSS) をブロックします。また、ゲートウェイ自体は、リクエスト ボディを検証し、コンテンツの長さを制限し、マーカレートされたペイロードを拒否するポリシーを強制することができます。
IPおよびネットワークのセキュリティ
特定のIPアドレスや範囲へのトラフィックを制限することができます。内部マイクロサービスの場合、ゲートウェイは、仮想ネットワーク(VNet)からの呼び出しのみを受け付け、公共インターネットへの暴露を防ぐように構成できます。プライベートエンドポイントと組み合わせると、Azureバックボーン内のすべてのバックエンドトラフィックを保ちます。
カスタムセキュリティのためのポリシーの表現
ポリシー式では、ヘッダ、クエリ文字列、または本文コンテンツを調べて決定を下すインラインC#のようなコードを書くことができます。例えば、カスタムヘッダーをチェックして、欠落しているなら401を返すか、リクエストの整合性のためにHMAC署名を検証することができます。この柔軟性により、ゲートウェイを離れることなく、ほぼすべてのセキュリティ要件を実装できます。
パフォーマンスとスケーリング
Azure API Gateway は、高いスループットを処理するように設計されています。リクエスト数と CPU の使用率に基づいて、自動的にスケールアップされます。 ]Developer (テストと評価用)、]Premium (SLA、無制限の API 定義、仮想ネットワーク統合) で生産用)。
パフォーマンスをさらに最適化するために:
- ] バックエンド呼び出しを削減するために、読み取りヘビ API のキャッシュを有効にする]。
- []バックエンドプール[]]を使うと、複数のインスタンス間でトラフィックを分散させるロードバランシングが付いています。
- ] 配線遮断器パターン[ をポリシーでキャスケーディング障害を回避します。
- アプリケーションインサイト内のモニターレイテンシで、適切なタイムアウトを設定します。
モニタリングと分析
組み込みの Azure Monitor 統合では、すべての API 呼び出しでリアルタイムおよび履歴データを得ることができます。ダッシュボードを使用して、使用、エラー率、応答時間でトップ API を視覚化します。例えば、p95 レイテンシが 2 秒を超えたり、 4XXXX エラーレートのスパイクを超過したときに、重要な閾値のアラートを設定します。ゲートウェイは、Log Analytics の詳細なイベントデータをログ化し、インシデント後の深いフォレンジック分析を可能にします。
Azure API Gateway のベストプラクティス
- [] ゲートウェイを念頭に置いて API を設計[ – 一貫した URL パターンとバージョン設定スキーム(例: ])を使用します。
- []Keepゲートウェイポリシーsimple – レイテンシに影響を及ぼす複雑なポリシーチェーンを避けます。 開発者モードを使用してデバッグを行います。
- [Azure Front Doorのコンバインゲートウェイ - グローバルディストリビューション、ジオ冗長性、WAF保護のために、APIゲートウェイの前にAzure Front Doorを配置します。
- []自動展開] – インフラストラクチャー・アズ・コードをバージョンに使用し、ゲートウェイ構成を一貫して適用します。
- []サブスクリプションとレートの制限[ - 内部APIでも、妥協されたサービスから異常なトラフィックを検出するために、スロットルを適用します。
- [] 診断ログを有効にします - ログ解析にログを出荷し、セキュリティ監査のためにAzure Sentinelに接続します。
コンテンツ
Azure API Gateway は、マイクロサービス API の堅牢でスケーラブルで安全なエントリーポイントを提供します。これにより、認証、レート制限、キャッシュ、監視などのクロスカットの懸念を一元化することで、個々のサービスに対する負担を軽減します。Azure のエコシステムと連携することで、チームは、高いパフォーマンス、ディープな可視性、および運用の簡素化を実現します。モノリスティックアーキテクチャから移行するか、グリーンフィールドマイクロサービスランドスケープを構築するかにかかわらず、Azure API は、API のセキュリティを強化し、運用の簡素化を徐々に向上します。
さらなる読書のため:
- [Azure API 管理キーの概念(Microsoft Docs)[
- []OAuth 2.0 仕様[]
- [マイクロサービス(アジュール・アーキテクチャ・センター)[のAPIゲートウェイパターン
- Azure API Management[で制限を付与する
- [ Azure(Microsoft Docs)[ でモデル化した3つのモデル