Azure API Management ランディング ゾーン アクセラレータ

Azure API Management
Azure Application Gateway
Azure Functions
.NET

API は、企業と顧客が内部と外部の両方でサービスにアクセスする方法でますます重要になっています。 内部的には、API は、基幹業務アプリケーション、自社構築ソリューション、サードパーティ統合にアクセスするために使用されます。 外部的には、生産性を高め、自社の API を収益化する企業が増えています。 この傾向を念頭に置いて、API Management は、内部と外部の両方の対象ユーザーに対して API を管理、運営、公開する標準的なアプローチの中心的なコンポーネントになります。

Azure Application Gateway を利用して、Azure API Management を介して提供される API のアクセスを保護および制限できるようになりました。 この記事では、1 つの API Management インスタンスを介して内部と外部の API の両方を管理できるソリューションについて説明します。 インターネットを介して直接公開されないようにセキュリティ体制を維持し、代わりに Application Gateway を介してアクセスできます。

注意

このアーキテクチャは、クラウド導入フレームワークの Azure API Management ランディング ゾーン アクセラレータの基礎として使用されます。

アーキテクチャ

API Management ランディング ゾーン アクセラレータのアーキテクチャを示す図。

このアーキテクチャ図は、サブスクリプションのスコープ、プライベート ドメインが解決されるプライベート DNS ゾーン、仮想ネットワーク名 APIM-CS VNet のスコープを表す包括的なボックスから始まります。 サブスクリプションの上には、オンプレミスのワークロードであることを示すボックスがあります。 このボックス内にはサーバー アイコンがあります。 パイプは、サイト間接続または Azure ExpressRoute が Azure サブスクリプション内の API Management インスタンスに接続することを示します。 Azure サブスクリプションを示す大きなボックスの中には、さらに 7 つの小さなボックスがあります。 上の行に 4 つ、下の行に 3 つのボックスがあります。 個々のボックスは、ネットワーク セキュリティ グループがアタッチされた個別のサブネットを表します。 一番左にはパブリック IP アドレスがあり、上の行の左端のボックスの Azure Application Gateway に接続されています。 Application Gateway は、App GW サブネットという名前のサブネットを持つ 7 つの小さなボックスの 1 つにも存在します。 右側には、API Management インスタンスを含む別のボックスがあり、APIM サブネットという名前のサブネットが含まれます。 その隣の上の行の 3 番目のボックスには、PE サブネットという名前のサブネット内の Azure Functions インスタンスのプライベート エンドポイントが含まれています。 上の行の右端のボックスは、Azure Functions アプリ、関数のAzure App Service プラン、その Functions アプリに関連付けられているストレージ アカウントを含むバックエンド サブネットです。 下の行は、左側から順に、Bastion サブネット内の Azure Bastion を含むボックスです。 2 番目のボックスには、ジャンプ ボックス サブネット内の管理用ジャンプボックス VM が含まれています。 下の行の最後のボックスは、DevOps サブネット内に含まれる DevOps エージェントです。 画像の右下には、それぞれのアイコンが付いた 3 つの共有リソースがあります。 これらのボックスは左から右の順に、キー コンテナー、Application Insights、Log Analytics ワークスペースです。 ワークフローには 2 つのセットがあります。 1 つ目のワークフローは黒い円で示され、もう 1 つのワークフローは青い円で示されています。これについては、後のセクションで説明します。 黒いワークフローは、外部から利用できる API のアクセスを示しています。 このフローは、パブリック IP アドレスにアクセスするユーザーから始まります。 その後、矢印は、Application Gateway、Application Gateway からプライベート エンドポイント、プライベート エンドポイントから Functions アプリの方向を指しています。 青いワークフローは、オンプレミスのサーバーから始まり、API Management インスタンスを指す矢印は、サイト間接続または ExpressRoute を介したパイプライン アイコンを通ります。 フローの残りの部分は、上記と同じで、API Management からプライベート エンドポイント、プライベート エンドポイントから Azure Functions になります。

このアーキテクチャでは、ポリシーが Azure ランディング ゾーン アクセラレータから配置されていることと、その構造が管理グループから下方に向かっていることを前提としています。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

ハイブリッド シナリオ (青い円)

このシナリオでは、オンプレミス環境へのサイト間接続または Azure ExpressRoute 接続が必要です。

  1. オンプレミス アプリケーションは、Azure API Management を介して提供される内部 API にアクセスする必要があります。
  2. API Management は、Azure Functions でホストされているバックエンド API に接続します。 この接続は、Azure Functions Premium プランを通じて使用でき、独自のサブネットでホストされるプライベート エンドポイントを介して行われます。
  3. このプライベート エンドポイントを使用すると、Azure Functions でホストされている内部 API に安全にアクセスできます。

