duetector是DataUCON项目中的组件之一,DataUCON项目旨在为数据使用控制提供支持。
duetector🔍是一个基于可扩展的的数据使用探测器,它可以在Linux内核中对数据使用行为进行探测(基于eBPF),从而为数据使用控制提供支持。
🐛🐞🧪 项目正在大力开发中,期待任何Bug报告、功能请求、合并请求
在ABAUC控制模型当中,duetector可作为PIP(Policy Information Point)来获取数据使用行为,从而为PDP(Policy Decision Point)提供数据使用行为的信息。
- 插件化系统,在例子获取更多细节
- 支持自定义
Tracer
和TracerManager
- 支持自定义
Filters
和FilterManager
- 支持自定义
Collector
和CollectorManager
- 支持自定义
Analyzer
和AnalyzerManager
- 支持自定义
- 配置管理
- 使用单一配置文件配置
- 支持生成插件配置
- 支持动态加载配置
Tracer
支持- 基于eBPF的tracer
- 基于shell命令的tracer
- 基于子进程的tracer
Filter
支持- 支持正则的模式匹配
- 遥测数据传输与分析
-
Analyzer
支持SQL数据库 -
Collector
支持SQL数据库和Opentelemetry(实验性)
-
- 用户接口
- 命令行工具
- PIP服务
- 控制平面
- 增强功能
-
RunC
容器云原生支持
-
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.
我们提供了一个Analyzer,它可以对存储中的数据进行查询,在这里我们提供了一个入门案例
我们提供了一个Duetector Server,作为外部PIP服务和控制接口
使用 duectl-server
可以启动一个Duetector Server,默认将监听 0.0.0.0:8120
,你可以使用 --host
和 --port
来修改它。
$ duectl-server start --help
Usage: duectl-server start [OPTIONS]
Start duetector server
Options:
--config TEXT Config file path, default:
``~/.config/duetector/config.toml``.
--load_env BOOLEAN Weather load env variables, Prefix: ``DUETECTOR_``,
Separator:``__``, e.g. ``DUETECTOR_config__a`` means
``config.a``, default: True
--workdir TEXT Working directory, default: ``.``.
--host TEXT Host to listen, default: ``0.0.0.0``.
--port INTEGER Port to listen, default: ``8120``.
--workers INTEGER Number of worker processes, default: ``1``.
--help Show this message and exit.
在服务启动后,访问 http://{ip}:{port}/docs
可以查看API文档。
同样的,使用 duectl-server-daemon start
可以在后台运行一个Duetector Server,你可以使用 duectl-server-daemon stop
来停止它
$ duectl-server-daemon
Usage: duectl-server-daemon [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
start Start a background process of command ``duectl-server start``.
status Show status of process.
stop Stop the process.
我们在readthedocs上为开发者和用户提供了API与配置文档,你可以在这里查看
本项目由哈尔滨工业大学(深圳)数据安全研究院发起,若您对本项目以及DataUCON项目感兴趣并愿意一起完善它,欢迎加入我们的开源社区。
wunder957 💻 |
MayDown 💻 |
tsdsnk 📖 |
zhemulin 📖 |
Mortal 📖 |
mingzhedream 📖 |
从good first issue了解如何开始,并阅读我们的贡献指南。
在这里了解本项目的设计思路和架构:设计文档
本项目使用 Apache-2.0 license,有关协议请参考LICENSE。