Slide 1

Slide 1 text

API Gatewayご紹介 日本オラクル株式会社 2023年12月

Slide 2

Slide 2 text

Copyright © 2022, Oracle and/or its affiliates. 2 API Gateway概要

Slide 3

Slide 3 text

ビジネスとビジネスを繋ぎ、拡大するAPIエコノミー APIの公開は企業やサービスの価値に直接的に影 響を及ぼすようになっている 金融機関のAPI公開によるFintechの拡大 • FinTech事業者は、家計簿アプリや貯金アプリ など幅広いサービスを提供 倉庫や配送などの物流API公開 • 物流APIを活用し、利用者は常に最新の配送 状況がわかる 自動車業界にも拡がるAPI • 渋滞情報や走行データのAPI化により、MaaS 事業や自動運転の実現に繋がる 政府保有情報のオープンデータ化 • 各自治体や公共事業者は、政府統計のAPIを 活用してサービスを構築可能 近年ますます広がり続けるAPIの世界 デジタルビジネスを拡大するためには、APIを 活用した事業サイクルは不可欠 ①データの 蓄積 ②APIの開 発と公開 ③APIの収 益化 ④新事業 の構築 Copyright © 2022, Oracle and/or its affiliates. 3

Slide 4

Slide 4 text

API利用者 バックエンドサービス APIの利用/公開の両方で機能する「玄関」が必要 拡がるAPIに反して、煩雑化するその管理 • 複数の認証方法とアクセスポイン トがある場合、APIを利用する際 の実装や管理が複雑 • 公開するAPIのバックエンドごとに、 サービスの監視やライフサイクル 管理が発生 • APIを横通ししてセキュリティレベ ルの維持や利用状況の把握・制 御を行うことが困難 FaaS メインフレーム データベース コンテナアプリ ERPアプリ APIの公開 APIの公開 APIの公開 Mobile SaaS Device 開発者 Copyright © 2022, Oracle and/or its affiliates. 4

Slide 5

Slide 5 text

バックエンドサービス API利用者 プラットフォームを利用することによる、API管理の一元化 API管理プラットフォームがもたらす、管理のシンプル化 FaaS メインフレーム データベース コンテナアプリ ERPアプリ Mobile SaaS Device 開発者 API管理プラットフォーム 認証方法やアクセスポイントが統一さ れており、APIを利用する側の実装や 管理がシンプルに APIサービスの監視先やライフサイクル の管理先を一元化 Copyright © 2022, Oracle and/or its affiliates. 5

Slide 6

Slide 6 text

APIエコノミーに参加、活用する上で求められるもの 堅牢性/セキュリティ • 認証/認可 • 流入制限 • インバウンド/アウトバウンドアクセ スの量を制限 可観測性 • モニタリング • ロギング • アクセスやバックエンド実行の監視 /観測が必要 APIデザインの管理 • 開発者ポータル • ドキュメント • OpenAPI仕様への対応による APIの標準化 ライフサイクル管理 • 設計 • 開発/公開 • バージョニング より重要になっていくAPIの管理 > Copyright © 2022, Oracle and/or its affiliates. 6

Slide 7

Slide 7 text

バックエンドサービスの入り口として機能するセキュアなAPIエンドポイント 主な機能 ※それぞれの詳細については後ほどご紹介します • Gateway機能 • カスタムドメイン/TLS証明書 • ヘッダー/クエリ変換 • リザルトキャッシュ(OCI Cache with Redisとの統合) • API利用管理 • 堅牢性の提供 • カスタム認証 • JWT検証 • リクエスト検証 • 流入制限 • CORSサポート • ゲートウェイやAPIの監視 • OCI Logging, OCI Monitoringとの統合 • ライフサイクル管理 • GUI/JSONなど用途に合わせたGatewayの操作 • モックサーバ(Stock Response)の提供 • SDK生成 • デザイン管理 • OpenAPI 2.0/3.0のサポート API Gateway Copyright © 2022, Oracle and/or its affiliates. 7 Network (Public/Private) Other Public API Services On-Prem API Server Oracle Cloud Infrastructure API Gateway Authentication Load Balancer Container Engine For Kubernetes Dynamic Routing Gateway Functions ■ 価格 1,000,000 APIコールごとに¥420

Slide 8

Slide 8 text

