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.1k
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
Oracle AI Databaseデータベース・サービスのメンテナンス(BaseDB/ExaDB-D/ExaDB-XS)
oracle4engineer
PRO
4
1.4k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
CrossplaneによるCloud Native Control Plane
oracle4engineer
PRO
0
98
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
380
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
260
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Oracle Database Gold Image
oracle4engineer
PRO
1
170
Other Decks in Technology
See All in Technology
新しいVibe Codingと”自走”について
watany
6
310
RAG を使わないという選択肢
tatsutaka
1
210
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
230
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
310
Claude Codeをどのように キャッチアップしているか
oikon48
12
7.2k
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
340
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
620
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
130
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
720
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
230
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
140
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
260
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Test your architecture with Archunit
thirion
1
2.3k
Agile that works and the tools we love
rasmusluckow
331
21k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
Odyssey Design
rkendrick25
PRO
2
690
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
Designing for Timeless Needs
cassininazir
1
250
Context Engineering - Making Every Token Count
addyosmani
9
960
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
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