mirror of
https://github.com/ctwj/urldb.git
synced 2025-11-25 11:29:37 +08:00
3.4 KiB
3.4 KiB
插件安全机制
urlDB插件系统现在包含了一套完整的安全机制,包括权限控制和行为监控,以确保插件在安全的环境中运行。
权限控制系统
权限类型
urlDB插件系统支持以下权限类型:
-
系统权限
system:read- 系统读取权限system:write- 系统写入权限system:execute- 系统执行权限
-
数据库权限
database:read- 数据库读取权限database:write- 数据库写入权限database:exec- 数据库执行权限
-
网络权限
network:connect- 网络连接权限network:listen- 网络监听权限
-
文件权限
file:read- 文件读取权限file:write- 文件写入权限file:exec- 文件执行权限
-
任务权限
task:schedule- 任务调度权限task:control- 任务控制权限
-
配置权限
config:read- 配置读取权限config:write- 配置写入权限
-
数据权限
data:read- 数据读取权限data:write- 数据写入权限
权限管理
插件默认具有以下基本权限:
- 读取自身配置和数据
- 写入自身数据
- 调度任务
插件可以通过RequestPermission方法请求额外权限,但需要管理员手动批准。
权限检查
插件可以通过CheckPermission方法检查是否具有特定权限:
hasPerm, err := ctx.CheckPermission(string(security.PermissionConfigWrite))
if err != nil {
// 处理错误
}
if !hasPerm {
// 没有权限
}
行为监控系统
活动日志
系统会自动记录插件的以下活动:
- 日志输出(info, warn, error)
- 配置读写
- 数据读写
- 任务注册和执行
- 权限请求和拒绝
执行时间监控
系统会监控插件任务的执行时间,如果超过阈值会生成警报。
安全警报
当检测到以下行为时,系统会生成安全警报:
- 执行时间过长
- 数据库查询过多
- 文件操作过多
- 连接到可疑主机
安全报告
插件可以通过GetSecurityReport方法获取安全报告,报告包含:
- 插件权限列表
- 最近活动记录
- 安全警报
- 安全评分
- 安全问题和建议
使用示例
检查权限
hasPerm, err := ctx.CheckPermission(string(security.PermissionConfigWrite))
if err != nil {
ctx.LogError("Error checking permission: %v", err)
return err
}
if !hasPerm {
ctx.LogWarn("Plugin does not have config write permission")
return fmt.Errorf("insufficient permissions")
}
请求权限
// 请求写入配置的权限
err := ctx.RequestPermission(string(security.PermissionConfigWrite), pluginName)
if err != nil {
ctx.LogError("Error requesting permission: %v", err)
}
获取安全报告
report, err := ctx.GetSecurityReport()
if err != nil {
ctx.LogError("Error getting security report: %v", err)
return err
}
// 使用报告数据
安全最佳实践
- 最小权限原则: 只请求必需的权限
- 输入验证: 验证所有输入数据
- 错误处理: 妥善处理所有错误情况
- 资源清理: 及时释放使用的资源
- 日志记录: 记录重要的操作和事件
监控和审计
系统管理员可以通过以下方式监控插件活动:
- 查看插件活动日志
- 检查安全警报
- 定期审查插件权限
- 分析安全报告