シンプルでセキュアなAPIを簡単に公開 OCIリソースのAPIエンドポイ ント • OKEやComputeなど に実装した複数のAPI サーバのエンドポイント を統一化 OCI FunctionsのAPIエン ドポイント • OCI Functionsを社内 外に公開できる • システムやアプリケーショ ンにFunctionsを組み 込むことが可能 オンプレミスAPIサーバとの 接続 • FastConnectやDRG を利用し、 既存のオン プレミスAPIサーバをその まま利用可能 3rdパーティAPIと組み合わ せたソリューションの構築 • 外部のAPIサービスもま とめて管理し、自由な システム構成が実現で きる OCI API Gatewayのユースケース Copyright © 2022, Oracle and/or its affiliates. 8

Slide 9

Slide 9 text

Copyright © 2022, Oracle and/or its affiliates. 9 API Gatewayとリソースの監視

Slide 10

Slide 10 text

• OCI Monitoringとネイティブに統合される • “oci_apigateway”というメトリック・ネームスペース でメトリックの収集が行われる • デフォルトで使用可能なメトリック • BytesReceived • BytesSent • HttpRequests • HttpResponses • BackendHttpResponses • Latency • IntegrationLatency • InternalLatency OCI Monitoringとの統合 Copyright © 2022, Oracle and/or its affiliates. 10

Slide 11

Slide 11 text

• OCI Loggingとネイティブに統合される • デプロイメント単位ごとにログ出力の要否が設定 可能 • OCI Loggingのインターフェースを利用して閲覧 • Service Connector Hubと併用することでログ出力 を元にした統合的な運用を可能に • 以下の2種類のログが出力可能 • アクセスログ: API Gatewayを介してデプロイメント との間で送受信されるリクエスト/レスポンスデータ のサマリー • 実行ログ: API Gateway内の処理に関するリクエ スト/レスポンスの実行ログ OCI Loggingとの統合 Copyright © 2022, Oracle and/or its affiliates. 11 デプロイメント単位にログ出力を有効化 アクセスログ 実行ログ

Slide 12

Slide 12 text

Copyright © 2022, Oracle and/or its affiliates. 12 API Gatewayとリソースの保護

Slide 13

Slide 13 text

Oracle指定の認証局から発行されたTLS証明書ではなく、ユーザーが取得したTLS証明書が使用可能 カスタム・ドメインとTLS証明書 Copyright © 2022, Oracle and/or its affiliates. 13 証明書の取得先 ドメイン名 Public IP との紐づけ 証明書の 有効期限と更新処理 Oracle指定の認証局 (デフォルト) .apigateway..oci.customer-oci.com 自動 期限切れとなる前に自動更新 証明書サービス 独自ドメイン ユーザーが実施 期限切れとなる前にユーザーが更新 サード・パーティ 独自ドメイン ユーザーが実施 期限切れとなる前にユーザーが更新

Slide 14

Slide 14 text

• デフォルトのCAバンドルに加えて、証明書サービスで作成した他のCA(カスタムCA)のルート証明書および他のCA バンドル(カスタムCAバンドル)をAPI Gatewayのトラスト・ストアに追加可能 • ユースケース • セキュリティ上の理由でプライベートなCAのみを含むカスタムトラスト・ストアを使いたい • mTLS(相互TLS)をサポートしたい TLS証明書検証のためのトラスト・ストアのカスタマイズ Copyright © 2022, Oracle and/or its affiliates. 14

Slide 15

Slide 15 text

Authorizer Functions • HTTPリクエスト(ヘッダー or クエリーパラメーター) に含まれる情報を認証処理を行うOCI Functions(Authorizer Functions)へ渡し、検証す る事で認証処理を行う • (オプション)返却された認証結果に含まれるscope を用いて認可処理を行う JWT Validator • HTTPリクエスト(ヘッダー or クエリーパラメーター) に含まれるJWTをAPI Gatewayで検証する • (オプション)検証済みのJWTに含まれているscope を用いて、認可処理を行う 認証・認可のための機能 Copyright © 2022, Oracle and/or its affiliates. 15 Functions Functions Functions API Gateway Functions Functions Functions API Gateway Functions Identity Provider JWKs Endpoint Public Key 認証依頼 認証結果 (オプション)認証結果に含まれる scopeを用いて認可処理 JWTの検証 - 署名の検証 - Issuerの検証 - Audienceの検証 - 有効期限の検証 - etc. (オプション)検証済みJWTのPayloadに 含まれるscopeを用いて認可処理 Identity Domains/IDCS Auth0 Okta Keycloak etc.

Slide 16

Slide 16 text

