首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模糊SQL Server数据库架构的方法?

模糊SQL Server数据库架构的方法?
EN

Stack Overflow用户
提问于 2011-11-25 14:53:46
回答 4查看 2.7K关注 0票数 1

有没有办法在SQL Server上隐藏数据库的架构?

如果我在客户端站点上安装了SQL Server Express,是否有办法使架构和数据变得模糊,这样其他人就无法从架构中提取数据并将其提取到其他产品中?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-01 14:45:41

这是一个棘手的问题,甚至可能不是100%可能的。但是,设置它有几个技巧:

  1. 使用自定义SA帐户(名称和密码)安装新的SQL server命名实例。有一种称为“无人参与安装”的SQL server安装方法,它允许您在ini文件中指定SQL server的所有安装参数,然后以静默方式运行安装。在这里查看文档:使用神奇的SQL安装脚本删除您的数据库、表、过程等(如果您愿意,可以使用加密的存储过程,但它们也可以删除自定义SA帐户的模式权限,并删除所有管理员角色的所有模式权限)。此处的目标是没有任何角色对您的数据库具有任何模式权限,只有您的自定义SA用户具有权限(不是通过角色分配的,而是直接分配给用户的)。

据我所知,有几个商业应用程序甚至没有告诉你他们正在安装MS SQL express的实例。它们也将创建自己的具有命名SA帐户的命名实例。作为一名客户,我不能说我喜欢这样(因为SQL会影响CPU,我不想让“秘密”实例在我的工作站上运行)。但只要你事先向客户透露这一点,他们就会理解。

**请记住,熟练的DBA可能知道如何处理系统表,以及哪些内容不能手动授予对数据库的访问权限。这些技术真的只是“迷惑”,不会是100%防弹的。

作为附注:随着可用的第三方数据层和webservice技术的过多,我认为许多公司发现他们的数据库模式本身就不再是专有的或有价值的了。曾经有一段时间,仅数据库模式就可以表示数百个小时的编码。但是今天,像EntityFramework,NHibernate,Linq-to-SQL,XPO等工具都是基于你的软件类定义和代码属性为你创建数据库模式。因此,仅仅看到一个DB表并不是很有价值。另外,您可能会在软件中编写一堆不在数据库模式中的业务逻辑、统计分析或其他辅助方法。在我看来,这就是今天“增值”的地方,在你的软件的业务逻辑、分析和报告功能中-而不是在原始的数据表中。

这也是为什么另一个帖子建议混淆存储过程,因为如果您编写了一些很好的分析和报告过程,这些存储过程的工作可能是数据库模式本身的许多倍。这也是客户最可能想要定制的,以满足他们自己的报告需求。您可能倾向于有一个策略,即自定义报告只能由您的公司完成(嘿,即使是像SAP这样的大公司也不知道谁可以修改什么)。

票数 1
EN

Stack Overflow用户

发布于 2011-11-30 16:44:37

模糊数据库模式的最好方法是不让它离开您的服务器。

即使您加密了模式,您仍然必须在某个地方提供密钥,如果客户决心获得它,他们将花费时间和金钱来做到这一点。

因此,你最好要么提供你的产品作为服务,要么通过做好工作来让你的客户忠诚。

票数 10
EN

Stack Overflow用户

发布于 2011-11-25 14:58:55

AFAIK,“不”

“锁定”数据库的最好方法是:

1)使用适当的角色和用户(理想情况下,使用您创建的SQL角色和SQL用户)进行安装

2)在SQL Server中显式限制对象权限

3)编写应用程序代码以尽可能多地使用SQL Server存储过程(而不是原始T-SQL

4)加密您的存储过程

这里有一个很好的关于"SQL Server最佳实践“的链接,您可能会感兴趣。它讨论了安全问题和一个(相对)新特性“用户模式分离”:

  • http://msdn.microsoft.com/en-us/library/dd283095%28v=sql.100%29.aspx
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8265664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档