API Gateway のアーキテクチャ

API ゲートウェイは、API の管理、モニタリング、認証を提供する API 管理システムです。API Gateway を構成するコンポーネントは次のとおりです。

  • API Gateway: デプロイされた API を全面的に管理します
  • Service Control - API 管理ルールを適用します。
  • Service Management: API 構成を管理します
  • Cloud SDK: API のデプロイと管理に使用します
  • Google Cloud Console - ロギング、モニタリング、共有に使用します。

アーキテクチャ

次の図は、API Gateway に関連する主要コンポーネントの概要図です。

API Gateway の主なコンポーネント。

処理の説明:

  • API プロバイダは、API Gateway 上での API の作成とデプロイを行います。各 API は、OpenAPI 2.0 仕様として記述されたファイルによって定義されます。

    OpenAPI 仕様では、API 用の REST エンドポイントの一般公開 URL、API によってアクセスされるバックエンド サービス、API の他の特性(認証、データ形式、レスポンス オプションなど)を定義します。

  • API クライアントは、API ゲートウェイでホストされている API に対して REST リクエストを行い、バックエンド サービスにアクセスします。API クライアントは、ブラウザ、モバイルアプリ、ウェブアプリなど、REST 呼び出しを実行できるアプリです。

    API クライアントで把握している必要があるのは、API の URL、リクエスト動詞(GETPUTPOSTDELETE など)、認証要件、API との間で送受信されるデータの形式だけです。

    API クライアントは、バックエンドの実装について何も把握している必要がありません。実際、API Gateway でホストされている 1 つの API が、リクエストで渡された情報に基づいてさまざまなバックエンドにアクセスするように構成できます。

API Gateway コンポーネント

API ゲートウェイ

API Gateway は、API をホストするためのフルマネージドの従量課金制ソリューションを提供します。API Gateway は、サービスの実装を問わず、すべてのサービスで一貫性して明確に定義された REST API を使用して、バックエンド サービスへの安全なアクセスを提供します。

API Gateway は Google Cloud と統合されているため、他の Google Cloud プロダクトで使用しているのと同じ開発、モニタリング、ロギング、トレースツールを使用できます。

Google Cloud 外部でホストされているバックエンド サービスに接続している場合でも、API へのアクセスの制御に使用される認証サービスや認可サービスを含めて、すべての Google Cloud サービスを活用できます。

Service Control API

Service Control API は、API キー認証、モニタリング、ロギングなどの API 管理ルールを実行時に適用します。Service Control には、以下のメソッドが用意されています。

  • チェック - 認証情報と API キーを確認して、呼び出しを許可すべきかどうかを示します。
  • レポート - ロギングとモニタリングのレコードをシステムに通知します。

Service Management API

OpenAPI 仕様を使用して API を定義します。次に、Cloud SDK を使用して OpenAPI 仕様を Service Management にアップロードし、API 構成を作成します。構成に関連するその他のタスクもここで行います。たとえば他のデベロッパーとの API の共有、さまざまなプロジェクトでの API の有効化と無効化、API キーの生成に関するタスクが考えられます。

Cloud SDK

Cloud SDK では、さまざまな Google Cloud サービスを呼び出す際に使える gcloud コマンドライン ツールが提供されています。gcloud コマンドライン ツールを使用して、OpenAPI 仕様をアップロードすると、API 構成が作成され、その後、その API 構成を API Gateway にデプロイします。

Cloud Console

Google Cloud Console は、Google Cloud のグラフィック ユーザー インターフェースです。 Google Cloud Console を使用して、Service Control で記録されたモニタリング データとロギングデータを公開し、認証と認可を構成し、デベロッパーが API を呼び出すための API キーを生成します。

API リクエストの処理

API 構成には、次の 2 種類のエンドポイントがあります。

  • API エンドポイント: クライアントが API を利用するために使用する一般公開エンドポイントを定義します。
  • バックエンド エンドポイント: API がバックエンド サービスに接続するために使用するエンドポイントを定義します。HTTP アクセスや HTTPS アクセスなどのセキュリティ設定は、バックエンド サービスの実装によって定義されます。

API エンドポイントへのリクエストは、リクエストの一部として渡されるデータを含むバックエンド エンドポイントに渡されます。サービスから返されたデータを含むバックエンド サービスからのレスポンスが、クライアントに返されます。

リクエストのルーティング

リクエストが受信されると、次のようになります。

  1. API Gateway によって、Cloud Trace 用のトレース トークンが作成されます。

  2. API ゲートウェイは、受信リクエストのパスをターゲット API と照合します。一致するルートが見つかると、API Gateway は指定された API の認証手順を実行します。

  3. JWT の検証が必要な場合、API Gateway は署名者の公開鍵を使用して認証情報を検証し、JWT の audience フィールドを検証します。API キーが必要な場合は、Service Control API を呼び出してキーを検証します。

  4. Service Control はキーを調べて検証し、そのキーに関連付けられたプロジェクトで API が有効になっていることを確認します。キーが無効な場合、またはプロジェクトで API が有効になっていない場合は、呼び出しが拒否され、Service Control API によってそれがログに記録されます。

  5. Service Control がキーの検証に成功した場合は、リクエストとともに、元のすべてのヘッダーおよび JWT 検証ヘッダー(該当する場合)がバックエンドに転送されます。

  6. API Gateway がバックエンドからのレスポンスを受信すると、呼び出し元にそれを返し、Trace に最後のタイミング情報を送ります。呼び出しポイントが Service Control API によってログに記録され、この API は指標とログを適切な場所に書き込みます。

次のステップ