Securing Checklists

本文属于SQL Server安全专题系列


    

  1. 确保非授权用户不能非法进入系统环境。
  2. 只安装所需的软件组件。
  3. 最小化访问SQL Server的用户,强烈建议借助操作系统使用Windows身份验证或者SQL On Linux的集成身份验证来访问。 
  4. 哪怕是DBA,也应该仅在需要时采用sysadmin登录,更安全的方式是使用Windows身份验证登录。
  5. SA帐号如果启用,应该设置强密码。但是依旧建议使用Windows身份验证。
  6. 使用存储过程或者视图替代直接访问底层表。
  7. 优先使用Windows身份验证。
  8. 强密码校验。可以考虑使用本人发布的代码:AccountInfos
  9. 不授予public用户任何权限。
  10. 移除已经不需要的帐号,最起码禁用。
  11. 除非没有办法,否则不要开启跨数据库所有权链接(cross database ownership chaining)
  12. 不授予非sysadmin角色的帐号有用执行xp_cmdshell权限。
  13. 生产环境中移除所有非生产库。
  14. 尽量不要在SQL Server服务器上创建网络共享。
  15. 创建足够、必要的审核功能。
  16. 不同的SQL Server服务使用不同的Windows域账号。
  17. 使用合适的帐号作为SQL引擎帐号,绝大部分情况下,本地管理员权限过高,而域管理员是不会用到的。
  18. 不要让SQL服务器暴露在外网,也不要让用户可以直连。
  19. 加密备份文件。
  20. 客户端与SQLServer直接尽量使用SSL或IPSEC加密。
  21. 考虑开机核心系统的TDE加密。
  22. 关闭不需要的功能。

除此之外,还可以把工作分为每日和每周检查:

每日检查:

  1. 备份情况:再次提醒,备份不仅仅是灾备概念。
  2. 夜间维护作业:不仅是SQL 层,还有Windows层和应用层,这些晚上作业很多时候都可能带来安全或性能风险。
  3. SQL Server ErrorLog:可以考虑本人共享的脚本:ReadErrorlogs
  4. SQL Server作业运行情况:同2

每周或每月检查:

  1. 备份有效性检查
  2. OS/SQL最新补丁
  3. 服务器容量检查:不够空间安全性也无从说起。
  4. 无效/过期帐号清理。

需要考虑之后再决定是否开启的功能:

    这个内容说简单也简单,说复杂也复杂,我们可以直接从下面语句中得到系统默认非高级功能的功能,一般情况下,这些功能都需要经过考虑再决定是否启用:

select * from sys.configurations where is_advanced=1
    建议读者如果没有充分了解这些功能之前,先不要启用。或者由专职DBA来负责。


你可能感兴趣的:(数据库管理,DBA,安全,SQL,Server,Security)