我希望在VM映像从一个位置复制到另一个位置时检测任何唯一约束。我实际上这是作为产品许可服务修改的一部分,以防止许可证篡改。许可服务使用MAC ID来唯一标识许可证。这在物理机上工作正常,但是在复制的VM许可服务的情况下,无法将操作系统识别为单独的操作系统并调用许可证阻止。我只需要在复制/复制VM时更改的任何唯一元素。 (我省略了过度简化的细节)。 任何想法都赞赏。
答案 0 :(得分:0)
我知道要解决此问题的唯一方法是拥有许可服务器。当您向客户端(在VM上)输入许可证代码时,它会联系服务器并向其发送许可证代码和其他信息。它反复联系它(你定义间隔 - 可能每隔几个小时一次)询问'我还有效吗?'随着这个请求,它发送一个唯一的ID。服务器回复'是,你是有效',并发送一个新的唯一ID返回给客户端。客户端将此唯一ID返回,并将其下一个请求发送回服务器。
如果VM是重复的,下次它询问服务器“我是否有效?”时,唯一ID对于它或其他VM都是不正确的。两者都不会继续发挥作用。
如果服务器出现故障或网络出现故障,您将需要确定要执行的操作,以便客户端无法与服务器通信。你立即禁用你的软件吗?馊主意!不要让你的客户生气。你会想给他们一个宽限期。这应该多久?几天?周?
假设您给他们一个月的宽限期。理论上,他们可以在输入许可证密钥后立即克隆父虚拟机,然后在其宽限期用完之前将其他虚拟机恢复到此克隆,从而禁用对它们的网络访问。这对您的客户来说是一件麻烦事,只是为了盗版软件的额外副本。您必须确定哪种宽限期不会对您的合法客户造成麻烦,同时希望为您提供所需的保护。
通过验证VM的时钟设置是否正确,可以实现额外的保护。这将阻止上述盗版方法。
另一个考虑因素是,精明的用户可以编写自己的许可服务器来与VM实例进行通信,并告诉他们所有“你都很好” - 因此加密通信可以帮助阻止这种情况。你想到这里走多远取决于你认为盗版对你的客户有多大的影响。最终,你将无法阻止真正拥有时间的海盗,但你可以保持诚实的用户诚实。