SQL Server 上的加密
SQL Server 上内置了加密用来保护各种类型的敏感数据。在很多时候,这个加密对于你
来说是完全透明的;当数据被存储时候被加密,它们被使用的时候就会自动加密。在其他
的情况下,你可以选择数据是否要被加密。SQL Server 可以加密下列这些组件:
·密码
·存储过程,视图,触发器,用户自定义函数,默认值,和规则。
·在服务器和用户之间传输的数据
密码加密
SQL Server 自动将你分配给登陆和应用角色的密码加密。尽管当你可以从主数据库中直
接察看系统表格而不需要密码。你不能给对这种情况作出任何修改,事实上,你根本不能
破坏它。
定义加密
在有些时候,如果对对象进行加密是防止将一些信息分享给他人。例如,一个存储进程
可能包含所有者的商业信息,但是这个信息不能和让其他的人看到,即使他们公开的系统
表格并可以看到对象的定义。这就是为什么 SQL Server 允许你在创建一个对象的时候进行
加密。为了加密一个存储进程,使用下面形式的 CREAT PROCEDURE 语句:
CREATE PROCEDURE procedurename [;number]
[@parameter datatype
[VARYING][ = defaultvalue][OUTPUT]]
[, …]
[WITH RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION]
我 们 关 心 的 仅 仅 是 可 选 的 WITH 参 数 。 你 可 以 详 细 说 明 ARECOMPILE 或 者
ENCRYPTION,或者你可以同时说明它们。ENCRYPTION 关键字保护 SQL Server 它不被
公开在进程中。结果,如果 ENCRYPTION 在激活的时候系统存储进程 sp_helptext 就会被
忽视,这个存储进程将被存储在用户创建进程的文本中。如果你不想要加密,你可以使用
ALTER PROCEDURE,忽略 WITH ENCRYPTION 子句来重新创建一个进程。
为了能够使用加密。用户和服务器都应该使用 TCP/IP NetworkLibraries 用来连接。运行
适当的 Network Utility 和检查 Force protocol encryption,看下表,用户和服务器之间的连接
将不会被加密。
加密也不能完全自由。当连接确定后,要继续其他的构造,并且用户和服务器必须运行代
码来解释加密和解释的包裹。这里将需要一些开销并且当在编译码的时候会使进程慢下来
如果网络包裹在你控制范围之外,使用这种做法是非常好的。
加密中缺少什么?
你可以注意到在这个列表中缺少一些被加密的东西:你表格中的数据。在你存储数据之
前,SQL Server 不会提供任何内置的工具来加密你的数据。如果你需要保护存储在 SQL
Server 上的数据,我们给你两条建议:第一,你可以利用 GRANT 和 DENY 关键字来控制
你想哪个用户可以在 SQL Server 中读取的数据。
评论0
最新资源