Skip to content

Latest commit

 

History

History
264 lines (190 loc) · 11.6 KB

README_zh.md

File metadata and controls

264 lines (190 loc) · 11.6 KB

DataUCon

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

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

English | 中文

简介

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

查看DataUCON的网页

深入了解并部署DataUCON

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

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

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

快速了解用户案例

加入我们的slack频道

目录

主要特性

  • 插件化系统,在例子获取更多细节
    • 支持自定义TracerTracerManager
    • 支持自定义FiltersFilterManager
    • 支持自定义CollectorCollectorManager
    • 支持自定义AnalyzerAnalyzerManager
  • 配置管理
    • 使用单一配置文件配置
    • 支持生成插件配置
    • 支持动态加载配置
  • 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进行分析

我们提供了一个Analyzer,它可以对存储中的数据进行查询,在这里我们提供了一个入门案例

使用Duetector Server

我们提供了一个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.

API文档与配置文档

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

维护者

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

Contributors

wunder957
wunder957

💻
MayDown
MayDown

💻
tsdsnk
tsdsnk

📖
zhemulin
zhemulin

📖
Mortal
Mortal

📖
mingzhedream
mingzhedream

📖

如何贡献

good first issue了解如何开始,并阅读我们的贡献指南

在这里了解本项目的设计思路和架构:设计文档

许可证

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