osqueryは、オペレーティングシステムを高性能なリレーショナルデータベースとして公開することで、SQLベースのクエリを使用してオペレーティングシステムデータを探索することを可能にします。osqueryのSQLテーブルは、実行中のプロセス、ロードされたカーネルモジュール、開いているネットワーク接続、ブラウザプラグイン、ハードウェアイベント、ファイルハッシュなどの抽象的な概念を表現します。
osquery-pythonは、osqueryの拡張をPythonで作成するための公式Pythonバインディングを含むプロジェクトです。以下に、osquery-pythonを使用してosqueryの拡張を作成する例を示します。
#!/usr/bin/env python
import osquery
@osquery.register_plugin
class MyTablePlugin(osquery.TablePlugin):
def name(self):
return "foobar"
def columns(self):
return [
osquery.TableColumn(name="foo", type=osquery.STRING),
osquery.TableColumn(name="baz", type=osquery.STRING),
]
def generate(self, context):
query_data = []
for _ in range(2):
row = {}
row["foo"] = "bar"
row["baz"] = "baz"
query_data.append(row)
return query_data
if __name__ == "__main__":
osquery.start_extension(name="my_awesome_extension", version="1.0.0")
このコードは、osqueryのシェルを起動してテストできます。Pythonの拡張を起動すると、”foobar”という名前のテーブルが登録されます。このテーブルは2行を返すことがわかります。
osquery-pythonを使用すると、osqueryの拡張を簡単に作成し、既存のosqueryデプロイメントに簡単にデプロイできます。これにより、内部APIやツールを利用した多くのプラグインを実装できます。
以上がPythonとosqueryを活用したシステムデータの探索についての記事です。この情報がPythonとosqueryの活用に役立つことを願っています。.