Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
API Gateway 機能概要集 / API Gateway functional over...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
oracle4engineer
PRO
May 31, 2022
Technology
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
API Gateway 機能概要集 / API Gateway functional overview
oracle4engineer
PRO
May 31, 2022
More Decks by oracle4engineer
See All by oracle4engineer
OCI Oracle AI Database Services新機能アップデート(2026/06-2026/08)
oracle4engineer
PRO
0
68
OKE の進化 - Oracle Cloud Infrastructure Kubernetes Engine の現在地 -
oracle4engineer
PRO
0
120
【Oracle AI Spotlight ウェビナー】クラウド移行の成否を分けるデータ基盤の配置戦略 ― マルチクラウドやソブリンクラウドで広がるデータ基盤の選択肢
oracle4engineer
PRO
1
43
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
130
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
130
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
240
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
2
1.2k
もうプロンプトは書かない!? ループエンジニアリング入門
oracle4engineer
PRO
2
480
[ OracleTechnologyNight#102]SQL性能改善の武器としてのパラレル実行詳細
oracle4engineer
PRO
1
270
Other Decks in Technology
See All in Technology
10分で知る最近のOmarchy
komagata
0
140
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
270
ASTを使って影響範囲を特定する
nealle
0
110
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
110
When Does a Local Qwen Start to Break
morshoto
0
190
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
340
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
210
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
120
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
240
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
110
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
140
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
340
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Designing for Timeless Needs
cassininazir
1
470
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
490
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
API Gateway 機能概要集 Subhead goes here on one line Name
日本オラクル株式会社 May, 2022
Copyright © 2022, Oracle and/or its affiliates 2 API Gatewayとリソースの監視
• OCI Monitoringとネイティブに統合される • “oci_apigateway”というメトリック・ネームスペース でメトリックの収集が行われる • デフォルトで使用可能なメトリック • BytesReceived
• BytesSent • HttpRequests • HttpResponses • BackendHttpResponses • Latency • IntegrationLatency • InternalLatency OCI Monitoringとの統合 Copyright © 2022, Oracle and/or its affiliates 3
• OCI Loggingとネイティブに統合される • デプロイメント単位ごとにログ出力の要否が設定 可能 • OCI Loggingのインターフェースを利用して閲覧 •
Service Connector Hubと併用することでログ出力 を元にした統合的な運用を可能に • 以下の2種類のログが出力可能 • アクセスログ: API Gatewayを介してデプロイメント との間で送受信されるリクエスト/レスポンスデータ のサマリー • 実行ログ: API Gateway内の処理に関するリクエ スト/レスポンスの実行ログ OCI Loggingとの統合 Copyright © 2022, Oracle and/or its affiliates 4 デプロイメント単位にログ出力を有効化 アクセスログ 実行ログ
Copyright © 2022, Oracle and/or its affiliates 5 APIの呼び出しとパラメータ化
コンテキスト変数 Copyright © 2022, Oracle and/or its affiliates 6 Functions
バックエンド API Gateway User Context Table 一時的に保存 ポリシーやデプロイメント定義で ${<context table name>[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エンコードされた証明書)
Copyright © 2022, Oracle and/or its affiliates 7 API Gatewayとリソースの保護
Oracle指定の認証局から発行されたTLS証明書ではなく、ユーザーが取得したTLS証明書が使用可能 カスタム・ドメインとTLS証明書 Copyright © 2022, Oracle and/or its affiliates 8
証明書の取得先 ドメイン名 Public IP との紐づけ 証明書の 有効期限と更新処理 Oracle指定の認証局 (デフォルト) <unique>.apigateway.<region>.oci.customer-oci.com 自動 期限切れとなる前に自動更新 証明書サービス 独自ドメイン ユーザーが実施 期限切れとなる前にユーザーが更新 サード・パーティ 独自ドメイン ユーザーが実施 期限切れとなる前にユーザーが更新
• デフォルトのCAバンドルに加えて、証明書サービスで作成した他のCA(カスタムCA)のルート証明書および他のCA バンドル(カスタムCAバンドル)をAPI Gatewayのトラスト・ストアに追加可能 • ユースケース • セキュリティ上の理由でプライベートなCAのみを含むカスタムトラスト・ストアを使いたい • mTLS(相互TLS)をサポートしたい
TLS証明書検証のためのトラスト・ストアのカスタマイズ Copyright © 2022, Oracle and/or its affiliates 9
Authorizer Function • HTTPリクエスト(ヘッダー or クエリーパラメーター) に含まれる情報を認証処理を行うOracle Functions(Authorizer Functions)へ渡し、検証す る事で認証処理を行う
• (オプション)返却された認証結果に含まれるscope を用いて認可処理を行う JWT Validator • HTTPリクエスト(ヘッダー or クエリーパラメーター) に含まれるJWTをAPI Gatewayで検証する • (オプション)検証済みのJWTに含まれているscope を用いて、認可処理を行う 認証・認可のための機能 Copyright © 2022, Oracle and/or its affiliates 10 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.
• CORS(Cross-Origin Resource Sharing) • あるオリジンで動作しているWebアプリケーションに 異なるオリジンに存在するリソースへのアクセス権を HTTPリクエストによって与えるための仕組み • API
Gatewayを使用し、デプロイされるAPIに対する CORSサポートを有効にできる • 各API単位の対応が不要になるため、効率的に ポリシーの適応が可能 CORSサポート Copyright © 2022, Oracle and/or its affiliates 11
Copyright © 2022, Oracle and/or its affiliates 12 リクエスト・ポリシーとレスポンス・ポリシー
• API Gatewayのバックエンドに対して、グローバルにレート制限を設定可能 • 過剰なリクエストからバックエンドを保護することで、可用性やリソースの公平な使用を維持する • DoS攻撃の防止 • API使用を収益化するために利用を制限する •
etc. • 1秒当たりのリクエスト数の上限を全リクエストの合計 or クライアントIP単位で指定する 流入制限 Copyright © 2022, Oracle and/or its affiliates 13 API Gateway Functions User
• API GatewayでHTTPリクエストに対するバリデーショ ンが可能 • バックエンドサービスに対して不要な負荷をかけないよ うにするために、HTTPリクエストのバリデーション処理を API Gatewayにオフロードする •
検証のポリシー • Enforcing: すべてのリクエストに対して検証を実 施し、検証が成功したリクエストのみバックエンドへ ルーティングする • Permissive: すべてのリクエストに対して検証を実 施するが、検証結果によらずすべてのリクエストを バックエンドへルーティングする • Disabled: 検証を実施しない リクエストのバリデーション Copyright © 2022, Oracle and/or its affiliates 14 API Gateway Functions Container Engine For Kubernetes Public API バックエンドサービス ・・・ 【検証可能な項目】 • 特定のヘッダーを含むか • 特定のクエリーパラメーターを含むか • リクエストボディーのコンテンツタイプが期待通りか User
• API Gatewayで、HTTP Request/Responseの一 部の情報に対して変更が可能 ユースケース • バックエンドサービスが要求するヘッダー(e.g. Accept- Encoding)を一律で付与する
• セキュリティ上の理由で、レスポンスに含まれる特定の ヘッダー(e.g. Server)を削除する • バックエンドサービスが解釈できるような形にリクエストの URLを書き換える • etc. ヘッダー/クエリー変換 Copyright © 2022, Oracle and/or its affiliates 15 Functions バックエンド API Gateway User Functions Functions • ヘッダーの追加、削除、変更 • クエリーパラメーターの追加、削除、変更 • リクエストURLの書き換え • ヘッダーの追加、削除、変更 e.g. Request Headerに対して、上書きの設定を追加をする ・・・
Copyright © 2022, Oracle and/or its affiliates 16 APIの開発支援機能
• 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 17 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をデプロイ
• 開発初期のモックサーバー構築が容易 • APIの内部実装が完成した後は、URLを変更す ることなく固定値から実APIへ置き換え可能 • OpenAPI仕様から作成したAPIリソースを用いて、 APIデプロイメント作成した場合は、デフォルトでモック サーバーとして提供される •
様々なポリシーと組み合わせることで高度なモックサー バーを構築可能 • 認証・認可 • リクエストのバリデーション • レート制限 • ロギング • … モックサーバー(Stock Response)の提供 Copyright © 2022, Oracle and/or its affiliates 18
• OpenAPI仕様から作成したAPIリソースを元にAPIクラ イアント用のSDK(Software Development Kits)を 作成可能 • 対応言語 • Android
Java • Java • JavaScript • Swift • TypeScript クライアントSDKの生成 Copyright © 2022, Oracle and/or its affiliates 19 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(); } } }
• 外部に構築したキャッシュ・サーバーと統合することで、 同一リクエスト(GET, HEAD, OPTIONS)に対するレス ポンスをキャッシュ・サーバーから返却する機能 • ユースケース • 同一リクエストに対する応答を高速化したい
• バックエンド・サービスに対して必要以上に負荷を かけたくない レスポンス・キャッシュ Copyright © 2022, Oracle and/or its affiliates 20 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
Thank you Copyright © 2022, Oracle and/or its affiliates 21
None