Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SUSE RancherとKubernetes環境へのWAF対応

SUSE RancherとKubernetes環境へのWAF対応

TakashiAsanuma

October 22, 2021
Tweet

More Decks by TakashiAsanuma

Other Decks in Technology

Transcript

  1. 1 © IDC Frontier Inc. All Rights Reserved. SUSE RancherとKubernetes環境

    へのWAF対応 株式会社IDCフロンティア エンジニアリング本部 開発部 浅沼 2021年9月30日
  2. 2 © IDC Frontier Inc. All Rights Reserved. 2 Agenda


    1. IDCFクラウド コンテナコンソールのWAF対応 (SUSE Rancher/Kubernetes環境におけるWAF対応) 2. コンテナ運用管理を成功に導く鍵-SUSE Rancherとは (SUSE社より)
  3. 3 © IDC Frontier Inc. All Rights Reserved. 3 IDCフロンティアについて


    高集積・大規模なニーズに 応えるデータセンターを全国 に7ヵ所、グループ全体では 19ヵ所展開。 ※2021年3月時点 データセンター事業 シンプル・パワフルなクラウ ドプロダクトと、プライベート やハイブリッドクラウドなど豊 富なラインアップ。 クラウド事業 クラウド型レンタルサー バー、ドメイン名登録など中 小企業や個人事業主の IT環 境を支援。 ホスティングサービス ドメイン名登録サービス 大企業 SI企業 大手IT事業者 IDCフロンティアは、法人向けのITインフラサービスを提供しているソフトバンクのグループ企業です。 データセンター事業、クラウド事業を主軸に、中小企業からエンタープライズまで、
 幅広いお客さまのニーズに応えるサービスを取り揃えています。 ネットサービス企業 クラウドSI企業 中堅・中小企業 個人事業主
  4. 4 © IDC Frontier Inc. All Rights Reserved. 自社開発と
 他社プロダクト


    連携により
 幅広い
 ラインアップ IDCFクラウド コンピューティング データ ベース DNS/GSL B CDN (コンテンツキャッシュ) (Fastly) プライベート クラウド (ホスティッド型) バーチャルブリッジ (サービス間接続) プライベートコネクト (オンプレ接続) クラウドストレージ (Google Cloud Storage) ロード バランサー ベアメタル サーバー コンテナ GPU サーバー
  5. 6 © IDC Frontier Inc. All Rights Reserved. 6 IDCFご利用のお客様状況と市場の流れ


    市場でもクラウド利用者の
 81%が2社以上の
 事業者と契約
 81% 2社以上のクラウド 単独の クラウド IDCFクラウドユーザーの
 73%が
 ハイブリッド利用
 ハイブリッド利用やマルチクラウドが主流に
 データセンターとクラウド 両方を担うIDCFだからこそ 必要な性能や機能で選ぶ マルチクラウドの流れ 出典:Smarter With Gartner「Why Organizations Choose a Multicloud Strategy」(2019年5月7日) 出典:https://www.idcf.jp/cloud/hybrid/ クラウド × オンプレミス クラウド × 物理サーバー クラウド × データセンター
  6. 7 © IDC Frontier Inc. All Rights Reserved. 7 これからの開発・実行環境

    要件にあわせた環境をそろえたい、コンテナ管理が必要
 自社コンテナ イメージの標 準化 (マイクロサービス前提) 実行環境を 選べる (マルチクラウド利用) インフラ 維持管理 不要 現在の課題 クラウドベンダーのコンテナ環境 データセンターのオンプレミス環境 プロダクション単位でコンテナ環境がバラバラ (GKE,ECS,EKS etc.) インフラ維持管理にエンジニア稼働が奪われる • 開発環境が乱立・増殖・混乱 • あるいは特定クラウドベンダーへの依存リスク • 重要コンポーネントのコンテナ化が困難  (i.e.セキュリティ要件が厳しい) • コンテナ・マイクロサービス開発体制へのシフトが進まない • インフラ機材所有コストの増大 • ハードウェアの陳腐化対応 • 監視運用稼働の削減に苦悩
  7. 8 © IDC Frontier Inc. All Rights Reserved. 8 モニタリング

    コンテナからクラスタまで どのプラットフォームでも 同じ様にリソースをモニタリング マルチクラウド ハイブリッドクラウド サービスの特長
 Any インフラ - 構築環境を選ばない - 学習コスト低減 - GUIから手軽に構築 - 運用負荷軽減 - サポートは日本語 - ベアメタルまたは プライベートクラウドなどの 社内仮想化プラットフォームに Kubernetesを展開 IDCFクラウドのコンピュートに加え GKE/EKS/AKSなど 複数のパブリッククラウドを シームレスに利用可能 ワンストップ マルチクラウド/インフラを 1つのインターフェースで 全てのクラスターを管理 カスタマーサポート IDCFクラウド同様の 日本語によるサポート体制 を提供 シンプル WEB UI WEB UIからワークロードを 簡単管理でき、YAML編集から コマンドライン操作まで 可能
  8. 9 © IDC Frontier Inc. All Rights Reserved. IDCFクラウド コンテナコンソール

    のWAF対応 SUSE Rancher/Kubernetes環境のWebアプリケーション提供に当たって
  9. 10 © IDC Frontier Inc. All Rights Reserved. 10 IDCFクラウド

    クラウドコンソールのWAF対応
 IDCF Cloud Console 既存 クラウド型 WAF ゼロデイ攻撃 非ボット型攻撃 不正ログイン 標的型攻撃 高度な攻撃 不正なボットや 自動化された攻撃 ソフトウェアの脆弱性や 一般的な攻撃 (OWASP Top10, etc) Webアプリケーションへの サイバー攻撃例
  10. 11 © IDC Frontier Inc. All Rights Reserved. 11 IDCFクラウド

    コンテナコンソールでの課題
 IDCF コンテナ Console (SUSE Rancher/Kubernetes) 既存 クラウド型 WAF ・HTTP/2 ・WebSocket ・SPDY への対応が必須 SUSE RancherのEndpoint、及び、SUSE RancherはKubernetesのEndpointでも ある。そのため、WebSocket・SPDYの通信に対応するWAFが必要。
 既存WAFに必要なプロトコル対 応がなかった・・・ ❌
  11. 12 © IDC Frontier Inc. All Rights Reserved. 12 要件に適したWAFの選定


    要件
 A社製品
 B社製品 C社製品 NGINX Plus Ingress WebSocket対応 × ◎ ◎ ◎ HTTP/2対応 × ◎ ◎ ◎ SPDY対応 × × × ◎ kubernetesとの相性 - - - ◎ 余談ですが、kubectl execのSPDYについて、Kubernetesコミュニティは議論中
 SPDY is deprecated. Switch to HTTP/2. #7452
 https://github.com/kubernetes/kubernetes/issues/7452

  12. 13 © IDC Frontier Inc. All Rights Reserved. 13 SUSE

    Rancher/KubernetesとIngress構成
 Pod SUSE Rancher アプリケーション Internet Pod ingress-nginx ingress-nginx ingress-nginx IDCFクラウド コンテナ SUSE Rancher アプリケーション ingress-nginxをNGINX Plus Ingress + App protectへ置き換えていくことができるので、
 NGINX Plusへ移行してもKubernetesのリソースとして扱うことができる

  13. 14 © IDC Frontier Inc. All Rights Reserved. 14 ingress-nginxとNGINX

    Plus IngressのAnnotation
 Annotation(ingress-nginx) 
 NGINX Plus 備考 nginx.ingress.kubernetes.io/proxy-connect-timeout ◎ nginx.ingress.kubernetes.io/proxy-read-timeout ◎ nginx.ingress.kubernetes.io/proxy-send-timeout ◎ nginx.ingress.kubernetes.io/rewrite-target ◎ nginx.ingress.kubernetes.io/service-upstream ◎ NGINX Ingress Controller v1.11より対応 nginx.ingress.kubernetes.io/ssl-redirect ◎ nginx.ingress.kubernetes.io/use-regex ◎ nginx.ingress.kubernetes.io/server-snippet ◎ nginx.ingress.kubernetes.io/configuration-snippet ◎ Kubernetesコミュニティのingress-nginxで実装が進んでいたservice-upstreamのような AnnotationもNGINX Plusのingressは追随しているのがありがたい

  14. 15 © IDC Frontier Inc. All Rights Reserved. 15 NGINX

    Plus Ingress のリソース構成
 apiVersion: k8s.nginx.org/v1 kind: VirtualServer metadata: name: xxxxxx.com namespace: default spec: host: xxxxxx.com policies: - name: waf-policy server-snippets: | location ^~ /healthz { access_log off; return 200; } routes: - path: ~* ^/ui/.* route: ui-index/idcf--ui VirtualServer apiVersion: k8s.nginx.org/v1 kind: VirtualServerRoute metadata: name: idcf-ui namespace: ui-index spec: host: xxxxxx.com upstreams: - name: ui-index service: ui-index port: 80 use-cluster-ip: true subroutes: - path: ~* ^/ui/.* action: proxy: upstream: ui-index VirtualServerRoute 複数のnamespaceで同じhostを使用するため、VirtualServerとVirtualServerRouteのリソー スタイプを使用する。また、NGINXの機能拡張をConfigmapで利用する。
 kind: ConfigMap apiVersion: v1 metadata: name: nginx-config namespace: nginx-ingress data: proxy-connect-timeout: "30s" proxy-read-timeout: "1800s" proxy-send-timeout: "1800s" ….. Configmap ・共通の固有パラメーター
 ・headers-moreモジュール
 などをConfigmapにまとめる

  15. 16 © IDC Frontier Inc. All Rights Reserved. 16 NGINX

    App Protectのリソース構成
 apiVersion: k8s.nginx.org/v1 kind: VirtualServer metadata: name: xxxxxx.com namespace: xxxxx spec: host: xxxxx.com policies: - name: waf-policy VirtualServer apiVersion: k8s.nginx.org/v1 kind: Policy metadata: name: waf-policy namespace: xxxxx spec: waf: enable: true apPolicy: "appprotect-policy" securityLog: enable: true apLogConf: "logconf-app" logDest: "syslog:server=xx.x.x.xxx:5144" Policy App Protect apiVersion: appprotect.f5.com/v1beta1 kind: APPolicy metadata: name: appprotect-policy namespace: xxxxx spec: policy: name: app_protect_policy template: name: POLICY_TEMPLATE_NGINX_BASE applicationLanguage: utf-8 ... apiVersion: appprotect.f5.com/v1beta1 kind: APLogConf metadata: name: logconf-app namespace: xxxxx spec: filter: request_type: all content: format: default ... WAFのルール設定は、kind:APPolicyの中で行う。
 enforcementModを使い、Blockingの有効・透過を設定。現在は透 過で様子見中。

  16. 17 © IDC Frontier Inc. All Rights Reserved. 17 App

    Protect DashBoard
 App Protectに対応したGUIのDashBoardがOSSとして公開されており、WAFとしてリ クエストの状況を可視化、運用中の確認などに利用できる
 https://github.com/f5devcentral/f5-waf-elk-dashboardsより
  17. 18 © IDC Frontier Inc. All Rights Reserved. 18 NGINX

    Plus Ingress+App Protectを導入してみて
 • NGINX App ProtectはKubernetesリソースとして扱える唯一のWAF • NGINX Plus IngressにもKubernetesコミュニティの開発機能がキャッチアップされ るのがありがたい • NGINXとしての機能エンハンス・拡張を組み込むことができる(HTTP/3とか ingress-nginxはまだ様子見で組み込んでいない) • なので、ingress-nginxとNGINXの良いところ採りに期待できる • NGINX Plus Ingress + App ProtectはKubernetesリソースなので、Kubernetesを 利用するインフラ・アプリエンジニアは既存プロセスで扱うことができる • ingress-nginxからの初回コンバートは大変。F5ネットワークス社のコンサルサービ スでのコンバート支援はありがたい