系统授权license方案

简介: 软件系统设计关于授权时的一点见解

背景

  • 一体机的客户需求
  • 高校云系统搭建
  • 混合云场景

需求

  • 系统使用期限限制
  • 节点扩容限制
  • 无缝迁移限制

调研方案

  • 对于专业的license来讲,可能购买第三方提供的专业的授权保护方案产品,如:插件、u盾等
  • 软件打包后部署、启动时的环境限制:启动时采用特殊命令加以部署,无法让第三方独自部署,添加一些启动参数,写入程序启动main函数
  • 软件层面的自我保护,主要通过软件的自身授权形式:角色、菜单、资源授权等
  • 软件代码的反编译
  • 提供售后服务形式的软件授权:解禁基础、基本功能,不完全一次性提供全部功能,类似试用授权

实现

对于现在的环境,考虑现有的技术手段,可以采用混合的一些方式来实现。

方案

对于系统时间、节点扩容、无缝迁移的限制,可以采用Hash法来进行处理。根据截止时间、节点信息、使用的软件信息等来算出Md5后的结果,然后在部署时,各个微服务的网关入口根据也根据这些因素来算出一个Md5的结果,然后通过判断这两个值是否一样,从而判断是否有信息(截止时间、节点信息、使用的软件调度信息等)发生改变,一旦不一致,则会停止服务的访问。

  • 授权日期:开始时间、结束时间
  • 节点扩容:无法根本解决节点被加入集群,但可以从服务调度入手,需要对相关服务和Volcano定制化,防止任务被调度到客户人为加入的节点
  • 无缝迁移:可以获取客户提供的服务器、或提供的服务器的设备信息,绑定这些设备信息,让系统无法迁移到第三方未授权的机器

设备方面,由于系统时间、节点设备信息、节点调度的限制,可以采用Hash的方式进行处理,具体在改动方面,如果只是针对底层系统软件,那需要在网关方面进行入口校验Hash信息,Hash算法可以采用MD5算法:确定性,不可逆性。

其次,对于扩容,可以从调度层面绑定存在的节点设备,对于后续添加的节点设备不可被调度,这涉及到Volcano需求定制化。在Volcano选择节点的时候,需要选择当前所有符合的节点。

var nodes []*api.NodeInfo
if targetJob != nil && job.UID == targetJob.UID {
    klog.V(4).Infof("Try to allocate resource to target job: %s", job.Name)
    nodes = allNodes
} else {
    nodes = unlockedNodes
}


nodeScores := util.PrioritizeNodes(task, candidateNodes, ssn.BatchNodeOrderFn, ssn.NodeOrderMapFn, ssn.NodeOrderReduceFn)

node := ssn.BestNodeFn(task, nodeScores)
if node == nil {
    node = util.SelectBestNode(nodeScores)
}

同时在调度过程中,选择节点的关键是只能在已报备的节点中选择,或者只从当前Deviceplugin上报的节点中选择,这样就需要Deviceplugin在上报时,只能上报已经存在的节点,不上报后加的节点服务器。

对于系统的迁移,主要通过绑定设备的操作,来限制客户自主迁移系统服务。这一块在Hash中可以通过设备信息等进行Hash校验。

最后,对于运维系统,关闭添加节点的入口,除非用户得到授权许可。这里可以采用菜单权限管理限制,前期给予用户一般权限,在用户被授权后,可以更新角色,从而增加其访问权限。这一点,可能需要有服务开发的改动。

相关文章
|
Java 开发工具
mac下解决intellij idea启动慢和debug卡死问题
mac下解决intellij idea启动慢和debug卡死问题
4792 0
mac下解决intellij idea启动慢和debug卡死问题
|
7月前
|
人工智能 前端开发 API
AI 智能体(AI Agent)的开发费用
2026年AI智能体开发已转向“按智定价”:初级(3–8万)、专业级(10–30万)、多智能体系统(40万+)。费用核心在于逻辑深度、知识精度与工具复杂度,另含Token消耗、知识库维护及模型迁移等隐形成本。报价低于2万多为简易Prompt套壳。
|
8月前
|
人工智能 监控 测试技术
AI 应用软件的开发流程
2026年AI开发已升级为数据驱动、模型导向、高度自动化的AI-SDLC流程,涵盖需求评估、数据准备、模型开发(Prompt/RAG或微调)、架构集成、概率化测试及持续监控六大环节,强调不确定性管理与成本效能平衡。
|
8月前
|
人工智能 监控 安全
人体姿态[站着、摔倒、坐、深蹲、跑]检测数据集(6000张图片已划分、已标注)| AI训练适用于目标检测
高质量的数据集是 AI 模型成功的关键。本人体姿态识别数据集经过精心标注,覆盖多种常见姿态,既可以用于目标检测模型训练,也可用于行为分析研究。无论你是科研开发者还是工程应用者,这个数据集都能帮助你快速搭建人体姿态识别系统。本篇文章介绍了 人体姿态识别数据集(6000张图片) 的构成与使用方法。数据集覆盖五种常见姿态:站着、摔倒、坐、深蹲、跑,并按照 训练集与验证集(约5:1) 划分,保证了模型训练的效果与泛化能力。
1180 10
|
10月前
|
Linux Go 虚拟化
docker
Docker是基于Go语言的开源容器技术,实现“一次镜像,处处运行”。它通过容器化隔离应用,对比传统虚拟机更轻量、启动更快。核心组件包括镜像、容器和仓库,利用宿主机内核高效运行,广泛应用于开发、部署与运维全流程。
|
12月前
|
NoSQL Linux MongoDB
申威ky10架构安装MongoDB 4.0.1(rpm包:mongodb-4.0.1-8.ky10.sw_64.rpm)详细步骤
本文介绍在申威ky10架构、CentOS/RedHat系系统(如麒麟V10)上安装MongoDB 4.0.1的方法,包括环境确认、下载rpm包、依赖安装、使用rpm命令安装、服务启动与验证步骤,确保用户顺利完成部署并验证数据库运行正常。
1179 3
|
算法 Java 数据库
软件系统授权方案设计
软件系统授权方案设计
998 60
|
Java Linux Shell
centos7内网离线安装face_recognition、python、pip、CMake、dlib,离线升级gcc/切换gcc,文末有face_recognition的docker版本
公司项目需要人脸识别,本来app自带人脸识别,结果api支持的设备试了一圈就一个同事的华为Mate40Pro可以,所以使用无望。接着找了一下免费的java离线人脸识别sdk,发现虹软的确实简单好用,一会就在linux上弄好并测试通过了,然而在准备集成进去开写代码时,不小心看到了一眼首次激活需联网,后续方可离线使用,好吧,我们内网机器首次都不可能的,接着看了下离线激活方法,首先需要企业认证,这一步我们肯定没法做的,毕竟不是之前的小公司了,营业执照啥的随便给我肯定不行,直接放弃了。后来在同事推荐下看了下face_recognition这个项目,之前基本没用过python,于是有了漫长的踩坑之旅。
1896 1

热门文章

最新文章