镜像概述
Databox Arbiter是Databox平台的核心Docker容器,负责管理数据流动,包括铸造令牌和控制存储发现。该容器通常不单独运行,仅用于调试目的或在Databox平台上下文中使用。
核心功能
- 管理容器记录及权限配置
- 铸造用于权限验证的macaroon令牌
- 提供Hypercat目录服务
- 支持容器权限的授予与撤销
使用场景
- Databox平台核心组件开发调试
- Databox应用或驱动开发者访问API文档
- 验证容器在Databox环境中的运行兼容性
配置说明
环境变量
- PORT: 服务端口(默认8080,仅支持HTTPS)
- CM_KEY: CM arbiter密钥,用于验证来自CM的请求
部署示例
Docker Run命令
bash
docker run -d \
-p 8080:8080 \
-e CM_KEY=your_cm_key_here \
docker.xuanyuan.run/databoxsystems/arbiter
覆盖端口示例
bash
docker run -d \
-p 8081:8081 \
-e CM_KEY=your_cm_key_here \
-e PORT=8081 \
docker.xuanyuan.run/databoxsystems/arbiter
API端点说明
CM-facing(适用于Databox核心组件开发者)
/status
- 方法: GET
- 描述: CM用于检查容器是否需要配置的端点,返回(active|standby)
- 响应: 200 OK,返回"active"
/cm/upsert-container-info
- 方法: POST
- 描述: 更新或插入容器记录及其权限(默认无权限)。需提供符合Hypercat 3.0规范的CM arbiter密钥(与启动时
CM_KEY环境变量匹配)
- 参数:
- name: 容器名称(必填)
- type: 容器类型(driver|store|app)
- key: 容器arbiter密钥
- 响应:
- 成功: 200 OK,返回更新后的容器记录(JSON格式)
- 错误: 401(缺失或无效API密钥)
/cm/delete-container-info
- 方法: POST
- 描述: 根据名称删除容器记录。需提供符合Hypercat 3.0规范的CM arbiter密钥
- 参数:
- 响应:
- 成功: 200 OK
- 错误: 401(缺失或无效API密钥)、400(参数缺失)
/cm/grant-container-permissions
- 方法: POST
- 描述: 为容器添加特定路由的权限。路由包含目标容器、API路径和HTTP方法,权限通过macaroon caveats编码。需提供CM arbiter密钥
- 参数:
- name: 容器名称
- route:
- target: 目标容器主机名
- path: API路径
- method: HTTP方法
- caveats: 路由特定的caveats数组(可选)
- 响应:
- 成功:200 OK,返回修改后的路由caveats数组(JSON格式)
- 错误:401(缺失或无效API密钥)、400(参数缺失)
/cm/revoke-container-permissions
- 方法: POST
- 描述: 撤销容器的特定路由权限。若路径为正则表达式,将撤销所有匹配项。需提供CM arbiter密钥
- 参数:
- name: 容器名称
- route:
- target: 目标容器主机名
- path: API路径
- method: HTTP方法
- caveats: 要删除的caveats数组(可选,若未指定则撤销该路由所有权限)
- 响应:
- 成功:200 OK,返回修改后的路由caveats数组或null(若所有权限被撤销)
- 错误:401(缺失或无效API密钥)、400(参数缺失)
Store-facing(适用于Databox开发者)
/store/secret
- 方法: GET
- 描述: 注册存储以允许arbiter铸造macaroon令牌,并让存储独立验证这些令牌。需提供符合Hypercat 3.0规范的容器arbiter密钥
- 响应:
- 成功:200 OK,返回用于验证容器macaroon的字母数字密钥
- 错误:401(缺失或无效API密钥)、500(arbiter未知容器类型)、403(非store类型容器无权使用令牌铸造功能)
Container-facing(适用于Databox应用或驱动开发者)
/cat
- 方法: GET
- 描述: 提供顶级Hypercat目录服务。需提供符合Hypercat 3.0规范的容器arbiter密钥
- 响应:
- 成功:200 OK,返回JSON编码的Hypercat目录
- 错误:401(缺失API密钥)
/token
- 方法: POST
- 描述: 为容器提供存储令牌。需提供符合Hypercat 3.0规范的容器arbiter密钥
- 参数:
- target: 验证macaroon的目标容器唯一主机名
- path: 令牌对应的API路径
- method: 令牌对应的HTTP方法
- 响应:
- 成功:200 OK,返回序列化的macaroon
- 错误:401(缺失/无效API密钥、权限不足)、400(参数缺失、目标未批准/未注册)