外部アクセス シナリオ (黒い円)

  1. 外部アプリケーションは、Azure Application Gateway にアタッチされているパブリック IP アドレスまたはカスタム FQDN にアクセスします。
  2. Application Gateway は、SSL ターミネーションに PFX 証明書を必要とする Web アプリケーション ファイアウォールとして機能します。
  3. API Management は、プライベート エンドポイントを介して、Azure Functions でホストされているバックエンド API に接続します。 このエンドポイントは、Azure Functions Premium プランを通じて使用でき、独自のサブネットでホストされます。
  4. このプライベート エンドポイントを使用すると、Azure Functions でホストされている外部で使用可能な API に安全にアクセスできます。

コンポーネント

このアーキテクチャは、次のコンポーネントを使用します。

  • Azure API Management は、ハイブリッド環境とマルチクラウド環境全体でサービスを管理できるようにするマネージド サービスです。 API Management は、バックエンド アーキテクチャを抽象化するためのファサードとして機能し、内部と外部の両方のユーザーに API の監視と使用のための制御とセキュリティを提供します。

  • Azure Functions は、最小限のインフラストラクチャ管理で実行できるコード ブロックにさらに集中できるサーバーレス ソリューションです。 関数はさまざまなホスティング プランでホストできますが、この参照アーキテクチャではプライベート エンドポイントを使用しているため、Premium プランを使用しています。

  • Azure Application Gateway は、レイヤー 7 ロード バランサーと Web アプリケーション ファイアウォールとして機能するマネージド サービスです。 このシナリオでは、アプリケーション ゲートウェイによって内部 APIM インスタンスが保護されます。これにより、内部モードと外部モードを使用できます。

  • Azure DNS のプライベート DNS ゾーンを使用すると、カスタム DNS ソリューションを実装しなくても、仮想ネットワーク内のドメイン名を管理および解決できます。 プライベート DNS ゾーンは、仮想ネットワーク リンクを介して、1 つ以上の仮想ネットワークに適合することができます。 この参照アーキテクチャで使用されるプライベート エンドポイント経由で Azure Functions が公開されるため、プライベート DNS ゾーンを使用する必要があります。

  • Azure Monitor の Application Insights は、開発者が異常を検出し、イシューを診断し、使用パターンを理解するのに役立ちます。 Application Insights は、拡張可能なアプリケーション パフォーマンス管理とライブ Web アプリの監視を備えています。 .NET、Node.js、Java、Python など、さまざまなプラットフォームがサポートされています。 Azure、オンプレミス、ハイブリッド環境、またはその他のパブリック クラウドでホストされているアプリがサポートされます。 Application Insights は、デプロイされたアプリケーションの動作を監視するために、この参照アーキテクチャの一部として含まれています。

  • Azure Monitor の Log Analytics を使用すると、必要に応じて、Azure portal 内から、Azure Monitor ログ内のデータを使用してログ クエリを編集および実行できます。 開発者は、一連のレコードに対して単純なクエリを実行したり、Log Analytics を使用して高度な分析を実行したりできます。 その後、結果を視覚化できます。 Log Analytics は、すべての監視ログを集計して、より多くの分析とレポートを行うために、この参照アーキテクチャの一部として構成されています。

  • Azure Virtual Machines は、さまざまなワークロードをホストするために使用できるコンピューティング リソースです。 この参照アーキテクチャでは、仮想マシンを使用して、管理ジャンプボックス サーバーと、DevOps エージェントまたは GitHub ランナーのホストを提供します。

  • Azure Key Vault は、API キーとパスワードから証明書や暗号化キーまで、シークレットを安全に格納してアクセスするクラウド サービスです。 この参照アーキテクチャでは、Azure Key Vault を使用して、Application Gateway で使用される SSL 証明書を格納します。

  • Azure Bastion は、開発者の仮想ネットワーク内でプロビジョニングされるサービスとしてのプラットフォームです。 これにより、Azure portal から TLS 経由で開発者の仮想マシンに安全に RDP/SSH 接続できます。 Azure Bastion を使用すると、仮想マシンで RDP/SSH 経由で接続するのにパブリック IP アドレスが不要になります。 この参照アーキテクチャでは、Azure Bastion を使用して、DevOps エージェントまたは GitHub ランナー サーバーまたは管理ジャンプ ボックス サーバーにアクセスします。

Azure DevOps や GitHub などの DevOps ツールを使用する場合、クラウドでホストされるエージェントまたはランナーはパブリック インターネット経由で動作します。 このアーキテクチャの API 管理は内部ネットワークに設定されているため、VNet にアクセスできる DevOps エージェントを使用する必要があります。 DevOps エージェントは、アーキテクチャ内の API にポリシーやその他の変更をデプロイするのに役立ちます。 これらの CI/CD テンプレートを使用して、プロセスを分解し、開発チームが API ごとに変更をデプロイできるようにすることができます。 これらは、DevOps ランナーによって実行されます。

