SQL Server的安全性是由多个层次构成的:网络、操作系统、服务器以及数据库。这些层次需要分别进行加强,因为它们其中任何一个出现问题都会导致整个方案的失败。 网络和操作系统安全已经在本系列文章的第一部分讨论过。本文将探讨数据库和服务器层面的保护。
服务器安全属性 在服务器属性选项卡中,可以通过xp_cmdshell指定一个“服务器代理帐号”。我再次强烈推荐,如果使用xp_cmdshell,我推荐给代理帐号优先较低的权限。 特别地,服务器属性中有2个值得注意的设置:Enable C2审计跟踪和Enable Common Criteria规范。 Enable C2审计跟踪允……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
SQL Server的安全性是由多个层次构成的:网络、操作系统、服务器以及数据库。这些层次需要分别进行加强,因为它们其中任何一个出现问题都会导致整个方案的失败。
网络和操作系统安全已经在本系列文章的第一部分讨论过。本文将探讨数据库和服务器层面的保护。
服务器安全属性
在服务器属性选项卡中,可以通过xp_cmdshell指定一个“服务器代理帐号”。我再次强烈推荐,如果使用xp_cmdshell,我推荐给代理帐号优先较低的权限。
特别地,服务器属性中有2个值得注意的设置:Enable C2审计跟踪和Enable Common Criteria规范。
Enable C2审计跟踪允许跟踪数据驱动的对象访问——包括成功或失败的,除非有专门的控制或服务器关闭,它会随着时间一直增长。
Enable Common Criteria规范会导致内存在被重新分配前被重写。虽然这能够增强系统的安全性,但内存的申请会减慢。而且,这个选项也会改变登录审计和权限设置。因此,在打开这个选项之前,应该要小心设计数据库权限,以及性能需求。
SQL Server SSL安全性
SQL Server Configuration Manager控制所有SSL使用。
如果安装了证书,右击“Protocols for S2K8”,然后选择“Properties”,就会出现下面的屏幕。
在“Flags”和“Certificate”选项卡中,可以指定是否需要强制加密。
在一个高度安全的生产系统,最好是选择强制加密。我推荐在生产系统中设置“Hide Instance”为“Yes ”。这是因为在一个生产系统中允许SQL Server浏览服务定位一个实例会使定位和攻破一个生产SQL Server变得更容易。
而且,在生产环境中,最好避免使用自有签名证书,因为它可能被中间人攻击所攻破——中间人攻击是通过单独连接每一个目标并延迟它们之间的消息来进行窃听的攻击方式。在开发/QA环境中,这将取决于系统所需要的工作安生性级别。
SQL Server终端安全性
当一个终端创建后,要保证状态只有在需要时才启动,同时使用一个非标准端口(通知网络组端口号以及使用的TCP协议)和允许/要求的加密。
只有需要的端口才应该打开,并且只打开要求的协议。假定网络不是加密流量,我建议设置加密为“required”。在下面的情况中,其它终端将必须设置为必需的(或支持的)。
CREATE ENDPOINT endpoint_mirroring
STATE = STARTED
AS TCP ( LISTENER_PORT = 8035 )
FOR DATABASE_MIRRORING (
AUTHENTICATION = WINDOWS KERBEROS, ENCRYPTION = SUPPORTED,
ROLE=ALL);
下一步是给终端赋予权限。考虑到安全性问题,我建议不要使用基本的认证。同时还应该限制连接访问到最少的登录可能。更好的做法是,使用仅限于这个终端或在企业中使用范围很小的登录身份。
GRANT CONNECT on ENDPOINT::endpoint_mirroring TO [DomainConnectingUser];
GO
SQL Server服务帐号安全性
每一个SQL Server服务应该用不同的Active Directory (AD)帐号安装。绝不应该给一个SQL Server服务单独一个AD帐号域管理员。
这是因为人们都会有懒性而牺牲安全性来简化使用方法。每一个SQL Server服务都应该使用不同的帐号,因为每一个服务都使用要求锁定不同权限的不同的功能领域。另一方面,你的SQL Server服务AD帐号也可能不需要访问Internet或交互登录的权限。
在数据库系统中,整个系统的任何一个方面的缺陷都可能被利用来获取重要系统的访问。因此,重要的是要考虑各个系统层——网络、操作系统、服务器和数据库——是互联的。
作者
Matt在SQL Server和Oracle这两个领域具有12年的经验。他获得微软MCITP认证、是一名数据库开发人员,他还获得了计算机科学专业硕士学位是SQL Server数据库系统高级软件工程师,范围从2 GB到3+ TB、2k和40+ktrans/sec之间。目前他任职于IGT公司,同样是一名独立的咨询师、专攻覆盖自动化、电子商务、娱乐和银行业的SQL Server、Oracle以及.NET方面。Matt擅长OLTP/OLAP数据库管理系统以及用.NET语言写可升级的处理系统。
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。