BLOG | NGINX

OpenShiftとの連携でKubernetesコンテナ本番環境のセキュリティや可用性を強化

NGINX-Part-of-F5-horiz-black-type-RGB
Takaaki Suzuki サムネール
Takaaki Suzuki
Published January 28, 2021
Hiroshi Matsumoto サムネール
Hiroshi Matsumoto
Published January 28, 2021

軽量で可搬性がよく、オンプレでもクラウド・マルチクラウドでも環境を選ばず高速で柔軟なトラフィック管理(ロードバランシング、キャッシュ、APIゲートウェイ等)を実現するNGINXは、コンテナ領域で多く利用されています。特にKubernetesにおけるRed HatのOpenShiftとは、サービスへの外部からのアクセスを管理するIngress Controllerの部分で親和性がよく、連携して多く導入されています。

エンタープライズの本番環境ではコンテナのセキュリティが重要に

昨今コンテナの活用が本格化し、一部の組織ではエンタープライズの本番環境をコンテナで動かすところも出始めています。それに伴い、コンテナでのセキュリティのニーズも非常に高まってきています。たとえば、Ingressのレイヤーでセキュリティに対応したい、インジェクション攻撃を防ぐWAFを入れたいなどという声が聞かれます。まさにNGINXが得意とする分野であり、これからますます必要性が注目されていくでしょう。

コンテナやKubernetesがすでに広く導入され始めているのに対し、本格的なセキュリティのレイヤーの導入はまだあまり聞こえてこない。セキュリティは、これまでインフラに近いところで取り組まれきたのに対し、今後はもっと開発に近いレイヤーでの実現が必要になってきます。さらに、コンテナのセキュリティやアプリケーション間の通信制御の一つとして、サービスメッシュについてもNGINXは提供しています。アプリケーション間通信を軽量高速に、安定な制御を実現するために必要な機能です。

セキュリティ機能も充実したNGINX Ingress Controller

Kubernetesのクラスター上では、1つ以上のアプリケーションが動く。Ingress Controllerとは、それらサービスに対する外部からのアクセスを制御していて、ロードバランスやSSL終端、名前ベースの仮想ホスティングなどの機能を提供します。

たとえば、1つのクラスターに複数のサブドメインを割り当て、どのアプリケーションへのリクエストか、サブドメインやURLパスで判断しプロキシ制御を行う、いわゆるリバースプロキシというのが1つの機能となります。その他、ロードバランスやアクセス制限、あるいはPCかiPhoneかAndroidかなどUserAgentを見て振り分ける、というケースでも使われます。

Ingress Controllerの役割

そのIngress Controllerには複数の製品があり、F5が提供しているのが、NGINXをベースとする「NGINX Ingress Controller」です。

NGINX Ingress Controllerは、NGINXと同様に、オープンソース版と有償版とがあり、有償版では本番環境向けにより多くの機能が使えるようになっています。同じく本番環境のためのKubernetesプラットフォームであるOpenShiftには、2020年4月にリリースされたバージョン1.7.0から正式に対応しており、OpenShift 4.3以降で、軽量で高速なNGINXを外部からのアクセス制御機能として活用することができます。

OpenShiftとの親和性については、Red HatのOperator認定であるRed Hat OpenShift Operator Certificationを取得しており、OpenShiftのOperatorHubで『NGINX』で検索することができるため、簡単にインストールして使うことができます。

OperatorHubからのインストールと、NGINX Ingress Controllerの機能

前述のとおり、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)、認証などの機能を提供可能です。

その他、セッション維持やSSL証明書の動的アップデート、様々な負荷分散メソッドへの対応なども、非常に注目されている機能です。また、NGINXは毎月のように最新機能やアップデートが追加され機能強化されているため、HTTP/3にもいち早く正式対応を予定しており、そうした機能をKubernetesで使えるという点も大きな特徴の一つです。

NGINX Ingress Controllerの利用パターン

F5が誇るWAF機能を搭載したNGINX App Protect

こうした多くの独自機能の中でも、特に注目したいのはセキュリティ機能のNGINX App Protectです。NGINX Plusの動的モジュールとして提供される有償製品で、WAFの機能をNGINXに追加でき、NGINX Ingress Controllerにも対応しています。F5がBIG-IPで培ったWAFの機能を軽量で高速なNGINXの特徴を活かし移植した製品です。

NGINX App Protectの特徴
NGINX App Protectのセキュリティ機能

NGINX App Protectには、いろいろなセキュリティの機能が搭載されており、特に、よくる攻撃を定義した「OWASP Top 10シグネチャ」への対応により、世の中で流通している攻撃の7〜8割は防ぐことが可能となっています。また、そのシグネチャはF5によって定期的に更新されるため、最新の攻撃に常に対応していくことができます。そして、RFCで定義している通信プロトコルに準拠しているかを確認することで、ツールを使った正常な通信ではない攻撃等を防ぐことも可能です。そのほか、誤検知される場合にはそれを正す設定や、意図していないファイルアップロードやダウンロードを拡張子で判断し防ぐ機能もあります。

コンテナ領域で親和性の高いNGINX App ProtectとOpenShiftを連携させることで、これらの優れた豊富なセキュリティ機能をOpenShiftのIngress Operator上で有効にすることができるようになります。つまり、コンテナ環境へのアクセスに対して最適かつ強固なセキュリティを実現することが可能となります。

NGINX App Protectは高機能であると同時に、NGINXに最適化されたWAFであるため、もともとNGINXのもつ高いパフォーマンス性もそのまま実現しています。以前のオープンソース版ModSecurityのWAFモジュールに比べ、ベンチマークテストにおいてスループットも毎秒リクエスト数も、約20倍向上し、高速かつ安定した処理を実現しています。

またNGINXはソフトウェア製品であるため、CPUやメモリを簡単に増やしたり、台数を追加してパフォーマンスを改善したりすることも容易です。そのメリットを活かしたままWAF機能を展開できるため、マイクロサービスやコンテナ環境に最適なセキュリティソリューションだといえます。

NGINX App ProtectとModSecurity、どちらもない場合の性能比較

そのほか、NGINX App Protectは、日々のリリースと一緒にセキュリティポリシーもアップデートできるようCI/CDフレンドリーを実現しています。例えば、アプリケーション用のNGINX設定がGitHub上で管理されている場合、WAFのポリシーも同時に管理し、CI/CDパイプラインに組み込んでOpenShift環境に展開していくことができます。それによって日々のリリースとセキュリティポリシーの更新を、同時に行うことが可能です。

NGINX App ProtectとCI/CD

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製品はとても親和性が高いと考えています。

Red Hatには、コンテナイメージをスキャンして脆弱性を静的解析する機能Queyという製品があり、またコンテナOSであるRed Hat Enterprise Linux Core OSは、最小限の大きさでセキュアな設計を提供しています。NGINXはこれらとは異なる領域で、ユーザーからのリクエストに関するセキュリティを実現します。つまり組み合わせることで、コンテナの本番環境のおけるより高いセキュリティを実現することができるのです。

NGINXとRed Hatソリューション

"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."