代替

API Management インスタンスが接続するバックエンド サービスでは、この参照実装で使用される Azure Functions に加えて、いくつかの代替手段を使用できます。

  • Azure App Service は、Web アプリのビルド、デプロイ、スケーリングを行うフル マネージド HTTP ベースのサービスです。 .NET、.NET Core、Java、Ruby、Node.js、PHP、Python はすべてサポートされています。 アプリケーションは、Windows または Linux ベースの環境で実行およびスケーリングできます。
  • Azure Kubernetes Service には、統合された継続的インテグレーションと継続的デリバリー (CI/CD) エクスペリエンス、ガバナンス、セキュリティのためのフル マネージド Kubernetes クラスターが用意されます。
  • Azure Logic Apps は、自動化されたワークフローを作成および実行するためのクラウドベースのプラットフォームです。 参照アーキテクチャの例については、「Azure での基本的なエンタープライズ統合」を参照してください。
  • Azure Container Apps を使用すると、サーバーレス プラットフォームでマイクロサービスとコンテナー化されたアプリケーションを実行できます。

複数リージョンのデプロイの場合は、Azure Front Door を使用して、ユーザーとアプリケーションの静的および動的な Web コンテンツ間の高速で信頼性の高い安全なアクセスを提供することを検討してください。

Application Gateway によって API を保護する方法のその他の例については、「Application Gateway と API Management で API を保護する」を参照してください。

考慮事項

これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

[信頼性]

信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。

  • リージョンごとに、2 つの可用性ゾーンに分散された少なくとも 2 つのスケール ユニットの API Management をデプロイします。 この方法により、可用性とパフォーマンスが最大化されます。
  • VNet ピアリングは、リージョンで優れたパフォーマンスを提供しますが、最大 500 ネットワークのスケーラビリティ制限があります。 より多くのワークロードを接続する必要がある場合は、ハブ スポーク デザインまたは Azure vWAN を使用します。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

  • API Management 検証ポリシーは、OpenAPI スキーマに対する API 要求と応答を検証するために使用できます。 これらの機能は Web Application Firewall に代わるものではありませんが、一部の脅威に対する追加の保護を提供できます。 検証ポリシーを追加するとパフォーマンスに影響を与える可能性があるため、パフォーマンス ロード テストを使用して API スループットへの影響を評価することをお勧めします。
  • API Management の前に Azure Web Application Firewall (WAF) をデプロイして、一般的な Web アプリケーションの悪用や脆弱性からの保護を提供します。
  • Key Vault シークレットを使用して名前付きの値を適用し、APIM ポリシーの機密情報を保護します。
  • 内部 APIM インスタンスの外部アクセスに Application Gateway を使用して、APIM インスタンスを保護し、ハイブリッド接続を有効にします。
  • ハイブリッド接続とセキュリティの強化をサポートするために、API Management ゲートウェイを VNet にデプロイします。
  • VNet ピアリングは、リージョンで優れたパフォーマンスを提供しますが、最大 500 ネットワークのスケーラビリティ制限があります。 より多くのワークロードを接続する必要がある場合は、ハブ スポーク デザインまたは Azure vWAN を使用します。

コストの最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

  • 可用性ゾーンと仮想ネットワークのサポートが必要なため、リージョンごとの価格に従って、API Management の Premium レベルを選択しました。 さらに、このワークロードでは、VNet アクセスが必要なため、Azure Functions は Premium プランでホストされます。
  • 概念実証やプロトタイプの場合は、API Management の他のレベル (Developer や Standard など) を使用することをお勧めします。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスの重要な要素の概要」を参照してください。

  • API Management 構成は ARM テンプレートとして表す必要があり、コードとしてのインフラストラクチャの考え方を採用する必要があります。
  • CI/CD プロセスを使用して、API Management の構成を管理、バージョン管理、更新します。
  • API Management インスタンスの状態を検証するのに役立つカスタム正常性プローブを作成します。 URL /status-0123456789abcdef を使用して、アプリ ゲートウェイで APIM サービスの共通の正常性エンドポイントを作成します。
  • キー コンテナーで更新された証明書は、4 時間以内に更新される API Management で自動的にローテーションされます。
  • リージョンごとに、2 つの可用性ゾーンに分散された少なくとも 2 つのスケール ユニットの API Management をデプロイします。 この方法により、可用性とパフォーマンスが最大化されます。

このシナリオのデプロイ

このアーキテクチャは、GitHub で入手できます。 これには、必要なすべてのコードとしてのインフラストラクチャ ファイルとデプロイの手順が含まれています。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順

次の重要なリソースを参照してください。

これらの主要なサービスの詳細については、以下をご覧ください。