设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

专访黄钊吉:SQL Server现已经向云过渡

2013-4-18 10:14| 发布者: joejoe0332| 查看: 1444| 评论: 0|原作者: CSDN|来自: CSDN

摘要:   黄钊吉,SQLServer DBA、2013年4月MVP、MCITP、CSDN论坛SQLServer基础版版主、CSDN博客专家。3年SQLServer开发经历,2年SQLServer 2008R2、SQLServer 2012 数据库管理经历。参与过广发银行东莞分行、广州银行总 ...

  • SQLServer现在已经向云过渡

  CSDN:SQL Server安全问题一直备受大家关注,在你的工作实践中有什么心得可分享?

  黄钊吉:我个人觉得,安全性这个问题不应该独立出SQLServer这部分来说,如果Windows的管理员密码给破解了,你的SQLServer还有安全性吗?所以安全性这个问题,应该从整套来说起,首先应该是从架构上的安全性来说,OS、网络这些安全性你要先确保,但是我不是专业的网管和系统管理员,这部分我懂得不多,就不乱搀和了。

  对于SQLServer,首先要确保其服务的启动账号的安全性,这部分其实是Windows层面的东西,如果这些Windows账号也给破解了,那自然也不会有什么安全性可言。2008权限方面已经初具规模,不过理解起来还是很费力,我有一个海报大小的权限图,相当复杂,这部分要说,恐怕不是一两篇可以说清楚。

  就我个人工作经验,合理借用Windows的组、Windows身份验证,可以在很大程度上简化工作。比如我们公司都是在域内,我在域中创建多个组,如开发组、测试组,然后整个组加到SQLServer中,可以方便统一管理,有人离职或者入职,直接修改Windows的组即可,根据角色的身份来规定权限。由于我们公司的Windows层面管控非常严格,登录都需要安装证书,所以很多时候我会把安全{敏感词}给Windows 。不过借助2008的许多新特性如CDC、基于策略的管理(PBM)、DDL触发器等,还是可以做好一些侵入防御。总得来说除非你清楚理解了权限是什么东西,不然安全性也只是对外行人才具有一定的效果。也并不是非要把安全性做得如何如何完美,才算安全,严格遵循安全性三角原则,并把SQLServer的外围配置做好,其实就差不多了。

关于保护SQLServer 安全的原则:最小权限原则、CIA三角和深度防护。

  • 最小权限原则:

只授予所需的最小权限;

最简单的解决方案是让用户成为固有数据库角色:db_datareader成员,然后创建select权限创建数据库角色,并且只授权用户需要访问的表,让用户成为这个新角色的成员。远程连接在一些机器上不适合启用。

  • CIA三角:机密性、完整性、可用性
  1. 机密性:未授权的人或者使用未授权的方法不能访问数据;
  2. 完整性:未授权的人或者使用未授权的方法不能修改数据;
  3. 可用性:已授权的人随时可以使用数据;

以上三种特性缺一不可,并且要保持一种合理的平衡状态。哪一方过严密,都会导致失衡。

  • 深度防护:
  1. 建立多层防护来避免收到攻击;
  2. 外围的外部路由器;
  3. 外围的防火墙;
  4. PC自带的个人防火墙;
  5. PC上运行的防病毒软件;
  6. 补丁管理方法和开发软件;

保证这5层防御,能使得受攻击的机会降到微乎其微。如果都出现灾难故障,那么PC将成为攻击的牺牲品。

  CSDN:SQL Server2012在性能优化上相对于SQL Server2008做了哪些改进?增加了哪些性能优化技术或者工具?SQL Server2012在实际使用中DBA需要注意什么?

  黄钊吉:SQLServer2012对比与SQLServer2008 ,主要提升并不在性能,更多的是在管理方面,听说SQLServer2012下一个版本,有传言是内存数据库,这部分对性能的提升会更大,如内部优化算法的改进,将有较大的提升。目前据我了解SQLServer2012新加了部分对性能优化有用的DMO,除了在OLAP上的列存储索引在性能上有显著的效果之外,对OLTP还是比较少的改进。对于SQLServer2012,更多应该关注其管理方面的改进,特别是AlwaysOn。

  CSDN:SQL Server开发中有哪些常见的问题?

  黄钊吉:按这么多年的经验,其实也不是很多年,开发人员最容易犯的错误就是把面向过程面向对象的思想带入面向集合的关系数据库开发中。很多人用一行一行处理的思维面对超百万甚至千万的数据量,别说慢了,有时候直接导致SQLServer挂掉。所以应该建立好面向集合的思维,对一个“集合”操作而不是一行一行处理问题,当然有些特定情景还是不可避免需要一行一行操作,这时候就要衡量是否有这样的必要,能否有别的方法代替。

然后就是编码的规范性。开发的人通常并不是维护代码的人,他们很少去考虑维护成本,我就见过超3000行的代码,几乎没有注释,看懂它用了我好几天,这些时间并不是所有的公司都能接受的,所以规范性任何时候都应该遵循。维护的人少点不必要的麻烦,也自然会少点来麻烦开发人员,大家工作都开心,何乐而不为呢?

  最后比较常见的就是一步一步地实现功能,而很多情况下,其实可以用更少的代码和步骤去实现,据我优化的经验,其实最本质就是一个字“少”,更少的步骤、更少的开销、更少的代码(这个大多数是为了维护需要)等等,一步一步实现并不是不行,但是经常会出现重复操作,这部分又往往是性能瓶颈,加上开发人员多数是为了实现功能而开发,这个当然是前提,但是除了开发出正确的功能,还要考虑性能,因为最清楚代码的人就是写代码的人。一个不考虑性能的开发人员,永远成不了高级程序员。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部