• CORS(Cross-Origin Resource Sharing) • あるオリジンで動作しているWebアプリケーションに 異なるオリジンに存在するリソースへのアクセス権を HTTPリクエストによって与えるための仕組み • API Gatewayを使用し、デプロイされるAPIに対する CORSサポートを有効にできる • 各API単位の対応が不要になるため、効率的に ポリシーの適応が可能 CORSサポート Copyright © 2022, Oracle and/or its affiliates. 16

Slide 17

Slide 17 text

Copyright © 2022, Oracle and/or its affiliates. 17 APIの呼び出しとパラメータ化

Slide 18

Slide 18 text

コンテキスト変数 Copyright © 2022, Oracle and/or its affiliates. 18 Functions バックエンド API Gateway User Context Table 一時的に保存 ポリシーやデプロイメント定義で ${[key]} の形式で参照可能 • APIコール等に含まれるパラメータをポリシーやデプロイ メント定義で使用可能にするために、API Gatewayが 一時的に保持する変数のこと • ユースケース例 • バックエンドが解釈できる形へリクエストの形式を 変更したい(request.path/queryを用いて、 URLの形式を書き換える) • 認証結果に含まれる情報(ユーザーID、etc.) をバックエンドに伝搬したい Context Table Name 概要 request.path APIデプロイメント仕様で定義したパス・パラメータ request.query APIリクエストに含まれるクエリー・パラメータ request.headers APIリクエストに含まれるヘッダー・パラメータ request.auth Authorizer Functionsによって返却されるパラメータ (context)、JWTのPayloadに含まれるclaim request.cert 証明書パラメータ(mTLSハンドシェイク中に正常に検証 されたBase64エンコードされた証明書)

Slide 19

Slide 19 text

Copyright © 2022, Oracle and/or its affiliates. 19 リクエスト・ポリシーとレスポンス・ポリシー

Slide 20

Slide 20 text

• API Gatewayのバックエンドに対して、グローバルにレート制限を設定可能 • 過剰なリクエストからバックエンドを保護することで、可用性やリソースの公平な使用を維持する • DoS攻撃の防止 • API使用を収益化するために利用を制限する • etc. • 1秒当たりのリクエスト数の上限を全リクエストの合計 or クライアントIP単位で指定する 流入制限 Copyright © 2022, Oracle and/or its affiliates. 20 API Gateway Functions User

Slide 21

Slide 21 text

• API GatewayでHTTPリクエストに対するバリデーショ ンが可能 • バックエンドサービスに対して不要な負荷をかけないよ うにするために、HTTPリクエストのバリデーション処理を API Gatewayにオフロードする • 検証のポリシー • Enforcing: すべてのリクエストに対して検証を実 施し、検証が成功したリクエストのみバックエンドへ ルーティングする • Permissive: すべてのリクエストに対して検証を実 施するが、検証結果によらずすべてのリクエストを バックエンドへルーティングする • Disabled: 検証を実施しない リクエストのバリデーション Copyright © 2022, Oracle and/or its affiliates. 21 API Gateway Functions Container Engine For Kubernetes Public API バックエンドサービス ・・・ 【検証可能な項目】 • 特定のヘッダーを含むか • 特定のクエリーパラメーターを含むか • リクエストボディーのコンテンツタイプが期待通りか User

Slide 22

Slide 22 text

• API Gatewayで、HTTP Request/Responseの一 部の情報に対して変更が可能 ユースケース • バックエンドサービスが要求するヘッダー(e.g. Accept- Encoding)を一律で付与する • セキュリティ上の理由で、レスポンスに含まれる特定の ヘッダー(e.g. Server)を削除する • バックエンドサービスが解釈できるような形にリクエストの URLを書き換える • etc. ヘッダー/クエリー変換 Copyright © 2022, Oracle and/or its affiliates. 22 Functions バックエンド API Gateway User Functions Functions • ヘッダーの追加、削除、変更 • クエリーパラメーターの追加、削除、変更 • リクエストURLの書き換え • ヘッダーの追加、削除、変更 e.g. Request Headerに対して、上書きの設定を追加をする ・・・

Slide 23

Slide 23 text

Copyright © 2022, Oracle and/or its affiliates. 23 APIの開発支援機能

Slide 24

Slide 24 text

• API GatewayでOpenAPI仕様(2.0 & 3.0)をサポート • デザイン・ファーストなAPIの開発サイクルに貢献 • API用のリファレンスドキュメントの共有 • 開発初期のモックサーバーを容易に生成 • 認証・認可等のポリシーを追加し、さらに高度なス タブとして活用可能 • OpenAPI仕様を元にAPIクライアント用のSDKが各言 語で生成可能 • Android Java • Java • JavaScript • Swift • TypeScript OpenAPI 2.0/3.0のサポート Copyright © 2022, Oracle and/or its affiliates. 24 openapi: '3.0.2' info: title: Employee API version: '1.0' servers: - url: https://oci-api-gateway-host paths: # ... /employee: get: responses: '200': description: return all employee. # ... examples: OpenAPI仕様の定義ファイル をアップロードし、APIリソースを作成 APIリソースを使用して、 API GatewayにAPIをデプロイ

