菜单

数据安全柜使用说明

数据安全柜命令行工具(dv)使用说明

注意:以下命令需要 root 权限来执行,建议直接切换到 root 用户后再执行以下命令。

1. 命令结构

bash 复制代码
dv <子命令组> <操作> [参数] [选项]

dv 共 5 个公开子命令组(auth / domain / instance / audit / message)。

定位约定:除 create(安全域/实例创建)外,安全域一律按安全域编号 DOM_xxx 定位、
实例一律按实例编号 INS_xxx 定位,编号分别见 dv domain list / dv instance list。名称
可能重复,故不再支持按名称或公钥定位。审核申请按申请编号 APPLY_xxx(导出还需文件编号
FILE_xxx)定位,消息按消息编号 MSG_xxx 定位。

1.1 dv auth — 用户认证

dv auth 不要求预先登录;其余子命令组执行前都会校验登录态。

操作 说明 参数
login 用户登录 无。输出三方(Casdoor)登录链接,浏览器完成后在命令行粘贴授权码;已登录则直接返回当前用户
logout 用户登出 无。清空当前环境会话,并清除本地缓存的 token / refresh token
whoami 查看当前登录用户 无。输出认证用户名与认证用户 ID

1.2 dv domain — 安全域管理

create 外均按安全域编号 DOM_xxx 定位。标 ✎ 的操作仅安全域创建者可执行。

操作 说明 主要参数
create 创建安全域 -n, --name(2~32 字符,中/英/数字/_/-,必填)、--payer 创建者|使用者(必填)、--desc(≤500)、--users u1,u2
list 查看安全域列表 --status running|closed--archived(查看已归档)、--format table|json。列出「我创建的」与「共享给我的」安全域
show 查看安全域详情 --section info|users|instances|whitelist|exports|all(默认 all)。非创建者被强制限为 info 视图
update 更新安全域描述 --desc/--description(必填,≤500)。已关闭的安全域不可更新
close 关闭安全域 --force(跳过确认)。关闭后实例停止、加密文件无法继续访问
delete 删除安全域 --force(跳过确认)
archive 归档安全域 无。不改变状态,仅从默认列表移入归档视图
unarchive 恢复已归档安全域
add-user 添加可见用户 -u, --user <用户账号>(必填)。已关闭的安全域不可添加
remove-user 移除可见用户 -u, --user <用户账号>(必填)
encrypt 加密文件至安全域 -f, --file(必填)、-o, --output(默认源文件目录,文件名追加 .sealed)。安全域需处于运行中

1.3 dv instance — 安全域实例管理

create 外均按实例编号 INS_xxx 定位。实例数据只允许存放于 LUKS 加密盘,解锁/挂载/内核
注册等特权操作全部由 root 守护进程执行。

操作 说明 主要参数
create 创建安全域实例 -d, --domain <DOM_xxx>(必填)、-n, --name(必填)、--disk <块设备>(必填,需未挂载/未占用)、--whitelist <主程序路径>。典枢安全域实例由后端自动授权并自动启动,命令会同步等待至运行中
list 查看实例列表 -d, --domain--status pending|authorized|rejected|running--format table|json。默认仅展示当前账号创建的实例
show 查看实例详情 --section info|whitelist|exports|all(默认 all)。非 info 视图会把已授权申请自动提交到内核
start 启动安全域实例 --force(跳过确认)。仅创建者、仅「已授权」实例可启动;解锁 LUKS 盘并挂载到 /mnt/<实例编号>
delete 删除安全域实例 --force(跳过确认)。运行中实例会卸载并格式化加密盘,数据不可恢复
add-whitelist 添加应用白名单 -p, --path(必填,自动解析动态依赖)、--reason(≤500)。实例需运行中,提交后需审核
remove-whitelist 移除应用白名单 -p, --path <路径或名称>(必填)。同步移除内核白名单,需实例运行中
import 导入文件到实例 -f, --file(必填)。.sealed 文件用安全域私钥自动解密后写入挂载目录;实例需运行中
resolve 解析路径所属实例 <路径> [--format json]。判断路径是否为实例挂载路径;普通路径无需登录,供典枢客户端做导入前校验
export 提交文件导出申请 -f, --files <路径,路径...>(必填,逗号分隔)、--reason(≤500)。文件须位于实例挂载目录内,提交后需创建者审核
monitor 实时监控实例运行态 无。订阅运行态流,实时打印状态与最近一次内核事件(Ctrl-C 退出)

1.4 dv audit — 审核管理

均需安全域创建者身份。审核动作统一用 --action approve|rejectreject 可带 --reason

操作 说明 主要参数
list 查看待审核列表 --type instance|whitelist|export|all(默认 all)、--domain <DOM_xxx>
instance 审核实例化申请 <实例编号> --action。实例需处于「待审核」,已关闭安全域不可再审核
instance-detail 查看实例化申请详情 <实例编号>
whitelist 审核应用白名单申请 <申请编号 APPLY_xxx> --action
whitelist-detail 查看白名单申请详情 <申请编号 APPLY_xxx>
export 审核导出申请 <申请编号 APPLY_xxx> --file-code <FILE_xxx> --action。粒度为单个文件项,approve 时用安全域私钥生成 approveSign
export-detail 查看导出申请详情 <申请编号 APPLY_xxx> --file-code <FILE_xxx>

