API ゲートウェイとしての
NGINX Plus活用方法
F5 ネットワークス ジャパン
©2023 F5
2
• API / APIゲートウェイ
• APIに求められる要件・構成
• NGINX
• 動作デモ
• まとめ
Agenda
©2023 F5
3
API / APIゲートウェイ
©2023 F5
4
アプリケーション・API
データの取得リクエスト
位置情報
データの応答
地図データ
API
Client Service / Application
©2023 F5
5
近年のアプリケーション・API
• 変化に強いこと。自由な変更・拡張、安定性
近年のアプリケーションに求めるもの
Client Service / Application
クライアントの増加・多様なクライアント クラウドネイティブテクノロジの活用
複数チームによる開発
社内・社外システムの連携でAPIの活用は増加していきます
©2023 F5
6
課題:デジタルトランスフォーメーションが運用を複雑化
70%
社内システム統合のためAPIを
構築する企業
81%
パブリック/プライベートクラウド、
オンプレミス等、3つ以上の環境を
利用する企業
41%
12ヶ月以内にAPIに関する
セキュリティインシデントが
発生した組織
SOURCE: State of Application Strategy Report (F5, 2022); “API Attacks Soar Amid Growing Application Surface Area” (Dark Reading, 2022)
アーキテクチャの増加、APIの増加がセキュリティインシデントの可能性を高める
©2023 F5
7
APIゲートウェイ として NGINX Plus を活用する
• APIゲートウェイがAPIの接続を受け付け、クライアントやアプリケーションに求められる
機能を効果的に実現し、アプリケーションを「セキュア」に「効率的」に運用する
API GW
API GW基本機能
• APIルーティング
• Service Discovery
• Rate Limit
• TLS / mTLS
API GW拡張機能
• API認証・認可 (JWT/OAuth/OIDC/SAML)
• 細かなアクセス制御・HTTP操作
• WAF/L7DoS対策
• NJS / LUAによる機能拡張
©2023 F5
8
APIに求められる要件・構成
©2023 F5
9
複雑化するAPI・アプリケーション
シンプルな運用 / コスト削減 / パフォーマンス / セキュリティを
両立する構成とは?
Edge
Cloud
On Premises
©2023 F5
10
Gartner – Distributed Enforcement Model
App & Network Security Layer
Access Control Layer
©2023 F5
11
Gartner – Distributed Enforcement Model
1) 内外(North-South) と サービス間(East-West)
APIアクセスの両方をサポート
2) “Edge Gateway”での全体的なアクセスコントロールと
”Micro Gateway”での詳細なアクセスコントロール
a. “Edge Gateway”では認証を実行し、JWTを使用
してAPIリクエストに追加のコンテキストを注入
b. ”Micro Gateway”ではクライアントに関するJWT
内の情報を使用して、詳細なアクセスコントロー
ルを実行する
3) このアプローチは、マイクロサービス間のAPIトラフィ
ックに対してのセキュリティ層を提供することが可能
Outer APIGW
(Edge GW)
Inner APIGW
(Micro GW)
©2023 F5
12
3つのAPIセキュリティ要素
Access
Control • APIエンドポイントに対する認証認可の管理
Network
Security
• 安全なネットワーク通信(mTLS)
• ネットワークレベルで、不要なトラフィック
を防ぐ(DDoS、レートリミット)
App
Security
• 脆弱性を軽減
• 高度なBot対策技術によるAPI不正利用対策
• ペイロードセキュリティ(WAF)
©2023 F5
13
OWASP API TOP10
Broken Object Level Authorization
Broken User Authentication
Excessive Data Exposure
Lack of Resource & Rate Limiting
Broken Function Level Authorization
Mass Assignment
Security Misconfiguration
Injection
Improper Assets Management
Insufficient Logging & Monitoring
Access Control
Network Security
App Security
https://github.com/acrcdlsd/OWASP/blob/master/API
%20Security%20Top%2010/2019/0x11-t10.md
©2023 F5
14
システム要件を満たすNGINX APIゲートウェイ
シンプルな運用 / コスト削減 / パフォーマンス / セキュリティの両立
お客様ご要件に合わせて自由な配置・機能の選択が可能です
Edge
Cloud
On Premises
App & Network Security Layer
Access Control Layer
Anti
DDoS
ADC
Bot
Mitigation
WAF
Outer APIGW
(Edge GW)
Inner APIGW
(Micro GW)
API認証・認可 (JWT/OAuth/OIDC/SAML)
細かなアクセス制御・HTTP操作
WAF/L7DoS対策
App
App
App
App
Access
Network App
App
©2023 F5
15
NGINX
©2023 F5
16
Source: Datadog Container Report 2021
The Top Technologies
Running on Docker
Top Ingress Providers
CNCF Survey
Source: CNCF Survey 2020
コンテナプラットフォームに最適なNGINX
©2023 F5
17
あらゆる環境に適合するNGINX
モノリシック
マイクロサービス
オンプレ
クラウド・エッジ
どのようなアプリでも
10年先を見据えて今すぐ活用できるツール
©2023 F5
18
NGINX API ゲートウェイのパフォーマンス vs Kong , AWS APIGW
NGINXをAPIゲートウェイとして動作させた場合、レイテンシを抑え通信の制御が可能
©2023 F5
19
NGINX App Protect WAF のパフォーマンス vs WAFなし
Latency
(ms)
NGINX App Protect WAF vs No Security latency distribution
Lower is better
Source: Gigaom 2021
WAF機能を導入した際にも、通信遅延を限りなく少なく抑えることが可能
ほぼ遅延の値に差がない
©2023 F5
20
NGINX App Protect WAF のパフォーマンス vs AWS vs Azure
NGINX App Protect WAF vs AWS WAF vs Azure WAF latency distribution
その他のWAFに比べ最もレイテンシが少ない、高速なWAF
©2023 F5
21
動作デモ
©2023 F5
22
デモ環境
自PCにk8sを構築し、下記をデプロイ
NGINX Ingress Controller/App Protect
デモ内容
(1) Blue-Greenデプロイメント
(実際はカナリーリリース)
(2) 流量制限
(3) APIセキュリティ
©2023 F5
23
デモ・・・の前に、最もシンプルなAPI GW
k8s Cluster
pod
外部ネットワークからの攻撃
前段LBへの制限
冗長化の方法が
限られている
設定・構成が複雑で
管理が難しい
pod
他社 API GW
API GWとしての
NGINX Ingress
Controller
DBが必要
k8s外にサーバ必要
APIGWに求められる多くの機能を実装することが可能なため、構成をシンプルに、運用が容易な環境を実現できる
Ingress
Controller
as API GW
= ミッションクリティカルなAPI GW
柔軟な権限管理
(VS/VSR/Policy)
柔軟な通信制御
ヘッダー・Cookie
TCP/UDP対応
詳細なMetrics
・OpenTracing
OIDC・JWTに
よる通信制御
WAF/L7 DoS対策による高度
な防御 (※追加モジュール)
Circuit Breaker/帯域制御な
ど柔軟な流量制御
高度な通信制御機能 高度なセキュリティ機能
製品開発メーカーのサポート・
セキュリティパッチの提供
メーカーサポート
実績
K8Sに一番使われている
Ingress Controller
消費リソースが少なく
安定動作・高速処理
©2023 F5
24
CRD – Custom Resource Definition
Custom Resource Definition – CRD
NGINX – VirtualServer/VirtualServerRoute and etc
Contour – HTTPProxy and etc
Traefik – IngressRoute and etc
ミスを発生
させやすい
©2023 F5
25
CRD – VirtualServer/VirtualServerRoute
Namespace: cafe
KIC
VirtualServerRoute
VirtualServerRoute
VirtualServer / VirtualServerRoute リソースは、設定ファイルの分割、高度な通信制御など、
Ingressリソースではサポートされていない機能を実現します Policy
• ACL
• Rate limting
• MTLS
• JWT Validation
• Advance Routing
• Persistency
• Traffic Splitting
• WAF
• etc
Policy
• ACL
• Rate limting
• MTLS
• JWT Validation
• Advance Routing
• Persistency
• Traffic Splitting
• WAF
• etc
Service: coffee
Service: tea
VirtualServer
route: coffee
route: tea
routes:
Namespace: coffee
Namespace: tea
• 容易な設定
• エラーが発生しにくい
• 詳細なコントロール
インフラチームが設定管理
アプリ側の各チームが設定管理
©2023 F5
26
事例 – NRI様(NGINXユーザ会より)
NGINXを活用することで
インフラチームの負荷を軽減
K8s上のアプリへの振り分け
はやはりNGINXがベスト
NICのCRDにより、
適材適所な管理を実現
組織の壁を考慮した理
想的な運用スタイル
理想的なバージョンアップ方法
BIG-IPが活躍するところ
アプリのBlueGreen等
はNGINXが実現可能
©2023 F5
27
事例 – NRI様(NGINXユーザ会より)
サポートの重要性についてお話頂いた
自分達だけでの解決は困難
やはりサポートに任せましょう
最終的にはバグ等ではなく、NGINXとその後ろにあるアプリサーバでのKeep-Alive設定値の不一致によるもの
F5サポートはそういうところもしっかりと見つけてくれてアドバイスすることが可能
©2023 F5
28
トラフィック
分割ポリシー
ターゲット条件
指定可能な条件例
• header
• cookie
• argument
• variable
variableの例:
$args, $http2, $https, $remote_addr, $remote_port,
$query_string, $request, $request_body,
$request_uri, $request_method, $scheme
デモ(1) Blue-Greenデプロイメント
Blue-Greenデプロイメント
ABテスト
カナリアリリース
©2023 F5
29
デモ(2) 流量制限
単純なレートリミット
Path: /
RateLimit: 5r/s, burst
Path: /coffee
RateLimit: 1r/s
Path: /tea
RateLimit: 無し
burst値ありのレートリミット
バースト値(burst)はキューのサイズを定義
レート制限を超えた数のリクエストを処理することができる
キューがいっぱいになるとそれ以降のリクエストはエラーとなる
©2023 F5
30
デモ(3) APIセキュリティ
OpenAPI
定義ファイル
WAFポリシー
OpenAPI定義ファイルを指定するだけで、強力なホワイト
リスト型セキュリティ & OWASP TOP10等への対応が可能
©2023 F5
31
まとめ
©2023 F5
32
まとめ
Edge Cloud/On Premises
• 皆様のシステムはどのようにアプリケーションを配置されますでしょうか?
• システムの運用でどのような機能・構成が適しているでしょうか?
• 適切な機能の配置
• 攻撃に対する防御
• 適切なチームによる自由な構成変更
APIを活用する昨今のアプリケーションにおいて求められる
シンプルな運用 / コスト削減 / パフォーマンス / セキュリティ向上
をNGINXが提供いたします
©2023 F5
33
お役立ち情報
©2023 F5
34
無料トライアル
https://www.nginx.co.jp/free-trial-request/
https://www.nginx.co.jp/free-trial-request-nginx-ingress-controller/
NGINX Plus, NGINX App Protect
無料トライアル
NGINX Plusは、オールインワン型のソフトウェアロードバランサ、コンテンツ
キャッシュ、Webサーバ、APIゲートウェイ、マイクロサービスプロキシです。
NGINX App Protectは、業界トップクラスのF5の高度なWAFテクノロジーをNGINX
Plusに搭載し最新のアプリケーションセキュリティを提供します。
この2つの技術の融合により、最新の分散型環境におけるWeb/モバイルアプリケー
ションの拡張性と保護が実現します。
NGINX Ingress Controller with
NGINX App Protect 無料トライアル
NGINX Plusで実現するNGINX Ingress Controllerは、軽量で、Kubernetesアプリ
ケーションに最適な高度な機能を搭載するオールインワンソフトウェアです。
無料のNGINX Service Meshとも統合することが可能で、単一の構成でnorth-south
とeast-westの両方のトラフィックを管理できます。高性能な機能で、本番環境で利
用するKubernetesに最適なアプリケーションデリバリを提供します。
NGINX Plus無料トライアル
NGINX Ingress Controller
無料トライアル
©2023 F5
35
NGINXドキュメント/コンテンツ
https://nginx.co.jp/
NGINX日本語サイト
https://nginx.org/en/docs/
https://nginx.org/en/docs/dirindex.html
NGINX OSS / Directive / Variable etc.
(各種マニュアル)
©2023 F5
36
https://f5j-tech-info.readthedocs.io/ja/latest/content03/content3.html
有償版NGINXを触って頂くためのラボガイドです。こちらのページから各機能へのリンクが
ありますので、ご興味のある機能についてはぜひ触ってみてください!
NGINXラボガイド index
©2023 F5
37
O’REILLY NGINXクックブック設定レシピ集(日本語版)
https://www.nginx.co.jp/resources/ebooks/nginx-cookbook-jp/
©2023 F5
38
これからはじめるNGINX技術解説
https://www.nginx.co.jp/resources/webinars/nginx-back-to-basic-jp/
基本編 Part1
・基本動作、OSS / Plus違い
基本編 Part2
・Reverse Proxy、LB設定
セキュリティ編
・WAF、RateLimit、Auth
Ingress Controller編
・設定、Snippet、Log
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法

【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法