2019年5月13日(月)にペパボ研究所とココン技術研究室との共同研究成果の発表会であるペパコンナイトを開催いたしました。
共同研究の概要
ペパボ研究所とココン技術研究室は、『「なめらかなセキュリティ」を実現するための新技術を創造する』を共通のミッションとして共同研究に取り組んでいます。 今回の成果発表ではペパボ研究所 所長の栗林(@kentaro)から、なめらかなセキュリティのコンセプトと共同研究の進め方をはじめに紹介しました。
セキュリティ対策では、新たなセキュリティ脅威に対して、セキュリティ施策を導入する、ルールを見直し厳しくするなど、際限なく物量を要求してしまうことがあります。 加えて、一度強化したセキュリティ対策は、セキュリティ脅威が弱まったとしても、継続され不要なコストに繋がる傾向にあります。 また、セキュリティ対策を強化することは、ユーザにとってサービス利用の安全性は増すものの、セキュリティ施策導入による面倒が増え利便性が損なわれてしまいます。 開発運用者にとっては、管理すべきルールや監視すべきログ、セキュリティイベントへの対応などが増加してしまいます。
我々は、このような課題を解決するために、以下に定義した、なめらかなセキュリティのコンセプトのもと共同研究を進めています。
システムの利用や運用におけるさまざまな障壁(ゴツゴツ)を取り除き、個々人に合わせた(パーソナライズした)セキュリティを必要な時に必要最小限の機能として提供することで、利便性を損なわず、かつプライバシー情報も守りながらセキュリティを実現する仕組み
本発表の中で、なめらかなセキュリティを実現するためのシステムの全体像として以下を提案しました。
このシステムでは、セキュリティサービスを提供する層としてEdgeを定義し、Edgeにセキュリティ施策を実現するマイクロセキュリティサービスを配置することで、個々人に合わせたセキュリティ対策を実施します。 また、セキュリティオーケストレータはユーザ要求を把握し、その時々に必要最小限のセキュリティを提供できるようにマイクロセキュリティサービスの配置を行います。
我々は、このシステムを実現するために、セキュリティWG、ログ分析/解析WG、AI(機械学習)WGの3つのワーキンググループでそれぞれ研究を進めています。
セキュリティWGの成果報告
ペパボ研究所 研究員の野村(Komei5296)です。セキュリティWGを担当しています。 セキュリティWGでは、なめらかなセキュリティにおけるEdgeに配置するマイクロセキュリティサービスを生み出すべく、Webセキュリティの研究に取り組んでいます。 今回の成果報告では、「Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法」の研究について発表しました。
この研究では、SQLインジェクションなどの攻撃からデータベースを保護するために、SQLクエリのホワイトリストを利用して不正クエリを検知する方法に着目しています。 ホワイトリストを作成するためには、開発者がWebアプリケーションが発行するクエリを手動でホワイトリストに登録する必要があります。 しかし、大規模なWebアプリケーションのホワイトリストを作成する場合、発行されるクエリは膨大となるため、それら全てのクエリをホワイトリストに登録することは困難になります。 また、Webアプリケーションの改修によって発行されるクエリは変化していくため、ホワイトリストは継続的に更新していく必要があります。 これらのことから、この方法は運用者への負荷が高くなってしまいます。 なめらかなセキュリティにおいては、ユーザや開発運用者の利便性を損なわずにセキュリティ施策を実現することが求められるため、この運用者への負荷は課題となります。
この課題を解決するために、Webアプリケーションのテスト実行中に発行されたクエリからホワイトリストを作成する方法を提案しました。 この手法は、開発プロセスのテストの段階にホワイトリストの作成を組み込みます。 これにより、Webアプリケーションが改修され稼働した後、即座に不正クエリの検知を行うことができます。 また、開発プロセスの中で、Webアプリケーションの変更とともにテストコードが整備されていくため、発行クエリの変化に追従してホワイトリストを更新できます。
提案手法を実現するために、セキュリティWGではtcpdpとsqdの2つのOSSを開発しました。 tcpdpはデータベースに発行されたクエリをロギングすることができます。 また、sqdはクエリログからホワイトリストを作成する機能とホワイトリストを利用した不正クエリを検知する機能を持っています。 これらを組み合わせて提案手法を実装しました。 tcpdpでテスト時に発行されるクエリのロギングを行い、このクエリログをsqdに入力として与えることでホワイトリストを作成します。 また、Webアプリケーション稼働時はtcpdpが出力するクエリログをsqdに入力として与えることで不正クエリの検知を行います。
評価では、正常なクエリを一部誤検知してしまうものの、SQLインジェクションによって発生した不正クエリを全て検知できることを確認しました。 今後は、ユーザの属性によって利用するホワイトリストを切り替え、よりパーソナライズ化されたセキュリティコンポーネントを目指していきたいと思います。
ログWGの成果報告
ココン技術研究室 主任研究員の阿部(@hirolovesbeer)です。 ログWGは、「なめらかなセキュリティ」を実現するため、大量のシステムコンポーネントから出力される大量のログの蓄積と、収集された大量のログから必要な情報を高速に検索することを目的とした研究を進めています。 本発表では、「なめらかなセキュリティ」のどの部分のログにフォーカスするか、収集したログをどうのように集中処理するか、さらにEdgeというキーワードに基づきどのようなログの分散処理を行えるかについて発表を行いました。
「なめらかなセキュリティ」に限らず、一般的なWebシステムやセキュリティシステムではログを一箇所に集中して集め、集中処理を行う場合が多いです。 ログの集中処理では商用製品、OSS、さらにはクラウドサービスなどたくさんの処理環境を用いることができます。 現状のログ処理は、それ自体が単体のサービスとして提供されることは少なく、機械学習への集計データの絞り込み、特定キーワードの特定時間でのカウントと評価、 ログの統計データを用いた統計的異常検知への応用というように、ログ処理を他の技術と組み合わせ用いられることが多いです。 「なめらかなセキュリティ」ではログを収集し、オーケストレータへデータを反映させることが主機能として用いられる想定でした。
大量のログを収集しかつ処理するための事前研究として、Hayabusaの実装に関して解説を行いました。 この実装は、SQLite3のFTS(Full Text Search)の実装を利用した、ログの意味解析を行わずにスキーマレスでログを格納する手法をとります。 さらに、1ファイルに格納されるデータは1分間のsyslogと限定をし、たくさんのデータベースファイルを生成するアプローチをとります。 これにより、コンピュータアーキテクチャの進歩によりCPUのコア数が増加していった場合にも、処理の並列度が向上するようにGNU Parallelというソフトウェアを利用し、SQLite3への検索クエリを並列に実行します。 CPUのクロック数、コア数、ディスクへのI/Oが高速であればあるほど、検索性能が向上するというシンプルで強力な検索アーキテクチャを実現しました。 これにより、144億行のsyslogデータへの全文検索が約7秒で完了するという結果を得られました。
さらにHayabusaにインスパイアを受けた実装として、ペパボのエンジニアである小山さんが、Harvestを実装しました。 Harvestは、Hayabusaと同様にFTSを用いますが、スキーマを定義することにより、どのサーバからのログかという情報と、時間情報を明示的に格納します。 これにより、システム全体でどのサーバからどのログがどのような順番で出力されるかを時系列に表示することが可能となり、 システムトラブル時や調査時の運用負荷を下げることができます。
また、The Platinum Searcherという、「find/grep/print」を高速に実行するツールを三宅さんが公開されています。 こちらのツールはGo言語によるバイナリポータビリティとCPUコアスケール性能を実現しています。 ログWGでは、すでにあるこれら効果的なツールを組み合わせ大規模処理を実現目指します。
しかしながらログの集中処理には利点もあれば欠点もあります。 本提案では、本来集中処理しか考えられないログ処理に対して、Edgeでの分散処理という新しい視点でのログ処理の提案を行いました。
「なめらかなセキュリティ」では、Edgeでのマイクロセキュリティサービスが提供されます。 つまりEdge自体に大量のログが蓄積されるわけです。 ログを集中的に処理させるには、どうしてもログの転送遅延や帯域を埋めてしまう問題が発生してしまいます。 そこでEdgeの中で必要なデータのみ集計して、オーケストレータに伝達する、またはEdgeの中で自律的に処理を完結させることができないかと考えました。
ここでの問題点はEdgeの規模性とマイクロセキュリティサービスへの到達性、マイクロセキュリティサービスを組み合わせたサービスチェーニングへの最適なルーティングになります。 まだ問題点や研究課題を考察中ではありますが、この規模性(数万〜数十万)とサービスディスカバリーの最適化手法が研究課題になり得ると考えています。
プロトタイプアーキテクチャを考察することで研究を進め、「なめらかなセキュリティ」にフィットするような形で成果を実現して行くことを目標としております。
AI(機械学習)WGの成果報告
ペパボ研究所 研究員/プリンシパルエンジニアの三宅(@monochromegane)です。 「なめらかなセキュリティ」のAI(機械学習)ワーキンググループを担当しています。 本ワーキンググループでは、「なめらかなセキュリティ」の実現に向けて横断的、局所的な情報(ログ)をもとに、AI(機械学習)を始めとした様々なアプローチによって判断や采配を賢く行う仕組みを作り上げることを役割としています。 今回の成果報告では、これらの取り組みのうち、資源スケジューリングに関する発表を行いました。
「なめらかなセキュリティ」においてはEdgeの存在を意識させないためパフォーマンスが重要です。 Edgeにおけるパフォーマンス向上のため各セキュリティコンポーネントの並列化もしくは実行基盤のスケーリングが有効と考えられます。 一方で個人化によりEdge数は増加することから運用面では資源采配の最適化が求められます。 同様にEdgeの多様性が増すことから、これらを手動でチューニングすることは困難です。
そこで、タスク並行数や実行基盤の並列数を環境に応じて自動的かつ継続的に最適化する手法を提案しました。 今回の発表では、提案手法の実装であるKaburayaとその評価結果について紹介しています。 Kaburayaではタスクに依存しない指標としてCPU使用率の変化に着目しこれを安定化させるためにフィードバック制御を用います。 また、タスクの進捗に伴いCPU使用率とその均衡点は継続的に変化することから、目標値を追従させる仕組みを設けました。
評価に用いたタスクでは並行数を自動的に求めながら一定の性能を確保することを確認できました。 今後は制御器の改善や指標の選定によって、最適化の精度向上を進め、「なめらかなセキュリティ」の実現に取り組みたいと思います。
まとめ
今回のペパコンナイトは、ペパボ研究所とココン技術研究室との共同研究成果の発表会であると同時に、なめらかなセキュリティに関する今後のビジョンをより明確かつ具体化していく機会でもありました。 これらの議論を通して、それぞれの研究の発展性を見出すことができたことが収穫であったと感じています。 また、当日は、質疑応答や懇親会での議論も活発に行わせていただきました。 今後も、これまでの研究をさらに進め、また統合し、なめらかなセキュリティの実現に向けて共同研究に取り組んでまいります。ご期待ください。
【PR】パートナー積極採用中!
ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。