chore: track version files, docs, web app split, scripts (missed commits from March work)
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# Advanced Override 开关说明(INP2P)
|
||||
|
||||
> 目标:在不破坏默认最小权限模型的前提下,提供**临时、可审计、可回滚**的越权能力。
|
||||
|
||||
## 1. 开关清单
|
||||
|
||||
## 总开关(必须先开)
|
||||
|
||||
- `advanced_override_enabled`
|
||||
- `0`:关闭(默认)
|
||||
- `1`:开启
|
||||
|
||||
> 总开关关闭时,所有越权子开关均不生效。
|
||||
|
||||
## 越权子开关
|
||||
|
||||
- `allow_apikey_mutate_sdwan`
|
||||
- 允许 `apikey` 执行 `mutate_sdwan`(如 `POST /api/v1/sdwan/edit`)
|
||||
- 默认 `0`
|
||||
|
||||
- `allow_operator_kick_cross_node`
|
||||
- 预留:允许 operator 执行更高风险节点控制(当前主要用于后续扩展)
|
||||
- 默认 `0`
|
||||
|
||||
- `allow_connect_cross_tenant`
|
||||
- 允许 operator 在 connect 目标检查中放宽跨租户限制
|
||||
- 默认 `0`
|
||||
|
||||
## 兼容旧开关(保留)
|
||||
|
||||
- `advanced_impersonate`
|
||||
- `advanced_force_network`
|
||||
- `advanced_cross_tenant`
|
||||
|
||||
---
|
||||
|
||||
## 2. 默认安全策略
|
||||
|
||||
- 所有高级开关默认 `0`(关闭)
|
||||
- 仅系统管理员(`tenant_id=1` 且 `role=admin`)可在 `/api/v1/admin/settings` 修改
|
||||
- `master token` 仍禁止访问 tenant API
|
||||
- 默认禁止跨租户写操作
|
||||
|
||||
---
|
||||
|
||||
## 3. RBAC 行为
|
||||
|
||||
系统先走基线权限 `TenantCan`,若基线拒绝,再尝试 `TenantCanWithOverride`:
|
||||
|
||||
1. 若 `advanced_override_enabled != 1` → 拒绝
|
||||
2. 若命中对应子开关 → 放行(并记录 override 审计)
|
||||
3. 否则拒绝
|
||||
|
||||
当前已接入接口:
|
||||
|
||||
- `POST /api/v1/sdwan/edit`
|
||||
- `POST /api/v1/nodes/apps`
|
||||
- `POST /api/v1/nodes/kick`
|
||||
- `POST /api/v1/connect`
|
||||
|
||||
---
|
||||
|
||||
## 4. 审计事件
|
||||
|
||||
## 开关配置审计
|
||||
|
||||
- `setting_change`
|
||||
- `target_type=setting`
|
||||
- `target_id=<key>`
|
||||
- `detail=<value>`
|
||||
|
||||
## 越权使用审计
|
||||
|
||||
- `rbac_override_used`
|
||||
- 示例 detail:
|
||||
- `action=mutate_sdwan tenant=4`
|
||||
- `action=mutate_connect tenant=3`
|
||||
- `action=connect_cross_tenant tenant=3 from=a to=b`
|
||||
|
||||
## connect 失败审计
|
||||
|
||||
- `connect_request_denied`
|
||||
- 典型 reason:
|
||||
- `source_offline`
|
||||
- `tenant_mismatch_source`
|
||||
- `target_offline`
|
||||
- `tenant_mismatch_target`
|
||||
|
||||
---
|
||||
|
||||
## 5. 启用与回滚(操作手册)
|
||||
|
||||
## 启用(示例)
|
||||
|
||||
```bash
|
||||
BASE=http://127.0.0.1:27183
|
||||
ADMIN_TOKEN=<system-admin-session-token>
|
||||
|
||||
curl -s -X POST "$BASE/api/v1/admin/settings" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key":"advanced_override_enabled","value":"1"}'
|
||||
|
||||
curl -s -X POST "$BASE/api/v1/admin/settings" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key":"allow_apikey_mutate_sdwan","value":"1"}'
|
||||
```
|
||||
|
||||
## 回滚(推荐顺序)
|
||||
|
||||
```bash
|
||||
# 先关子开关
|
||||
curl -s -X POST "$BASE/api/v1/admin/settings" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key":"allow_apikey_mutate_sdwan","value":"0"}'
|
||||
|
||||
curl -s -X POST "$BASE/api/v1/admin/settings" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key":"allow_connect_cross_tenant","value":"0"}'
|
||||
|
||||
curl -s -X POST "$BASE/api/v1/admin/settings" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key":"allow_operator_kick_cross_node","value":"0"}'
|
||||
|
||||
# 最后关总开关
|
||||
curl -s -X POST "$BASE/api/v1/admin/settings" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key":"advanced_override_enabled","value":"0"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 风险与建议
|
||||
|
||||
- 建议仅在临时排障窗口启用,完成后立即回滚。
|
||||
- 启用前后均应检查审计日志,确认“谁在何时以何种方式使用了越权能力”。
|
||||
- 生产环境优先保持:
|
||||
- `advanced_override_enabled=0`
|
||||
- `allow_* = 0`
|
||||
Reference in New Issue
Block a user