1.5 dv message — 消息中心

操作 说明 主要参数
list 查看消息列表 --filter all|unread--page(默认 1)、--size(默认 10)、--format。当前页已授权的白名单/导出消息会自动提交到内核
show 查看消息详情 <消息编号 MSG_xxx>。查看后若原为未读会自动标记为已读
read 标记消息为已读 <消息编号 MSG_xxx>
read-all 标记所有消息为已读
delete 删除消息 <消息编号 MSG_xxx> --force(跳过确认)

2. 全局选项

全局选项可出现在子命令组之前或之后,对所有命令生效:

选项 说明
-h, --help 显示帮助信息。dv --helpdv <组> --helpdv <组> <操作> --help 逐级细化
-v, --version 显示版本信息
--format <table|json> 输出格式,默认 table;主要影响 list / show 等列表与详情输出
--force 跳过确认提示。非通用选项,仅在危险动作中生效:domain closedomain deleteinstance startinstance deletemessage delete

补充说明:

  • 根帮助(dv --help)仅展示 -h-v--format 三项;--force
    归属具体动作。
  • --format json 除改变展示形式外,domain listinstance list 还会附带机器消费字段
    域类型所属安全域编号状态码挂载点);instance resolve --format json 会在
    stdout 最后一行输出单行 JSON(字段含义见「4. 退出码约定」)。

3. 典型流程

以下是一条从登录到日常运维的端到端流程;DOM_xxx / INS_xxx / APPLY_xxx 等编号均取自
对应的 list 输出。

bash 复制代码
# ── 登录 ──────────────────────────────────────────────
dv auth login                 # 输出三方登录链接,浏览器完成后粘贴授权码

# ── 安全域:创建者视角 ───────────────────────────────
dv domain create -n "研发数据域" --payer 创建者 --desc "研发敏感数据" --users alice,bob
dv domain list                # 列出「我创建的」+「共享给我的」,取 DOM_xxx 编号
dv domain list --archived     # 查看已归档安全域
dv domain show DOM_xxx --section users        # 查看可见用户
dv domain update DOM_xxx --desc "新的描述"
dv domain add-user DOM_xxx -u carol           # 追加可见用户
dv domain encrypt DOM_xxx -f /data/report.xlsx -o /tmp/out   # 生成 report.xlsx.sealed
dv domain archive DOM_xxx     # 归档(仅移出默认列表,不改变状态)

# ── 安全域实例:创建者视角 ───────────────────────────
# 实例数据只允许存放在 LUKS 加密盘;--disk 必须是未挂载/未占用的块设备
dv instance create -d DOM_xxx -n "开发实例1" --disk /dev/sdb1 --whitelist /usr/bin/python3
dv instance list              # 取 INS_xxx 编号;默认仅当前账号创建的实例
dv instance start INS_xxx     # 仅「已授权」可启动:解锁并挂载加密盘到 /mnt/<实例编号>
dv instance add-whitelist INS_xxx -p /usr/bin/python3 --reason "数据处理"   # 需审核
dv instance import INS_xxx -f /data/report.xlsx.sealed     # .sealed 自动解密后导入
dv instance export INS_xxx -f "/mnt/INS_xxx/result.csv" --reason "结果汇报"  # 需审核
dv instance show INS_xxx --section exports    # 查看导出申请,并自动提交已授权项到内核
dv instance monitor INS_xxx   # 实时运行态与最近一次内核事件(Ctrl-C 退出)
dv instance delete INS_xxx    # 运行中实例会卸载并格式化加密盘,数据不可恢复

# resolve 供典枢客户端等做导入前校验(普通路径无需登录)
dv instance resolve /mnt/INS_xxx --format json

# ── 审核:安全域创建者视角 ───────────────────────────
dv audit list                                 # 待审核:实例化 / 白名单 / 导出
dv audit instance INS_xxx --action approve
dv audit whitelist APPLY_xxx --action reject --reason "不符合规范"
dv audit export APPLY_xxx --file-code FILE_xxx --action approve   # 单文件粒度

# ── 消息中心:申请人视角 ─────────────────────────────
dv message list --filter unread   # 已授权的白名单/导出消息会自动提交到内核
dv message read-all

4. 退出码约定

  • 0 成功
  • 1 一般错误(后端/SDK 操作失败、未知命令组)
  • 2 参数错误或未知操作
  • 3 未登录
  • 4 权限不足(非安全域创建者)
  • 5 目标不存在(安全域/实例/申请/消息)
  • 6 名称已被占用(domain create)
  • 7 状态不允许(已关闭/已审核等;instance resolve 中表示实例未运行)
  • 8 安全域类型不符(instance resolve:路径实例属于用户安全域而非典枢安全域)

instance resolve <路径> --format json 的 stdout 最后一行为单行 JSON,reason 取值:ok / not_instance_path(退出码 5,普通路径,无需登录)/ unknown_instance_mount(退出码 5,形似实例挂载点但本地无记录)/ instance_not_running(退出码 7)/ not_dianshu_domain(退出码 8)。
domain listinstance list--format json 额外附带机器消费字段(域类型所属安全域编号状态码挂载点),表格输出不变。

最近修改: 2026-07-17