背景介绍
在云计算的迅猛发展下,越来越多的企业和个人开始将应用程序和数据迁移到云平台上,然而,随之而来的是对软件许可管理的需求。BYOL(Bring Your Own License),即“自带许可证”,作为一种灵活的授权模式,允许用户在使用云服务时,利用自己已购买的软件许可证,而不是被迫依赖于云服务提供商提供的许可证。这种方式不仅降低了成本,还提供了更高的灵活性和资源利用率。例如,一家企业已经在本地环境中购买了数据库软件的许可证。当他们决定将数据库迁移到云平台时,他们可以选择使用原本的许可证。这不仅节省了开支,还避免了对新许可证的依赖。
计算巢作为软件上云一站式平台,提供全面的解决方案帮助ISV将软件部署至云端。本文基于开源许可证管理平台Keygen,介绍如何在BYOL场景下实现计算巢的对接,涵盖许可证创建、验证及管理等关键流程,帮助用户顺利完成BYOL场景的云上部署。
问题描述
在BYOL(自带许可证)场景中,服务商需为终端用户提供许可证管理能力,但多数中小ISV缺乏自研License系统的技术能力,难以实现许可证签发、验证及生命周期管理,导致BYOL模式落地困难。
阿里云计算巢针对ISV在BYOL模式下的许可证管理困境,提出基于KeyGen的License解决方案:
免开发License平台:基于开源软件KeyGen,提供开箱即用的License管理服务,支持License创建、验证、更新等内容;
快速部署服务端:计算巢提供KeyGen服务,用户可一键部署,自动完成云资源创建与KeyGen软件的安装;
示例代码快速上手:文末提供示例代码,方便服务商快速集成KeyGen到自己的软件中。
操作步骤
本示例通过计算巢一方服务 KeyGen社区版,一键部署KeyGen服务端,并通过示例代码,介绍如何配置、运行代码以实现许可证的创建、过期、删除等流程。整体流程如下:
创建KeyGen社区版服务(服务端)
配置本地环境
进入服务实例详情,获取hosts参数,完成hosts配置:
当应用部署完成,服务实例详情处会展示hosts地址:
将此地址配置到hosts(注Windows和macOS不同),如下图为macOS,在终端中输入:
sudo vim /etc/hosts
将hosts地址粘贴到此处,输入:wq 保存退出,本地即配置完成。
示例代码配置与使用(客户端)
前期配置:
进入GitHub仓库下载示例代码,本地需安装Python。
在终端中进入示例代码-app文件,输入命令获取KeygenPolicyId和KeygenToken,命令格式为
python app.py [--username USERNAME] [--password PASSWORD] [--product_name PRODUCT_NAME] [--policy_name POLICY_NAME]
其中账号密码为计算巢服务创建过程中输入的账号密码(如下图账号为admin@example.com,密码为Abc123456),产品名称和策略名称可自行命名。命令截图:
命令最后将会返回KeygenPolicyId和KeygenToken:
将此参数填入conf - env.properties文件中,保存退出。
如何使用:
执行许可证管理操作,在终端中运行命令启动流程:
python keygen.py
系统将自动执行预置的6个关键动作:
创建许可证:生成唯一License ID;
获取许可证详情:返回授权策略、有效期等元数据;
合法性校验(有效状态):返回 Code VALID及当前剩余有效期;
设置许可证过期:模拟许可证到期状态变更(可用于测试自动停服逻辑);
合法性校验(过期状态):返回Code EXPIRED ;
删除许可证。
查看执行结果,返回结果如下:
终端输出中,示例代码中每个步骤的输入、输出均有日志展示。
对接开发/生产环境:
在实际开发/生产环境中,ISV可修改示例代码并将其集成至自身软件,实现完整的许可证管理功能:
颁发许可证:针对每个用户,服务商将为其颁发唯一许可证,获取唯一许可证ID,服务商需记录此ID,用于后续校验、延期、过期等操作;
扩展校验逻辑:在校验许可证函数中添加自定义规则,如许可证过期停止软件服务。
总结
计算巢提供了基于开源软件KeyGen的License服务端,通过计算巢可一键部署License服务端,快速帮助中小ISV搭建License管理平台。服务商通过简单配置即可连接上KeyGen服务端。同时,本文也提供Licenses生命周期管理的基本调用方法,服务商可将其集成至自身软件,实现完整的许可证管理功能。由于KeyGen是一个第三方许可证管理平台,计算巢集成该方案的流程适用于任何第三方许可证管理平台,若服务商已有自己的第三方License管理平台,同样可用本文方法接入。
- 本页导读 (1)
- 背景介绍
- 问题描述
- 操作步骤
- 总结