API 管理の概要

アーキテクチャーまたはシステム設計のコンテキストでは、API 管理は一般的に、クライアント (外部、内部、またはその他) から API、エンドポイント、またはメソッドへのアクセスを管理するために使用される、構成可能で高機能なリバース プロキシーを指します。 API 管理は RESTful API で一般的に使用されますが、これに限定されるものではありません。リクエスト管理と保護のレイヤーを提供して、受信リクエストを検証、検査、変更、および処理できるようにし、バックエンド システムから返されるレスポンスをさらに変更または処理できるようにします。 組織によっては、同様の目標を達成するために_エンタープライズ サービス バス_を使用する場合があります。 エンタープライズ サービス バスは、そのコンポーネントに関連する追加の影響を含むが、API 管理サービスに対する同じ一連の推奨事項からメリットを得られるテクノロジーのクラスを柔軟に定義した用語です。

API 管理システムの例としては次のようなものがあります。

  • Azure API Management
  • AWS API Gateway
  • Mulesoft Anypoint
  • Apigee
  • Kong
  • Boomi

API 管理について

API 管理の動作は、通常は HTTP トラフィックのパターン全体をバックエンド サーバーに転送する従来のリバース プロキシーとは異なります。 例:

<external-host>:443/server/rest/services/* » <internal-host>>:6443/arcgis/rest/services/*

多くの場合、API 管理には、個々の API URI パスと HTTP メソッド (つまり、/routes/extract への POST と /routes/<ルート ID> への PATCH) の選択が伴います。そのため、個々のメソッドまたはパターンを定義する必要があるだけでなく、各パターンに異なるルール、動作、バックエンド リスナーまたはサービスを設定できます。 既存の Web サービスのセットが存在しない新しい API やシステムの構築や、異なるバックエンド コンポーネントやシステムが個別の API リクエストの処理を担当するマイクロサービス スタイルのアーキテクチャーを実現する場合によく使用されます。 場合によっては、API 管理で、OpenAPI 仕様などのバックエンド API 定義を使用して、多くのフロントエンド エンドポイントまたはメソッドを作成することがあります。

API 管理には通常、リクエストの内容の操作 (パスの調整または書き換え、ヘッダーの追加または変更、POST 本文の内容に基づく宛先の変更)、リクエストへのフィルタリングの適用 (レート制限、特定の IP 範囲のブロック、API キーの要求)、またはレスポンスの操作 (サーバー名の難読化、レスポンス ヘッダーの削除、フィンガープリントまたは識別子の追加) のいずれかを行う、他の一連の処理オプションも含まれています。 これらの操作は API 管理レイヤーで定義され、リクエストが送信されるたびに機能して、レスポンスが作成されます。

これらのパターンはすべて、通常、エンタープライズ サービス バス テクノロジーにも当てはまりますが、いくつかの違いがあります。 ESB は同期メッセージの配信に重点を置く傾向があり、システムの一部の変更 (新しいレコードの追加、更新の実行) によってこの変更が ESB にプッシュされた後、ESB がメッセージを変換して他のシステムにプッシュし、メッセージの同期を維持します。 ある意味では、API 管理はクエリーとポーリングの方法論であり、ESB では強力なメッセージ配信コミットメント、パブリッシュ/サブスクライブ パターン、またはその他の同様のアプローチが導入されることがよくあります。

API 管理と ArcGIS

API 管理は、ArcGIS を用いたさまざまなパターンで使用できます。 一般に、マップ、フィーチャ、ジオプロセシング サービスなどの ArcGIS Server ベースのサービスの「前面」にデプロイされるユース ケースや、これらのサービスを別のエンタープライズ システム、またはカスタマイズされたアプリケーションを使用する開発者やエンド クライアントに公開する必要があるシナリオに API 管理は_最も適しています_。 API 管理の実施に関するいくつかの重要な考慮事項は次のとおりです。

  • API 管理は一般的に、スタンドアロンの ArcGIS Server デプロイメントのアーキテクチャー パターンとして最適に機能します。 ArcGIS Enterprise デプロイメントの一部としてフェデレーション サーバーに必要なトークン交換と検証の処理ははるかに複雑であり、さまざまな認証リクエストとエンドポイントを処理するために、高度な ArcGIS 構成または API 管理構成および知識が必要になります。
  • ArcGIS REST サービスは通常、API 管理システムによって匿名でアクセスされ、API 管理「サービス」からのリクエストは、さらなる認証手順を経ることなく ArcGIS バックエンドに送信されます。 ArcGIS では、組み込みのユーザー名とパスワードから SAML や OIDC まで、多くの認証パターンをサポートしていますが、API 管理パターンでは多くの場合、API 管理サービスから発信されたリクエストにバックエンド API が匿名でアクセスできることを前提としています。
  • API 管理は一般的に、ArcGIS Server サイト全体ではなく、特定のサービスまたはエンドポイントを公開する目的で使用する必要があります。 サイト全体を公開することが目標である場合、通常であれば、ワークフローとの互換性が高い従来のリバース プロキシーがより優れたソリューションとなります。
  • ArcGIS では全般的により詳細な REST API を提供しているため、API 管理サービスでは柔軟なワイルドカード パターンをサポートするか、特定のパスのみを転送する必要があります。 これは、サービスを ArcGIS クライアント ソフトウェアに公開することが目標である場合に特に重要となります。ArcGIS クライアント ソフトウェアは、完全に利用可能な API (すべてのメソッドとリソースにアクセスできる) を想定して設計されています。

例:

  • 特定のサービスに関する詳細を取得するには、このリクエストを転送するだけで十分です。
    • /arcgis/rest/services/ServiceName/MapServer
  • ただし、マップ サービス機能とフィーチャ レイヤー機能をサポートする場合は、次のタイプのリクエストを追加で転送する必要があります。
    • /arcgis/rest/services/ServiceName/MapServer/exportImage
    • /arcgis/rest/services/ServiceName/MapServer/0/query
    • /arcgis/rest/services/ServiceName/MapServer/1/query

ベスト プラクティス

API 管理は、エンタープライズ システム間の統合オプションを提供する方法として、ますます普及しています。 多くの組織が、API 管理システムによってすべての内部トランザクションが仲介されるようにするためのポリシーに投資したり、ポリシーを作成しています。また、場合によっては、外部からアクセス可能なサービスを作成するために API 管理の使用を必要とします。 システム統合に関連するベスト プラクティスには次のようなものがあります。

  • API 管理サービスのレベルでのみ認証を適用し、すべてのユーザー アクティビティーでそのエンドポイントを使用するようにすることが目的である場合、バックエンドとして定義された ArcGIS サービスは、通常、セキュリティーで保護されないか、「すべての人と共有」されるようにして、ネットワーク設計またはファイアウォールを介してパブリック アクセスまたは組織のアクセスが制限され、API 管理サービスからのみアクセスが有効になるように構成する必要があります。
  • Web コンテキスト URL とプロキシー関連ヘッダーの実装を検討して、API 管理の背後にある ArcGIS Server コンポーネントがプロキシーを認識し、可能な場合は有効な URL を返すようにします。
  • API 管理サービスを介してリクエストから返されるリンクは、検査して、後続のリクエストに適切なホスト名とコンテキストを使用するように修正する必要があります。 たとえば、非同期印刷サービス リクエストは、結果の PDF 出力に最終的な URL を返し、ユーザーがそれをリクエストします。この URL は内部ホスト名を参照している場合があり、コンテンツを API 管理システムで書き換えることができます。

API キーと認証の操作

API 管理には定義上、認証レイヤーは含まれませんが、多くの組織では、ユーザーの検証と承認管理の目的で、API 管理エンドポイントに認証を適用したいと考えます。 一般的な API 管理認証方法には、API またはサブスクリプション キーの使用、および既存の ID プロバイダー (IdP) に対する OAuth ベースの認証方法との統合が含まれます。 これらの各パターンは、ArcGIS 統合ワークフローでいくつかの課題を引き起こす可能性があります。

API 管理ベースのクライアント認証方法は、標準の ArcGIS クライアントと互換性がない場合があることに注意してください。 たとえば、サービス固有のヘッダーまたはBearer 認証ヘッダーを使用したヘッダーベースの認証が API 管理システムで必須となっている場合、標準の ArcGIS クライアントは、そのサービスへのアクセスをサポートするリクエストにそのヘッダーを動的に追加できません。 同様に、API キーは API 管理インターフェイスを介して追加される共通認証レイヤーである可能性がありますが、アプリケーション開発者はこの要件を認識し、これらのサービスをアプリケーションに統合するためにリクエストに追加できる必要があります。 さまざまな ArcGIS SDK とサービス登録パターンで、この種のサブスクリプション キーまたは API キー認証パターンをサポートできますが、認証パターンが適切であると見なす前に、慎重にテストする必要があります。

API 管理に対する OAuth ベースの認証には、他の課題もあります。 サポートされている SDK を使用してカスタム アプリケーションを開発する場合、OAuth サービスへの初期リダイレクトを提供して、トークンまたはコードを返し、そのトークンを使用してそのセッションの後続のリクエストに追加するのは比較的簡単なことかもしれません。 ただし、ArcGIS の既製アプリケーションを使用する場合、これらのクライアントは ArcGIS によって管理されていない追加の認証手順なしで ArcGIS ジオサービスに直接アクセスすることを想定しているため、この構成を正常に使用することははるかに困難です。

一般に、API キーまたはサブスクリプションキーを使用すると、このコンテキストで最も成功する統合パスが提供されますが、次の推奨事項があります。

  • API キーまたはサブスクリプション キーでは、URL クエリー パラメーターとしての使用がサポートされている必要があります。 ヘッダーベースの認証は、カスタム Esri Maps SDK ベースのアプリケーションや Python ベースの統合などの一部のワークフローでサポートできますが、ほとんどの既存のインターフェイスでは、現時点で ArcGIS 以外の認証ヘッダーを使用することはできません。
  • API キーは、最新バージョンの ArcGIS Online または ArcGIS Enterprise で作成されたコンテンツ アイテムに、アイテムの作成時に指定されるカスタム パラメーターとして追加することも、アイテムに登録されている URL に直接追加することもできます。 これらのオプションを注意深くテストして、リクエストされたコンテンツへの十分なアクセスを提供するかどうかを評価します。
  • ArcGIS Pro で API キーで保護されたサービスを使用する場合、パスからのデータの追加ワークフローでは、カスタム パラメーターの使用もサポートされます。
Top