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
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 Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
Deep Data Security 機能解説
oracle4engineer
PRO
2
280
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
1
520
Oracle AI Databaseデータベース・サービスのメンテナンス(BaseDB/ExaDB-D/ExaDB-XS)
oracle4engineer
PRO
4
1.8k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.6k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2.1k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3.1k
CrossplaneによるCloud Native Control Plane
oracle4engineer
PRO
0
120
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
1
660
Other Decks in Technology
See All in Technology
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
160
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
330
AI Driven AI Governance
pict3
0
160
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
0
690
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
390
生成AIの活用/high_school2026
okana2ki
0
110
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
270
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
450
組織における AI-DLC 実践
askul
0
320
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
360
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
1
360
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Leo the Paperboy
mayatellez
8
1.9k
Paper Plane
katiecoart
PRO
1
52k
Typedesign – Prime Four
hannesfritz
42
3.1k
RailsConf 2023
tenderlove
30
1.5k
Rails Girls Zürich Keynote
gr2m
96
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
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