コンテナ領域で存在感を強めるNGINX、OpenShiftとの親和性でKubernetes本番環境のセキュリティや可用性を追求
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/thinkit_rep_f5_main.png?itok=kRxxyXbm)
F5ネットワークスは、Red HatのAsia Pacific Partner Awards 2020に選ばれた。また、2019年にはグローバルでCommunity Partner Awardに選ばれている。
そのF5の主力製品として、ロードバランサーを中心とするトラフィック管理のBIG-IPがある。一方で2019年には、Webサーバーやリバースプロキシーとして使われているソフトウェア「NGINX(エンジンエックス)」を買収し、自社ポートフォリオに加えた。F5とNGINXの技術を合わせることによって、NGINXはアプリケーションデリバリに関する機能を着々と強化しているのである。
そうしたNGINXの新しい機能を用いた適用分野に、コンテナがある。Red HatのOpenShiftなどのKubernetesにおいて、サービスへの外部からのアクセスを管理するIngress Controllerの部分で、NGINXはすでに活躍している。また、マイクロサービス間の通信を制御するサービスメッシュへの適用についても開発が進められている。
こうしたコンテナ分野でのNGINXの実力について、F5ネットワークスジャパン合同会社のNGINXテクニカルソリューションアーキテクトの鈴木孝彰氏と松本 央氏に話を聞いた。
セキュリティなどの機能が充実した
NGINX Ingress Controller
Kubernetesのクラスター上では、1つ以上のアプリケーションが動く。Ingress Controllerとは、それらサービスに対する外部からのアクセスを制御するもので、ロードバランスやSSL終端、名前ベースの仮想ホスティングなどの機能を提供する。
「たとえば、1つのクラスターに複数のサブドメインを割り当てているときに、どのアプリケーションへのリクエストか、サブドメインやURLパスで判断しプロキシ制御を行う、いわゆるリバースプロキシというのが1つの機能です。その他、ロードバランスやアクセス制限、あるいはPCかiPhoneかAndroidかなどUserAgentを見て振り分ける、ということもあります」と、NGINX Ingress Controllerについて鈴木氏は説明する。
Ingress Controllerには複数の実装があり、F5が提供するのが、NGINXベースのNGINX Ingress Controllerだ。
NGINX Ingress Controllerは、NGINXと同様に、オープンソース版と有償版とがあり、有償版では本番環境向けにより多くの機能が使えるようになっている。同じく本番環境のためのKubernetesプラットフォームであるOpenShiftに、NGINX Ingress Controllerも、2020年4月にリリースされた1.7.0から正式に対応している(OpenShift 4.3以降)。「外部からのアクセス制御として、OpenShift 4.3で軽量で高速なNGINXを使っていただけます」(鈴木氏)。
さらに鈴木氏はOpenShiftとの親和性について、「Red HatのOperatorの認定であるRed Hat OpenShift Operator Certificationも取得しているので、OpenShiftのOperatorHubで『NGINX』で検索すると出てきます。そこから、簡単にインストールして使うことができます」と付け加える。
前述のとおり、Kubernetes/OpenShiftのIngress Controllerには何種類かある。OpenShiftのデフォルトではHAProxyが使われ、パブリッククラウドではクラウドコントローラーがIngress Controllerの役割となる。そうした中でも、NGINX Ingress Controllerは実運用環境で有用な機能が豊富だ。
Ingress Controllerの主要な機能に、ロードバランスやWebSocket対応、L7ルーティング、SSLの終端などがある。NGINX Ingress Controllerではさらに、OpenShiftのデフォルトに比べて、gRPCやキャッシュ、WAF(Web Application Firewall)、認証などの機能が使えるようになると説明している。
「たとえば、最新のAPIを開発する人やパブリッククラウドを利用する方にgRPC通信はよく聞かれるポイントで、いまのところ差別化ポイントの1つです。あとは、セッション維持や、SSL証明書の動的アップデートの機能などもあります。また様々な負荷分散メソッドへの対応も、重要視される企業様がいらっしゃいます」と同氏。「そのほか、NGINXは毎月のように最新機能やアップデートが追加され機能強化されているという点もあるかと思います。たとえばHTTP/3の正式対応も今年中には入ってくる予定ですし、そうした機能をKubernetesで使えるのも特徴だと思います」。
BIG-IPのWAFの機能をNGINXに移植した
NGINX App Protect
こうした独自の機能の中でも、鈴木氏が強調するのがセキュリティ機能の「NGINX App Protect」だ。NGINX Plusの動的モジュールとして提供される有償製品で、WAFの機能をNGINXに追加できる。もちろんNGINX Ingress Controllerにも対応している。
「初めてF5とNGINXでコラボレーションしたプロジェクトです。BIG-IPで培ったWAFの機能を軽量で高速なNGINXの特徴を活かし移植しています」。
NGINX App Protectには、いろいろなセキュリティの機能がある。よくある攻撃を定義した「OWASP Top 10シグネチャ」によって「世の中で流通している攻撃の7〜8割は防ぐことが可能です。シグネチャはF5により定期的に更新しているので最新の攻撃にも対応していくことができます」と同氏は説明する。
また、RFCで定義している通信プロトコルに準拠しているか確認することにより、「ツールを使った正常な通信ではない攻撃等を防いでくれます」(鈴木氏)。そのほか、誤検知される場合にはそれを正す設定や、意図していないファイルアップロードやダウンロードを拡張子で判断し防ぐ機能もある。
「こうした機能を、OpenShiftのIngress Operatorの部分で有効にしていただければ、コンテナ環境へのアクセスに対してセキュリティを高められると考えています」。
NGINX App Protectは、高機能であるのと同時に、F5の技術によってパフォーマンスも最適化されている。これまでNGINXには、複数のWebサーバーソフトウェアに対応したオープンソースのModSecurityというWAFモジュールがあった。NGINX App ProtectをModSecurityと比較したベンチマークテストの結果として「スループットも毎秒リクエスト数も、20倍ぐらい速くなっていますので高速で安定した処理を実現しています。モジュールを入れない場合と比べるとパフォーマンスは半分ぐらいにはなりますが、過去と比較するとかなり高パフォーマンスで使っていただけます」と鈴木氏は紹介する。
この最適化について、もともとBIG-IPを担当していて現在NGINXを担当する松本氏は「BIG-IPのトラフィックの取り扱いのエンジンと、NGINXのパケットが到着してからの並列処理の設計などが比較的似ていることもあり、それを元にきっちり作りこんだ結果ではないかと思います。もともとModSecurityはOSSとしてNGINXとは別に開発されていたソフトウェアであり、NGINXの並列処理の特徴は活かせていませんでした。その点、NGINX App ProtectはF5のWAF機能をNGINXで動かすために独自に最適なチューニングを繰り返し設計されていますので、レイテンシーがモジュール無しの場合とほぼ同等という結果に表れていると思います。マイクロサービスやAPIになるとレイテンシーが非常に重要になってくるので、この点は重要なポイントになると思います」と説明する。「また、クラウドについているWAFより細やかに制御できるところは、圧倒的な差だと思います」(松本氏)。
鈴木氏も「BIG-IPの物理アプライアンスや仮想アプライアンスでもWAFによるセキュリティ機能により通信の処理にかかる負荷は増えますが、NGINXにおいてもWAFアプライアンスと同程度のパフォーマンスを出せるのは特徴です。また、ソフトウェアであるNGINX PlusとNGINX App Protectなら、簡単にCPUやメモリを増やしたり、台数を追加してパフォーマンスを改善したりすることができます。それを上手く使っていただいて、WAF機能を活用していただければと思います」と語る。
そのほか、NGINX App ProtectではCI/CDフレンドリーであることも特徴としている。「われわれは、日々のリリースと一緒にセキュリティポリシーもアップデートしていきましょうと提案しています。例えば、アプリケーション用のNGINXの設定がGitHubで管理されている場合は、WAFのポリシーも同時に管理し、CI/CDパイプラインに組み込んでOpenShift環境に展開していくことができます。それによって日々のリリースとセキュリティポリシーの更新を、同時に行っていただけます」(鈴木氏)。
エンタープライズの本番環境では
コンテナのセキュリティが重要に
OpenShiftとNGINXの組み合わせについては、最近よく問い合わせを受けていると鈴木氏は言う。「OpenShift上でどのような機能を使えますか? OpenShiftのどのバージョンから対応していますか? あるいはOpenShiftでIngressはどう使うのですか? といったお問い合わせをいただきます」。
松本氏も「コンテナの活用が本格化して、早いお客様ではエンタープライズの本番環境をコンテナで動かすところもあり、それによってコンテナのセキュリティのニーズを強く感じています」と語る。「ちょうどIngressのレイヤーでセキュリティに対応したい、例えばインジェクション攻撃を防ぐWAFを入れたいという声をいただいています。そこがまさにわれわれの目指しているところで、これから広がっていくソリューションだと思います」。
こうしたコンテナでのセキュリティへのニーズについては、ユーザー側だけでなく、コンテナ技術側の成長も背景にあると松本氏は言う。「コンテナやKubernetesというソリューションはこれだけ広がっていますが、走りながら進めていく中で、本格的なセキュリティのレイヤーは新しく立ち上がっているところだと私は考えています。セキュリティは、インフラに近いところで取り組まれていましたが、それをもっと開発に近いレイヤーでもやりたいというニーズが高まっているのだと思います」。
このように、コンテナのセキュリティやアプリケーション間の通信制御については、これからご要望をいただくことが増えていくだろうと鈴木氏は言う。その一つとして、サービスメッシュについてもNGINXで取り組んでいる。「サービスメッシュは、今後正式なNGINX製品としてご提供する予定となっています。アプリケーション間通信を軽量高速に、安定な制御をご提供していきます」と鈴木氏。
Red HatとNGINXが
コンテナ市場でも関係を深める
NGINXはRed Hatソリューションにさまざまな面で結びついている。「OpenShiftのコンテナのところでは、ここまで説明したようにNGINX Ingress Operatorを提供しています。また、Red Hat Enterprise Linux(RHEL)でも、軽量で高速なNGINXによる、HTTP・HTTPSサーバーやロードバランサー、コンテンツキャッシュ、アクセス制御、WAFなどの機能を使っていただけます。自動化でも、構成管理ツールのAnsibleにNGINXのRoleを提供しているので、NGNIX設定や構成変更をAnsibleで自動化していただけます。このように、関連ツールも利用できるのでRedHat製品とNGINX製品はとても親和性が高いと考えています」と鈴木氏は語る。
レッドハット株式会社 ISVビジネス開発の三島匡史氏も、両社の結びつきについて「今回のアワードなどを受けて、これからコンテナ市場においてもF5といっしょに活動していこうという方向で動き始めたところです。以前はOpenStackなどのインフラまわりでの関係が強かったのですが、これからはコンテナという、より上のレイヤーの新しい市場でも関係を深め、いっしょに活動していきます」と語る。
「コンテナ技術が今年キャズムを越えると言われている中で、OpenShiftも本番環境での利用が増えてきています。そうなると、いままでの開発環境やテスト環境とは違い、ほとんどのお客様がセキュリティを重要視されます。その中で、NGINXのセキュリティ機能は重要なポイントだと思っています。NGINXは、ロードバランサーとしても高いパフォーマンスを発揮していて、そこにセキュリティが加わるということで、本番環境でOpenShiftを使ったコンテナ環境を作るお客様にとって、非常に重要な製品になってくるのではないかと思います」(三島氏)。
さらに三島氏は、コンテナのセキュリティ全体の中でのNGINXとRed Hatの組み合わせについても付け加えた。「Red Hatでは、コンテナイメージレジストリのQueyという製品に、コンテナイメージをスキャンして脆弱性を静的解析する機能があります。またコンテナOSであるRed Hat Enterprise Linux Core OSは、最小限の大きさでセキュアな設計となっております。NGINXはそれらとも異なる領域で、ユーザーからのリクエストに関するセキュリティを提供しています。組み合わせると、よりセキュリティを向上できるかと思います」。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- CNDT 2020にNGINXのアーキテクトが登壇。NGINX Ingress ControllerとそのWAF機能を紹介
- F5とNGINXの組み合わせで、サービス公開をよりセキュアに。Kubernetes Ingress Controllerを活用してセキュリティ、可用性、パフォーマンスを実現
- NGINX Ingress Controllerの柔軟なアプリケーション制御、具体的なユースケースと設定方法を理解する
- KubernetesのDiscovery&LBリソース(その2)
- Kubernetes上のコンテナをIngressでインターネットに公開するまで
- エンタープライズITの潮流変化と新たな課題、セキュリティ筆頭に実効的な解決策を提示
- Red Hatがセキュリティ強化と自動化がポイントのOpenShift 4.3をリリース
- Red Hat、Kubernetesネイティブな統合開発環境 「Red Hat CodeReady Workspaces」を発表
- Red Hat、Kubernetesネイティブな統合開発環境 「Red Hat CodeReady Workspaces」を発表
- サービスメッシュを使ってみよう