你这个问题牵扯面太广,可分为三个小方面。在数据库安全方面你可以选择安全级别达到B1级的我想就可以满足你了,可惜老外的数据库出口到中国来的最高只有C2级,安全方面差得远了,你如果想了解这方面的知识可以给我来Email。关于数据库备份你需要的是物理备份还是逻辑备份,当然定期的物理备份加上逻辑的增量备份可以让你在理论上不会丢失数据。算了要说的太多写不下了。[email protected]

解决方案 »

  1.   


        SQL Server的安全配置     除跟着微软打满所有补丁外,还需要加强数据库的安全。 
      首先,你需要加强象sa这样的帐号的密码,跟系统帐号的使用配置相似,一般操作数据库不要使用象sa这样的最高权限的帐号,而使用能满足你的要求的一般帐号。     接着对扩展存储过程开始大屠杀,首先就是xp_cmdshell,还有就是上面那些一大堆存储过程,都drop吧,一般也用不着。 执行: 
    use master 
    sp_dropextendedproc 'xp_cmdshell'     去掉guest帐号,阻止非授权用户访问。     去掉不必要的网络协议。     加强对数据库登陆的日志记录,最好记录所有登陆事件。可以用下面的简单DOS命令来查看日志: findstr /C:"登录" d:\Microsoft SQL Server\MSSQL\LOG\*.*     用管理员帐号定期检查所有帐号,是否密码为空或者过于简单,比如下面的语句: Use master 
    Select name,Password from syslogins where password is null     用下面语句对所有帐号,检查对存储过程和扩展存储过程的执行权,提防不必要的执行权限扩散: Use master 
    Select sysobjects.name From sysobjects, sysprotects Where sysprotects.uid = 0 AND xtype IN ('X','P') AND sysobjects.id = sysprotects.id     加强数据库的安全是非常重要的,有的数据库服务器是和WEB服务器隔离开的,这就同MAIL服务器一样,数据库的日志可能就基本很少去查看,这将会成为管理员的一个疏忽点。类似DNS、MAIL等等,数据库服务器往往成为各种入侵的跳板。 
      

  2.   

    在C2级的数据库中已经有了自主存取控制,也就是说某些人可能看不到他不该看的数据,但是这样的安全是不够的,如果有另外一个人它能够看到这些数据,尽管他没有管理的权限,他还是可以让你看到这些数据。例如:A看不到a1表,但是B可以看到a1表,而B不是a1表的属主又没有管理权限让A看到a1表,这时B可以新创建一个新表a2,内容来自a1表,由于B是a2的属主所以他可以管理这张表,让A看到a2,其实a2就是a1,这样就绕开了数据库的安全管理。但是到了B1级就不一样了,B1级中有了强制存取的概念,可以和自主存取控制一起‘向下读,向上写’,这样就安全多了,可以避免上面例子中的安全漏洞。但是从数据库的通信协议出发,一样可以了解相关的数据,要更加安全时需要B2级的数据库,B2级时的隐通道分析和控制可以让数据库更安全。说来说去,大家可能不理解,大家也没有数据库试。可能我说的对大家没什么帮助。
      

  3.   

    数据库的物理备份就是一般数据库都有的备份功能或增量备份功能,甚至将数据文件目录的文件全部拷贝走就可以实现物理备份。只是这样的物理备份不可能谁时进行,在上次做过物理备份后的数据就有可能丢失。这时可以利用逻辑备份的功能,当数据库做完物理备份后,利用SQL日志的形式记录下每一步的SQL语句。如果系统损坏,可以先用物理备份恢复,然后将记录在SQL日志的SQL脚本再执行一下就可以得到全部完整的数据。不过现有的数据库的日志文件功能不够或增长太快或打开日志严重影响运行效率。
      

  4.   

    如果两台或多台数据库分布协同工作情况就复杂多了,每一个数据库不仅需要记录本地的数据和字典,而且需要通知其他的数据库。一般情况下多台数据库的分布协同是通过通信协议进行通信的,用TCP/IP的居多。