Slide 25

Slide 25 text

• 開発初期のモックサーバー構築が容易 • APIの内部実装が完成した後は、URLを変更す ることなく固定値から実APIへ置き換え可能 • OpenAPI仕様から作成したAPIリソースを用いて、 APIデプロイメント作成した場合は、デフォルトでモック サーバーとして提供される • 様々なポリシーと組み合わせることで高度なモックサー バーを構築可能 • 認証・認可 • リクエストのバリデーション • レート制限 • ロギング • … モックサーバー(Stock Response)の提供 Copyright © 2022, Oracle and/or its affiliates. 25

Slide 26

Slide 26 text

• OpenAPI仕様から作成したAPIリソースを元にAPIクラ イアント用のSDK(Software Development Kits)を 作成可能 • 対応言語 • Android Java • Java • JavaScript • Swift • TypeScript クライアントSDKの生成 Copyright © 2022, Oracle and/or its affiliates. 26 SDKを用いたサンプルコード(Java): // Import classes: import com.example.sdk.ApiClient; import com.example.sdk.ApiException; import com.example.sdk.Configuration; import com.example.sdk.models.*; import com.example.sdk.api.DefaultApi; public class Example { public static void main(String[] args) { ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath("https://hoyd2..."); DefaultApi apiInstance = new DefaultApi(defaultClient); Integer employeeId = 56; // Integer | try { apiInstance.employeeEmployeeIdDelete(employeeId); } catch (ApiException e) { System.err.println("Exception when calling DefaultApi#employeeEmplo yeeIdDelete"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); e.printStackTrace(); } } }

Slide 27

Slide 27 text

• 外部に構築したキャッシュ・サーバーと統合することで、 同一リクエスト(GET, HEAD, OPTIONS)に対するレス ポンスをキャッシュ・サーバーから返却する機能 • ユースケース • 同一リクエストに対する応答を高速化したい • バックエンド・サービスに対して必要以上に負荷を かけたくない レスポンス・キャッシュ Copyright © 2022, Oracle and/or its affiliates. 27 API Gateway Functions Container Engine For Kubernetes Public API バックエンドサービス ・・・ Cache Server [^1]: リクエストのURL、HTTP メソッド(GET, HEAD, OPTIONS)、 APIデプロイメントのOCIDから導出されるキャッシュ・サーバー内のレスポンスを 一意に識別するためのキー 3. API Response 1. API Request 2. キャッシュ・キー[^1]を 元に照合 2. キャッシュ・ヒットしない場合は バックエンドサービスに問い合わせ Key Vault キャッシュ・サーバー へのパスワードを格納 User OCI Cache with Redis

Slide 28

Slide 28 text

Copyright © 2022, Oracle and/or its affiliates. 28 APIの利用管理

Slide 29

Slide 29 text

リソースの全体像 API の使用計画をサブスクライバごとに設定し、利用の制限とメトリックの収集がサブスクライバ単位で可能に 使用計画には、レート制限(1 秒あたり n 回まで)と割り当て制限(分/時間/日/週/月あたり n 回まで)を設けるこ とができる 制限は、クライアント/コンシューマーごとに一意に設定したクライアント・トークンを用いて行われる 使用計画(使用プラン)とサブスクライバ Copyright © 2022, Oracle and/or its affiliates. 29 使用計画 資格 レート制限 割り当て制限 ターゲット・ デプロイメント クライアント サブスクライバ クライアント・トークン 1 n n 1 1 1 1 n n 1 1 1

Slide 30

Slide 30 text

クライアント・トークン API Gateway はクライアント/コンシューマー毎に払い出したクライアント・トークンを元に使用計画の判定を行う クライアント/コンシューマーは以下の場所のいずれかにクライアント・トークンを含めてリクエストを発行する • 認可プロバイダ・ファンクションによって返却される認証パラメータ or JWT のペイロード • リクエスト・ヘッダー • クエリーパラメータ • パス・パラメータ • リクエストの Host ヘッダー 使用計画とサブスクライバ Copyright © 2022, Oracle and/or its affiliates. 30

Slide 31

Slide 31 text

No content