編集

次の方法で共有


Azure API Management と Azure AD B2C を使用してバックエンド API を保護する

Azure API Management
Microsoft Entra 外部 ID
Azure Front Door

ソリューションのアイデア

この記事ではソリューションのアイデアについて説明します。 クラウド アーキテクトはこのガイダンスを使用すると、このアーキテクチャの一般的な実装の主要コンポーネントを視覚化しやすくなります。 ワークロードの特定の要件に適合する、適切に設計されたソリューションを設計するための出発点として、この記事を使用してください。

この記事では、API Management と Azure Active Directory (Azure AD) B2C を使用してベアラー トークンを検証することで、Azure およびその他の環境のバックエンド API を保護するアーキテクチャについて説明します。

アーキテクチャ

API Management と Azure AD B2C を使用してベアラー トークンを検証することにより、バックエンド API を保護するアーキテクチャの図。API は Azure や別の環境に存在する場合もあります。

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

データフロー

  1. API クライアントが、アプリケーションにアクセスするために、ユーザー名やパスワードなどの資格情報を指定して認証を行います。 このソリューションでの IdP は Azure AD B2C ですが、別のものを使用することもできます。

  2. 認証要求は、Azure Front Door を経由し、サインインのためにカスタム ドメインが構成されている Azure AD B2C に送信されます。 Azure AD B2C は、ユーザーを認証し、JSON Web Token (JWT) ベアラー トークンをユーザーに返します。

  3. クライアントは、バックエンド API にアクセスするイベントをトリガーします。 このイベントとして、Web アプリケーションまたはモバイル デバイスでのボタンのクリックや、バックエンド API のエンドポイントへの直接呼び出しなどが考えられます。

  4. 要求は Azure Front Door を経由します。そのバックエンドは、API Management のパブリック エンドポイントにマップされています。 API Management は、要求をインターセプトし、validate-jwt ポリシーを使用して Azure AD B2C と照合することでベアラー トークンを検証します。 トークンが有効でない場合、API Management は 401 コードで応答して要求を拒否します。

  5. トークンが有効な場合、API Management は、適切なバックエンド API に要求を転送します。

    この図では、次の 3 つの環境で実行されているバックエンド API を示しています。

    • App Service 環境
    • Function App
    • Azure Kubernetes Services (AKS)

    オンプレミスおよびハイブリッド クラウド環境で実行されている API も、それらの API と API Management の間でネットワーク接続が確立されていれば、API Management と統合できます。

コンポーネント

  • Azure Virtual Network は、仮想マシン (VM) などの Azure リソース間に、セキュリティで保護された通信を提供します。 また、インターネットおよびオンプレミス ネットワークへのアクセスも提供します。
  • Azure Front Door は、Web コンテンツおよびアプリケーションのためにハイ パフォーマンス、スケーラビリティ、セキュリティで保護されたユーザー エクスペリエンスを実現する、最新のクラウド コンテンツ配信ネットワーク (CDN) です。 SSL オフロード、パス ベースのルーティング、高速フェールオーバー、キャッシュなどのレイヤー 7 の機能を提供して、アプリケーションのパフォーマンスと可用性を向上させます。
  • Azure Application Gateway は、Web アプリへのトラフィックを管理するレイヤー 7 のロード バランサーです。
  • API Management は、API を外部および内部のクライアントに公開するためのターンキー ソリューションです。 公開 API を管理するために役立つ機能 (レート制限、IP 制限、Microsoft Entra ID や別の IdP を使用する認証など) を提供します。 API Management は負荷分散を実行しないため、Application Gateway やリバース プロキシなどのロード バランサーと共に使用する必要があります。 API Management と Application Gateway の使用の詳細については、「内部仮想ネットワーク内の API Management を Application Gateway と統合する」を参照してください。
  • Azure AD B2C は、コンシューマー向けアプリケーション用に Microsoft Entra ID を基に構築された高可用性グローバル ID 管理サービスです。 数億個もの ID を扱うことができます。 これは、このソリューションで使用する IdP です。 認証が成功するとベアラー トークン (JWT) を返します。
  • Azure App Service は、Web アプリを構築、デプロイ、およびスケーリングするためのフル マネージド サービスです。 .NET、.NET Core、Node.js、Java、Python、または PHP を使用してアプリを構築できます。 アプリは、コンテナー内または Windows 上または Linux 上で実行できます。 メインフレームの移行では、フロントエンド画面または Web インターフェイスを HTTP ベースの REST API としてコード化できます。 これらは、メインフレーム アプリケーション内のように分離できます。また、マイクロサービスベースのシステムの編成のために、ステートレスにすることができます。
  • Azure App Service Environment は、App Service のシングルテナント デプロイです。 App Service アプリを大規模に安全に実行するために、完全に分離された専用の環境でアプリをホスティングできるようにします。
  • Azure Kubernetes Service (AKS) は、コンテナ化されたアプリケーションを実行するための、Microsoft が管理する Kubernetes 環境です。
  • Azure Functions は、イベント駆動のサーバーレス コンピューティング プラットフォームです。 Azure Functions は、クラウド内で必要に応じて大規模に実行されます。

シナリオの詳細

バックエンド API は、アプリケーションとデータへのエントリ ポイントであり、悪意のあるアプリケーションやユーザーから保護する必要があるエントリ ポイントです。 ここで説明するアーキテクチャでは、Azure API Management がクライアントとバックエンド API の間のゲートウェイとして機能し、次のようなさまざまな方法で API の保護を支援します。

  • トークンの検証
  • クレーム ベースの承認
  • SSL 証明書の検証
  • IP 制限
  • Throttling
  • レート制限
  • 要求と応答の検証

Microsoft または別のサプライヤーの任意の OpenID Connect ID プロバイダー (IdP) を使用して、クライアントを認証できます。 このソリューションでは、Azure AD B2C を使用します。 OpenID Connect 以外のものを使用して認証する場合、たいていは Azure AD B2C を使用してフェデレーションできます。 詳細については、「Azure Active Directory B2C テナントへの ID プロバイダーの追加」を参照してください。

考えられるユース ケース

このアーキテクチャは、以下を行おうとしている組織のニーズに対応できます。

  • 承認されていないユーザーからバックエンド API を保護する。
  • スロットリング、レート制限、IP フィルタリングなどの API Management 機能を使用して、API の過負荷を防ぐ。
  • OpenID Connect での認証、または次のような他の IdP とのフェデレーションのために Azure AD B2C を使用する。
    • Ping Identity および Computer Associates (CA) SiteMinder などのサード パーティの IdP。
    • Facebook、Microsoft アカウント、Google、Twitter。
    • OAuth 1.0、OAuth 2.0、または SAML プロトコルをサポートする IdP。

共同作成者

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

プリンシパル作成者:

  • Arshad Azeem | シニア クラウド ソリューション アーキテクト

その他の共同作成者:

  • Raj Penchala | プリンシパル クラウド セキュリティ アーキテクト
  • Ryan Hudson | プリンシパル クラウド ソリューション アーキテクト

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

次の手順