More Related Content
Similar to 【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法 (20)
More from NGINX, Inc. (20)
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
- 7. ©2022 F5
7
NGINX Ingress Controller
ロードバランサー, キャッシュ, API Gateway, WAF オールインワンソフトウェア
アプリケーションをコントロールし保護する
• NGINX Ingress Controller
大規模アプリケーショントラフィックを実現
• JWT認証:
OpenID接続を介して承認されたユーザーを検証する
• NGINX App Protect:
F5 WAFに基づいて開発された最新のアプリセキュリティ
ソリューション
Ingress
- 8. ©2022 F5
8
Source: Datadog Container Report 2021
The Top Technologies
Running on Docker
Top Ingress Providers
CNCF Survey
Source: CNCF Survey 2020
コンテナプラットフォームに最適なNGINX
- 9. ©2022 F5
9
NGINX Ingress Controller ユースケース
L7リクエストルーティング
トラフィック分割
レート制限
JWT認証
Web Application Firewall
NGINX Snippets
URLパス, リクエストメソッド
A|B テスト, Canaryリリース
不正クライアント対策
認証機能をNGINXにオフロード
アプリケーション脆弱性対策
既存のNGINXコンフィグを適用
- 10. ©2022 F5
10
Microservices July 2023
7/20 セミナー
「マイクロサービスにおけるNGINXの役割
~Ingressを使ってマイクロサービスの運用
を楽にする方法~」
日時:7月20日(木)14時~15時
ラーニングコンテンツ
(期間:7/20~8/20)
Webinar、ブログ、ハンズオンラボの3つの
要素で構成されたコンテンツで、マイクロ
サービスの運用を始めるためのエッセンスを
段階的に学ぶことができます。
Unit 1:アプリケーション構成ガイドライン”Twelve-Factor App”による
マイクロサービス・アーキテクチャの適用
Unit 2:コンテナ環境での安全なシークレット管理方法
Unit 3:自動化でマイクロサービスのデプロイを加速させる
Unit 4:Observabilityでマイクロサービスのカオスと複雑性を管理する
登録はこちら:https://www.nginx.co.jp/c/microservices-march-2023/
- 12. ©2022 F5
12
k8s環境におけるNGINXの3つのメリット
詳細なL7LBはNGINX Ingressで実行
ネットワークがブロッカーにならない、理想的なCICDの実現
L7LB
柔軟な通信制御、認証、レート制限、セキュリティ等を実行
シンプルである事 = ミッションクリティカルである事
API GW
構成や既存開発プロセスを変えずにWAFを適用
シフトレフトやDevSecOpsを実現し、セキュリティを皆で意識
セキュリティがブロッカーにならない、理想的なCICDの実現
セキュリティ
- 14. ©2022 F5
14
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: www-nginx-ingress
spec:
ingressClassName: nginx
rules:
- host: www.nginx.com
http:
paths:
- path: /
backend:
serviceName: my-app-prod
servicePort: 80
Cluster
Attackers
User
Cluster
L4 LB L7 LB
L7 LB
Ingress
Ingress
インフラ アプリ
こっちでL7LB設定
やりますよ!
開発チームが管理
IaCとしてCICDに組み込む
アプリケーションの一部となる L7LB
これからの運用
ネットワーク(セキュリティも)がブロッカーに
ならない理想的な CICD の実現
クラウド LB の制限に依存しない、マルチクラウド
アプリケーションの構築
L7LB
- 15. ©2022 F5
15
OpenShift Router と NGINX Ingress Controller
OpenShift Cluster
pod
外部ネットワークからの攻撃
シンプルな
HTTP/HTTPS
PATH Routing
シンプルなMetrics
・Prometheus
pod
Ingress
Controller
OpenShift
Router
NGINX Ingress ControllerはOpenShift Router が提供する機能に加え
高度な通信制御機能・開発元によるパッチ提供が可能です。
OpenShift Router
NGINX Ingress
Controller
シンプルなRate
Limit
柔軟な権限管理
(VS/VSR/Policy)
柔軟な通信制御
ヘッダー・Cookie
TCP/UDP対応
詳細なMetrics
・OpenTracing
OIDC・JWTに
よる通信制御
WAF/L7 DoS対策による高度
な防御 (※追加モジュール)
Circuit Breaker/帯域制御な
ど柔軟な流量制御
高度な通信制御機能 高度なセキュリティ機能
製品開発メーカーのサポート・
セキュリティパッチの提供
メーカーサポート
実績
K8Sに一番使われている
Ingress Controller
消費リソースが少なく
安定動作・高速処理
L7LB
- 19. ©2022 F5
19
AWS EKS環境での ALB vs NLB/NGINX
L7LB
https://aws.amazon.com/jp/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/
- 20. ©2022 F5
20
k8s 環境での WAF
NGINX App Protect WAF機能(= NAP)
• 世界中で実績が豊富なF5製WAFを移植
• 構成変更不要で、IngressでWAFを実行可能
• 前段のLB(BIG-IP等)からL7LBやセキュリティ
設定をNGINX Ingressに移すことで、ネット
ワークやセキュリティがブロッカーにならない理
想的なCICDサイクルを実現
• OWASP Top 10 シグネチャ & CVEs
• メタ文字チェック
• HTTPプロトコル標準
• Bot通信検知
• 不許可ファイルへのアクセス検知
(bin, cgi, cmd, com, dll, exe, msi, sys, shtm, shtml, stm等)
• セキュリティスコア検知
• Cookie改ざん
• JSON & XML文法
• Data Guard & 重要パラメータ
add-on
セキュリティ
- 23. ©2022 F5
23
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
消費リソースが少なく
安定動作・高速処理
API GW
最もシンプルなAPI GWとしてのNGINX
- 25. ©2022 F5
25
NGINX Plus Ingress
Controller 対応機能
補足
基本機能
対応プロトコル
HTTP / HTTPS /
WebSocket / gRPC
TCP/UDPの制御も可能
ロードバランシング 可能
コンテンツキャッシュ 可能
URL Routing
様々な条件の指定、転送が可能。
Kubernetesでは、Serviceや外部
サービスへの転送が可能
URL rewrite 柔軟な制御が可能
ヘッダー制御
サーバサイド・クライアントサイドの
柔軟な制御が可能
セッションパーシステンス 可能
外部サービス転送 可能
Canaly / B|G / Version
可能。新旧Versionの制御に
様々なパラメータを用いた
条件分岐、通信制御が可能
Security
クライアント証明書認証 可能
WAF 可能 追加モジュールが必要
L7 Dos 可能 追加モジュールが必要
IPアドレス制御 可能
GeoIP 可能
NGINX Support対象
3rd Partyモジュール
Rate Limit 可能
Request Limit 可能
Connection Limit 可能
認証・認可
JWT Validation 可能
OIDC RP 可能
API Key 可能
NGINX Ingress Controller APIGW 提供可能機能(1)
API GW
- 26. ©2022 F5
26
NGINX Plus Ingress
Controller 対応機能
補足
ログ・
モニタリング
ログ
様々な条件、様々なパラメータを
ログに出力することが可能。
Syslog転送可能
Prometheus 可能
Open Tracing 可能
Data Dog 可能
New Relic 可能
拡張機能
NGINX Service Mesh連携 可能
mTLS、Ingress、Egress等
柔軟な制御が可能
APIによる分散対象の動的制御 可能
LUA Script 可能
CMD Parameter、
Teamplateの操作が必要
JS Script 可能
CMD Parameter、
Teamplateの操作が必要
API 管理機能
Developer Portal
NGINX API Managemet
構成利用時、利用可能
追加製品が必要
OAS
(OpenAPI Specification)
NGINX API Managemet
構成利用時、利用可能
追加製品が必要
Quota 不可
課金管理 不可
高度な制御
複数のインスタンスで認証
ステータスを同期
可能
複数のインスタンスでlimit
ステータスを同期
可能
複数のインスタンスでセッション
パーシステンスステータスを同期
可能
NGINX Ingress Controller APIGW 提供可能機能(2)
API GW
- 29. ©2022 F5
29
NGINX Security Monitoring
• SecOpsやWAFチーム向け、セキュリティ
イベント監視ダッシュボード
• 管理しているすべてのNGINX App Protect
のイベントを監視
• セキュリティイベントをフィルタリングし
、上位の違反や驚異に関する情報を表示
• Bot関連の驚異も同じダッシュボードに表示
• リクエストブロック時に発行されるサポー
トIDから特定のリクエストを特定し、詳細
な原因を瞬時に把握
• 追加ライセンス無しでご利用頂けます
- 30. ©2022 F5
30
コーディング規約作成
セキュリティ基礎知識
トレーニング(使い方、チューニング)
全員がセキュリティを意識するDevSecOps
Sec
Dev
Dev
Sec
D e v
xxの攻撃がきてるね
○○画面ですね。このパラ
メータ、狙われてますね。 チューニングはどう
しましょう?
テンプレートそのまま
で、△△シグネチャあ
ててみて
わかりました
適用前に一応
レビューさせて
わかりました
プルリク送っておきます
WAFを共通のツールとして活用し
共通のダッシュボードと共通言語で迅速に対策
S
S
Ops
WAFの有無でインフラ
構成変わらない?
もうWAFの面倒見なく
ていいの?!
寂しいけど・・・
やったね!!
- 34. ©2022 F5
34
NGINX App Protect WAF のパフォーマンス vs WAFなし
Latency
(ms)
NGINX App Protect WAF vs No Security latency distribution
Lower is
better
Source: Gigaom 2021
WAF機能を導入した際にも、通信遅延を限りなく少なく抑えることが可能
ほぼ遅延の値に差がない
- 35. ©2022 F5
35
NGINX App Protect WAF のパフォーマンス vs AWS vs Azure
NGINX App Protect WAF vs AWS WAF vs Azure WAF latency distribution
その他のWAFに比べ最もレイテンシが少ない、高速なWAF
- 36. ©2022 F5
36
柔軟に拡張できるパフォーマンス
NGINXはCPU Core数に応じて通信の並列処理を実施します
CPUコア数に応じてパフォーマンスが向上します
0
10000
20000
30000
40000
50000
60000
0
200000
400000
600000
800000
1000000
1200000
RPS ECC
2 CPU cores
4 GB RAM
4 CPU cores
4 GB RAM
8 CPU cores
4 GB RAM
16 CPU cores
4 GB RAM
32 CPU cores
8 GB RAM
HARDWARE
SPECS
EXPECTED
PERFORMANCE
2 CPU cores
4 GB RAM
2x1 GbE NIC
90,000 RPS
4,500 SSL TPS (ECC)
1 Gbps throughput
4 CPU cores
4 GB RAM
2x40 GbE NIC
175,000 RPS
8,500 SSL TPS (ECC)
5 Gbps throughput
8 CPU cores
4 GB RAM
2x40 GbE NIC
350,000 RPS
16,000 SSL TPS (ECC)
40 Gbps throughput
16 CPU cores
4 GB RAM
2x40 GbE NIC
650,000 RPS
30,000 SSL TPS (ECC)
40 Gbps throughput
32 CPU cores
8 GB RAM
4x40 GbE NIC
1,000,000 RPS
52,000 SSL TPS (ECC)
70 Gbps throughput
44 CPU cores
16 GB RAM
4x40 GbE NIC
1,200,000 RPS
64,000 SSL TPS (ECC)
70 Gbps throughput
https://www.nginx.com/resources/datasheets/nginx-plus-sizing-guide/
https://www.nginx.com/blog/nginx-plus-sizing-guide-how-we-tested/
- 39. ©2022 F5
39
CRD – Custom Resource Definition
Custom Resource Definition – CRD
NGINX – VirtualServer/VirtualServerRoute and etc
Contour – HTTPProxy and etc
Traefik – IngressRoute and etc
ミスを発生
させやすい
- 40. ©2022 F5
40
CRD – 共同管理の難しさ
Coffeeアプリ
(Coffeeチーム)
Teaアプリ
(Teaチーム)
Namespace: Cafe
CoffeeチームとTeaチームは、同じ
Ingressリソースでお互いの変更を
上書きしてしまう可能性がある
Coffee Tea
Cafe Project
Blue-Greenテスト
やりたいな・・
レートリミット
変更しなきゃ
Ingress
- 41. ©2022 F5
41
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
• 容易な設定
• エラーが発生しにくい
• 詳細なコントロール
インフラチームが設定管理
アプリ側の各チームが設定管理
- 42. ©2022 F5
42
事例 – NRI様(NGINXユーザ会より)
NGINXを活用することで
インフラチームの負荷を軽減
K8s上のアプリへの振り分け
はやはりNGINXがベスト
NICのCRDにより、
適材適所な管理を実現
組織の壁を考慮した理
想的な運用スタイル
理想的なバージョンアップ方法
BIG-IPが活躍するところ
アプリのBlueGreen等
はNGINXが実現可能
- 43. ©2022 F5
43
事例 – NRI様(NGINXユーザ会より)
サポートの重要性についてお話頂いた
自分達だけで解決できますか?
やはりサポートに任せましょう
最終的にはバグ等ではなく、NGINXとその後ろにあるアプリサーバでのKeep-Alive設定値の不一致によるもの
F5サポートはそういうところもしっかりと見つけてくれてアドバイスすることが可能
- 44. ©2022 F5
44
トラフィック
分割ポリシー
ターゲット条件
指定可能な条件例
• 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テスト
カナリアリリース
- 45. ©2022 F5
45
デモ(2) 流量制限
単純なレートリミット
Path: /
RateLimit: 5r/s, burst
Path: /coffee
RateLimit: 1r/s
Path: /tea
RateLimit: 無し
burst値ありのレートリミット
バースト値(burst)はキューのサイズを定義
レート制限を超えた数のリクエストを処理することができる
キューがいっぱいになるとそれ以降のリクエストはエラーとなる
- 48. ©2022 F5
48
Microservices July 2023
7/20 セミナー
「マイクロサービスにおけるNGINXの役割
~Ingressを使ってマイクロサービスの運用
を楽にする方法~」
日時:7月20日(木)14時~15時
ラーニングコンテンツ
(期間:7/20~8/20)
Webinar、ブログ、ハンズオンラボの3つの
要素で構成されたコンテンツで、マイクロ
サービスの運用を始めるためのエッセンスを
段階的に学ぶことができます。
Unit 1:アプリケーション構成ガイドライン”Twelve-Factor App”による
マイクロサービス・アーキテクチャの適用
Unit 2:コンテナ環境での安全なシークレット管理方法
Unit 3:自動化でマイクロサービスのデプロイを加速させる
Unit 4:Observabilityでマイクロサービスのカオスと複雑性を管理する
登録はこちら:https://www.nginx.co.jp/c/microservices-march-2023/
- 55. ©2022 F5
55
• NGINXの持つ基本機能群
おさらい
• NGINX(OSS版)とNGINX
Plusの違い
• NGINX Plus基本コン
フィグのデモ
Webinar 1 – これからはじめるNGINX技術解説~基本編
https://www.nginx.co.jp/resources/webinars/nginx-back-to-basic-jp/
このセミナーの主な内容:
- 56. ©2022 F5
56
Webinar 2 – これからはじめるNGINX技術解説~基本編 Part2
• NGINXの持つ基本機能群
おさらい
• NGINXの動作の基礎、
listen directiveについて
• NGINXのReverse Proxy
機能&設定
• NGINX の高度なロード
バランシング機能&設定
https://www.nginx.co.jp/resources/webinars/nginx-back-to-basic-2-jp/
このセミナーの主な内容:
- 57. ©2022 F5
57
• NGINXの持つセキュリ
ティ機能おさらい
• NGINX Rate Limitの紹
介&設定
• JWT validation (OAuth,
OIDC) の紹介&設定
• WAFの紹介&設定
Webinar 3 – これからはじめるNGINX技術解説Part 3 〜セキュリティ編
https://www.nginx.co.jp/resources/webinars/nginx-back-to-basic-3-security-jp/
このセミナーの主な内容:
- 58. ©2022 F5
58
• NGINX Ingress Controllerとは?
• KubernetesにおけるNGINX
Ingress Controllerの必要性
• 基本設定の紹介
(Ingress/VS/VSR 機能・設定)
• Ingress Snippetによる拡張(既
存コンフィグの再利用)
• ログの確認方法
Webinar 4 – これからはじめるNGINX技術解説〜Ingress Controller編
https://www.nginx.co.jp/resources/webinars/nginx-back-to-basic-ingress-controller-jp/
このセミナーの主な内容: