Skip to main content

duetector

Project description

duetector🔍: 支持eBPF的可扩展数据使用探测器

Actions Status Documentation Status pre-commit.ci status LICENSE Releases Pre Releases Last Commit Python version

中文 | English

简介

duetector是DataUCON项目中的组件之一,DataUCON项目旨在为数据使用控制提供支持。

查看DataUCON的网页

深入了解并部署DataUCON

duetector🔍是一个基于可扩展的的数据使用探测器,它可以在Linux内核中对数据使用行为进行探测(基于eBPF),从而为数据使用控制提供支持。

🐛🐞🧪 项目正在大力开发中,期待任何Bug报告、功能请求、合并请求

ABAUC控制模型当中,duetector可作为PIP(Policy Information Point)来获取数据使用行为,从而为PDP(Policy Decision Point)提供数据使用行为的信息。快速了解用户案例

目录

主要特性

  • 插件化系统
  • 配置管理
    • 使用单一配置文件配置
    • 支持生成插件配置
    • 支持动态加载配置
  • 基于eBPF的数据使用探测器
    • 文件打开操作
    • ……
  • 基于Shell命令的探测器
    • 内核信息探测
    • ……
  • 支持SQL数据库的数据收集器
  • CLI工具
  • PIP服务

eBPF程序需要内核支持,详见内核支持

安装

代码通过Pypi分发,你可以通过以下命令安装

pip install duetector

目前,代码依赖BCC对eBPF代码进行即时编译,推荐安装最新的BCC编译器

或使用我们提供的Docker镜像,其使用JupyterLab作为示例用户应用,您也可以自行修改Dockerfile启动脚本来自定义用户程序

docker pull dataucon/duetector:latest

预发布版本将不会更新到 latest上,您可以指定tag进行拉取,如 v0.0.1a

docker pull dataucon/duetector:v0.0.1a

使用docker镜像运行的更多细节请参考这里

快速开始

使用命令行启动monitor,由于bcc需要root权限,所以我们使用 sudo 命令,这将启动所有的探测器,并将探测内容收集到当前目录下的 duetector-dbcollector.sqlite3文件中

sudo duectl start

按下 CRTL+C可以退出监测,你将看到屏幕上输出了一段总结

{'DBCollector': {'OpenTracer': {'count': 31, 'first at': 249920233249912, 'last': Tracking(tracer='OpenTracer', pid=641616, uid=1000, gid=1000, comm='node', cwd=None, fname='SOME-FILE', timestamp=249923762308577, extended={})}}}

启动 DEBUG日志

sudo DUETECTOR_LOG_LEVEL=DEBUG duectl start

启动时,配置文件将自动生成,对应路径为 ~/.config/duetector ,修改这个配置文件可以修改数据库地址等内容,可以使用 --config指定使用的配置文件

sudo duectl start --config <config-file-path>

也支持使用环境变量进行配置:

Usage: duectl start [OPTIONS]

  Start A bcc monitor and wait for KeyboardInterrupt

Options:
  ...
  --load_env BOOLEAN            Weather load env variables,Prefix: DUETECTOR_,
                                Separator:__, e.g. DUETECTOR_config__a means
                                config.a, default: True
  ...

当使用插件时,默认的配置文件不会包含插件的配置内容,使用动态生成配置的指令生成带有插件配置的配置文件,这个指令也支持合并当前已有的配置文件和环境变量

duectl generate-dynamic-config --help

当配置文件出错时,可以使用 generate-config 恢复默认状态

duectl generate-config

更进一步的,后台运行可以使用 duectl-daemon start命令,这将会在后台运行一个守护进程,你可以使用 duectl-daemon stop来停止它

使用 duectl-daemon --help 获取更多细节:

Usage: duectl-daemon [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  start   Start a background process of command `duectl start`.
  status  Show status of process.
  stop    Stop the process.

更多文档和例子可以在这里找到。

API文档与配置文档

我们在readthedocs上为开发者和用户提供了API与配置文档,你可以在这里查看

维护者

本项目由哈尔滨工业大学(深圳)数据安全研究院发起,若您对本项目以及DataUCON项目感兴趣并愿意一起完善它,欢迎加入我们的开源社区。

如何贡献

非常欢迎您的加入!我们欢迎任何类型的Issue,同时也期待您的PR

我们提供了以下资料让您更快了解项目

如何开发插件

目前,tracer、filter、collector都支持自定义插件开发,以Python包作为单个插件或多个插件,可以查看自定义插件示例了解开发步骤

TODO: 提供一个插件的cookiecutter模板

许可证

本项目使用 Apache-2.0 license,有关协议请参考LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

duetector-0.1.0a0.tar.gz (190.6 kB view hashes)

Uploaded Source

Built Distribution

duetector-0.1.0a0-py3-none-any.whl (51.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page