Facebook Osqueryの紹介

まえがき



この投稿は、Facebookブログで公開されているIntroducing osqueryの記事の比較的無料の翻訳です。



オスクエリの紹介



システムステータスのリアルタイム監視は非常に重要です。 Facebookでは、osqueryと呼ばれるフレームワークを開発しました。これにより、オペレーティングシステムの低レベルの監視を再確認できます。



Osqueryは、オペレーティングシステムを高性能のリレーショナルデータベースとして提供します。 このアプローチにより、SQLクエリを記述して、システムに関する情報を簡単かつ効率的に取得できます。 osqueryを使用すると、OSの現在の状態がSQLテーブルの形式で表され、そこから次の情報を取得できます。







SQLテーブルは、簡単に拡張可能なAPIを介して作成されます。 すでにいくつかのテーブルが存在し、さらに多くのテーブルが開発されています。 次の例は、osqueryが提供する使いやすさと表現力をよりよく理解するのに役立ちます。



リクエスト例



最初の例は、osqueryを使用して、現在のシステムで実行されているプロセスと対話する方法を示しています。 具体的には、このクエリは現在実行中のプロセスを返します。 このクエリのWHERE句は、バイナリから開始されたが、現在ファイルシステムに存在しないプロセスのみを返します。 これは攻撃者が使用する一般的な方法であるため、システムが危険にさらされていない限り、このクエリはシステムで結果を返しません。



SELECT name, path, pid FROM processes WHERE on_disk = 0;
      
      





SQLを使用したOSとの対話は、簡単で楽しいタスクです。 SQLが提供する利点の1つは、異なるテーブルを結合してシステムを分析できることです。 次の例では、listening_portsとプロセスという2つの「テーブル」からの情報を同時に使用する方法を示しています。 この要求は、ネットワークポートでリッスンしているすべてのプロセスを検索します。 したがって、前の例のプロセスの「テーブル」を使用して、別の「テーブル」、つまりネットワークポートテーブルと組み合わせることができます。 そことそこの両方で、プロセスのPIDが使用され、それによって結合が行われます。



 SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;
      
      





Osqueryには多くのテーブルが含まれており、さらに多くのテーブルが毎日作成されています。 テーブルは簡単に作成できるため、サードパーティの開発者による新しいテーブルの開発を気にせず、奨励することすらありません。 詳細情報はwikiで入手できます



特徴



Osqueryは、新しい製品とツールを作成するために使用するフレームワークです。 osqueryモジュラーソースコードは、既存の概念よりも優れています。 単一のオープンソースリリースの一部としていくつかのツールをリリースしていますが、やるべきことはまだたくさんあります。 また、コミュニティがosqueryベースのツールを発表する瞬間を楽しみにしています。



インタラクティブコンソール


osqueryiインタラクティブコンソールは、クエリを実行してOSを探索できるSQLインターフェイスです。 SQLのすべての表現力とosqueryに組み込まれた多くの便利なテーブルにより、コンソールはOSの問題の診断、パフォーマンスの問題の解決などのための非常に貴重なツールです。



wikiの osqueryの使用に関する詳細情報。



クラスター監視


大規模システムを監視するために、osquerydというデーモンがあります。 インフラストラクチャ全体でリクエストを実行するようにリクエストをスケジュールできます。 デーモンは、クエリの結果を時間ごとに集約し、インフラストラクチャの変更の状態を表示するログを生成します。 これを使用して、インフラストラクチャのセキュリティ、パフォーマンス、構成、および整合性ステータス情報を更新できます。 osquerydデーモンは、内部ログを堅牢なプラグインアーキテクチャと統合することもできます。



インフラストラクチャでosquerydを使用することに興味がある場合は、 内部の導入ガイドだけでなく、 wikiに再度招待します。



クロスプラットフォーム


Osquery-クロスプラットフォーム。 osqueryは低レベルのオペレーティングシステムでは利点がありますが、Ubuntu、CentOS、およびMacOSで構築して使用できます。 これにより、特定の利点が得られます。 企業のLinuxサーバーと同じレベルで企業のポピーを監視できます。



ネイティブビルドとドキュメント


展開を容易にするために、osqueryは、サポートされるすべてのオペレーティングシステム用の通常のパッケージとして提供されます。 独自のパッケージの作成に関する詳細なドキュメントもあります。 したがって、独自のosqueryツールの開発と実装はできるだけ簡単にする必要があります。

Osqueryは、既に実行中のシステムでプラグインのホットスワップを可能にするために使用される環境の特性を考慮して開発されました。 提供されたインターフェースを使用すると、使用されているプラ​​グインの1つ以上がニーズを満たさなくなった場合に、osqueryをインフラストラクチャにさらに深く統合できます。



詳細はこちら



モジュラーソースコード


Osqueryは、十分に文書化されたパブリックAPIを備えた高性能なモジュールコンポーネントで構成されています。 これらのコンポーネントを簡単に組み立てて、興味深い新しいアプリケーションやツールを作成できます。 APIの詳細はこちらです。



オープンソース


いくつかの外部企業と話をした後、オペレーティングシステムの低レベルの動作のこのような監視は、Facebook固有の問題ではないことに気付きました。 数か月後、osqueryを限られた数の企業向けのバイナリファイルとしてリリースしました。 彼らは機器にosqueryの実装とテストに成功し、彼らから素晴らしいフィードバックを得ました。

そして今、私たちはオープンソースのosqueryの時だと発表できることを嬉しく思います。 GitHubですべてのコードとドキュメントを見つけることができます。



コミュニティからのフィードバックをお待ちしています。 GitHubでosqueryを使用してすべての作業を行います。 これにより、サードパーティの開発者の作業が容易になります。 osqueryの可能性を見て、私たちと一緒に美しいことをしてください。



All Articles