设为首页 加入收藏

TOP

SQLServerSA最佳实践(也许不仅仅是翻译)(二)
2015-11-21 01:40:23 来源: 作者: 【 】 浏览:2
Tags:SQLServerSA 最佳 实践 也许 不仅仅 翻译
这些超级账号,曾经见过一篇文章,大概是超过90%的安全问题来自于内部,所以如何规范化才是重点。总有人说微软的产品如何不安全,Linux/Unix有多好,但即使美国国防部也做不到绝对安全。

另外在SQL Server中,默认会把Windows的本机管理员账号加进去。如果不管好SQL Server所在的服务器,没有sa照样可以自如操作,甚至把sa启用,也可以用其他账号模拟sa,另外sa只是个内置账号,完全可以创建sysadmin级别的账号来完成几乎所有操作。所以文中提到的保护方法很多是可以用在其他账号里面的,开发过程要注意。

对于开发过程中的思考,结合个人经历,有些工作的确要做到位:

1. 你是否启用了混合身份验证?虽然微软一直建议尽可能使用Windows身份验证,但是现实中很难做到,所以混合身份验证往往是必须开启的。这一步最好在安装SQL Server的时候就完成,并且不要让sa出现空密码。(最慢也在SQL Server 2008 的安装过程中拒绝使用简单密码作为sa密码了)

2. 开启混合身份验证之后,打好必要的补丁,创建开发和管理所需的SQL 身份验证账号。配置好适当的权限,这里要注意的一点,很多人虽然前面都做了,但是忽略了对账号的“默认数据库”选项做配置,如果你开了一个仅能访问某个用户库的账号,但又把默认数据库选项指到master库,一方面不安全,另外一方面可能出现登录失败的情况。默认情况下,master和tempdb是对任何账号都允许读的,但是其他库就不一样,如果你把某个账号的默认数据库指定到Msdb,但是这个账号没有对该库的任何权限,那么这个账号登录时就会出现登录失败的情况,也就是SQL Server错误日志中出现的“Login failed for user 'xx'. 原因: 无法打开在登录名属性中指定的数据库。”这种消息。这里根据个人经验,我建议对开发环境下,开发专用的账号直接指定到开发库。对于正式环境,大部分账号可以考虑直接指到tempdb,tempdb的作用估计大家都知道得七七八八了。所以就不累赘了。

3. 开发账号权限和密码可以适当低一点。但是sa账号,任何环境下仅只能少数人知道,并且禁用,作为备用就好。周期性修改密码是一个不错的选择。记住,不要以为内部人员就可以随意,对于正规公司,不管如何管理其他账号,都应该对sa做好管理,另外作为经验之谈,要在确保你最少有一个已知密码且还在启用的前提下才去对sa和Windows 的内置账号进行操作,否则很容易就出现SQL Server无法使用的情景,如果真出现所有账号都全被禁用或删掉的情况,可以尝试使用下面的方法,不保证万能,但是在没有办法的情况下是可以尝试的:

SQL Server 中 Windows账号被删的解决方法:

?

启用本地账户:

1.先看一下本机的账户是否具有管理员的权限,如果没有添加上。

2.在开始菜单的搜索框中输入 cmd , 右键单击选择以管理员身份运行

3.在命令提示符输入 NET STOP MSSQLSERVRE 停止MSSQLSERVER运行(若已经停止则可以不用此方法)

4.若3有问题,提示报错,则可以在开始 -->SQL SERVER --> 配置工具 -->SQL SERVER 服务 --> 打开SQL SERVER属性-->高级 --> 启动参数里面加上 -m

5.若以上均无问题,则切换到安装路径,即Binn下sqlservr.exe的路径如:cd C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn

6.执行 sqlservr.exe,即单用户模式进入了

7.再以管理员账户重新登陆开启一个窗口,输入SQLCMD -A

8.输入你要更改的操作命令即可,在此处我需要的是把本机账户添加 如:

USE master
GO
CREATE LOGIN [需要添加的账号,一般格式是 机器名\登录账号名] FROM WINDOWS WITH DEFAULT_DATABASE=[Master]
GO
EXEC sp_addsrvrolemember @loginame=N'机器名\登录账号名', @rolename=N'sysadmin'
GO

为了避免错误,可以再加一个SQL的账户以备不时之需, 也可以把sa命令启用

9.以上操作完成之后重新启动SQL SERVER服务登陆即可

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据库一对一,一对多,多对多关系 下一篇PLSQL中查询数据的时候查询结果显..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: