保护 SQL Server 知识产权
适用于:SQL Server
软件开发人员经常关注如何将 SQL Server 数据应用程序分发给客户,但却忽视了如何防止客户分析和解构其应用程序。 此处的重要原则在于,保护知识产权是一个法律问题,许可协议中就会规定保护措施。 在其他人管理的计算机上安装 SQL Server 时,你必然会失去某些方面的控制权。
问题的性质
计算机的所有者/管理员始终可以访问在该计算机上安装的 SQL Server 实例。 如果你将自己的应用程序部署在客户的计算机上,由于客户是管理员,因此他们能够以 sysadmin 固定服务器角色成员的身份连接到 SQL Server。 这包括授予权限、管理备份(包括将备份还原到其他计算机)、解密和移动数据文件等功能。有关详细信息,请参阅“当系统管理员被锁定时连接到 SQL Server。
可以加密存储过程和数据,但无法隐藏数据结构。可将调试器附加到服务器进程的用户可在运行时从内存中检索已解密的过程和数据。
如果客户端不是计算机上的管理员,则你可以阻止客户端的访问。 你可以使用透明数据加密来加密数据文件、加密备份,以及审核所有用户的操作。 但是,SQL Server 管理员以及 SQL Server 计算机的管理员可以撤消这些操作。
解决方案
在未将 SQL Server 安装在客户端计算机上的情况下,可通过多种方式配置客户端数据访问。 最简单的方法可能是使用 Azure SQL 数据库(也许可以结合 Always Encrypted),使客户端不会成为管理员。 有关如何开始使用 SQL 数据库的详细信息,请参阅什么是 SQL 数据库?SQL 数据库简介。
还可以将 SQL Server 托管在自己的网络中,并允许客户端在你的网络中直接或通过 Web 应用程序访问数据。