SQL Server Security
文章平均质量分 93
关注SQL Server安全领域专栏
發糞塗牆
MVP, TOGAF, MCSE, Azure Solution Architect
展开
-
Securing Checklists
本文属于SQL Server安全专题系列 确保非授权用户不能非法进入系统环境。只安装所需的软件组件。最小化访问SQL Server的用户,强烈建议借助操作系统使用Windows身份验证或者SQL On Linux的集成身份验证来访问。 哪怕是DBA,也应该仅在需要时采用sysadmin登录,更安全的方式是使用Windows身份验证登录。SA帐号如果启用,应该设置强密码。但是依旧建议使用Win...原创 2018-03-05 10:49:28 · 711 阅读 · 0 评论 -
SQL Server 安全篇——降低外围威胁(2)——禁用不安全功能
本文属于SQL Server安全专题系列 SQL Server默认禁用不安全的功能。如果需要启用,可以通过SSMS来实现,本文介绍手动配置外围应用配置器和使用策略管理来管理外围环境。手动配置外围应用配置器 右键实例,选择facts如下图,然后在【方面(F)】中选择“外围应用配置器”:可以看到下面的选项,通常我们会使用到“XPCmdShellEnabled”项,如果要用,则选择【True...原创 2018-03-01 11:11:07 · 1245 阅读 · 0 评论 -
SQL Server 安全篇——降低外围威胁(1)——网络配置
本文属于SQL Server安全专题系列 前面大篇幅介绍了SQL Server及操作系统的安全,现在是时候介绍一下外围主要是网络层面的安全。这部分主要包括网络功能、服务和端点。因为绝大部分的攻击都来自于网络,所以网络层的安全控制某种意义上可以说是最外层的防御。本文先介绍一下网络方面的配置。网络配置 在介绍之前先要了解一下基础知识,包括端口和协议。这对后续防火墙的管理很有必要。端口和协议...原创 2018-02-28 12:34:02 · 2646 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server加密(3)——透明数据加密(TDE)
本文属于SQL Server安全专题系列 前面讲到的很多内容都是对数据加密和权限控制,这些主要在SQL Server内部,但是还有一种情况就是文件的安全性,除了在操作系统层面对文件进行访问控制之外,还要确保服务器被攻击之后文件被窃取的情况。为了避免文件被窃取后通过特权方式获得数据,有必要对文件也进行数据安全加密,在SQL Server中提供了一种叫透明数据加密(Transparent Dat...原创 2018-02-27 18:09:48 · 3730 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server加密(2)——加密数据
本文属于SQL Server安全专题系列 在SQL SERVER中的数据可以使用密码或者证书来加密。本文分别来演示一下使用密码和证书来加密。使用密码或短语(passphrase)加密数据 在SQL Server中最常见的数据加密函数是ENCRYPTBPASSPHRASE()。这个函数可以使用密码或者短语直接对数据加密而不需要经过SQL Server的加密层次体系。下面使用Adventu...原创 2018-02-26 14:04:45 · 3686 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server加密(1)——加密概念
本文属于SQL Server安全专题系列 加密是一种使用密钥和证书的算法来混淆数据的过程。如果没有密钥和证书,即使得到了数据,也无法得知数据的本来面貌,数据就没有价值了。但是由于加解密本身就是一种非常耗资源(特别是CPU跟I/O )的计算操作,同时加密后的数据本质上会增大,所以也往往会带来性能的下降。所以一般都只能按需使用。 SQL Server到2016为止,加入了很多种加密技术,比...原创 2018-02-12 15:14:08 · 4528 阅读 · 1 评论 -
SQL Server 安全篇——安全元数据(5)——元数据自身安全性
本文属于SQL Server安全专题系列 随着元数据的使用频率越来越高,安全性也越来越凸显,因为从元数据中可以得到很多不应该随意暴露的系统信息。所以,绝大部分的元数据并不能随意被查看,通常都需要授权。 比如当一个用户A被授权查询B表,那么这个用户A就自动获得了在sys.tables和sys.objects中关于B表的信息。否则他无法真正使用这个B表。 如果需要查看那些没有权限访问...原创 2018-02-11 11:59:26 · 674 阅读 · 0 评论 -
SQL Server 安全篇——安全元数据(4)——加密(Ecryption)元数据
本文属于SQL Server安全专题系列 这里需要注意,加密不是动词,而是指关于加密功能的元数据。SQL Server作为成熟的数据库管理系统,必须有加密功能,而加密功能又需要有一定的元数据作为协助,不然对于用户或者DBA来说会很难使用。本文重点介绍在SQL Server 2016出现的Always Encrypted(始终加密)和2008开始出现的TDE功能的元数据。Always Enc...原创 2018-02-09 15:09:42 · 904 阅读 · 0 评论 -
SQL Server 安全篇——安全元数据(3)——审核元数据
本文属于SQL Server安全专题系列 审核除了应对用户行为之外,还能进行“审核审核”以避免别人对自己的怀疑。比如一个恶意的 DBA关闭了审核, 然后执行的是一个危险的行为, 则该操作本身将不会被审核, 但 由于DBA已经关闭了审计, 然后再次将其重新打开的时候,这个打开操作将被审核。 SQL Server提供了很多元数据对象来实现审核增强,其中一个最常用的就是sys.fn_ge原创 2018-02-05 09:24:36 · 987 阅读 · 0 评论 -
SQL Server 安全篇——安全元数据(2)——安全对象(Securable)元数据
本文属于SQL Server安全专题系列 在某些日常工作中,安全配置文件可能会成为需要保护的对象。下面对这些可能进行简介, 并演示元数据如何帮助你验证或实施策略。Code Signing: 代码签名,代码注入攻击明显是违反了安全策略,可以使用代码签名来防御这类工具,假设安全策略上要求所有程序集和存储过程必须使用代码签名来最小化安全威胁。 下面的代码返回在数据库中原创 2018-02-02 11:39:27 · 1174 阅读 · 0 评论 -
SQL Server 安全篇——安全元数据(1)——安全主体(Principal)元数据
本文属于SQL Server安全专题系列 虽然大量的安全元数据(security metadata)可以从SSMS中查询(指鼠标操作),但是有些元数据仅能通过T-SQL来查看。完整的安全元数据足以单独成书,这里仅介绍一些有用的或者可能会用到的内容。安全主体元数据: 当在实例上实施安全策略时,很有可能就要收集很多安全实体或者安全对象的信息。比如一个策略是所有数据库必须属于原创 2018-02-01 11:12:52 · 1531 阅读 · 0 评论 -
SQL Server 安全篇——服务账号安全性(3)——服务账号的威胁与对策
本文属于SQL Server安全专题系列 在安全领域中,“攻”“防”一直在持续着,并且很不幸,攻击者永远处于主动地位,一切防御方案都是基于已经发生的攻击来制定的,但是深入理解原理,不仅可以快速应对攻击,也能从中推测出一些可能的衍生攻击方案并作出提前防御。 本文将集中在服务帐号上的攻击介绍。曾经看过一部外国电影,名字早忘了,但是有一句话一直记在脑海里(大概也有十几年了吧):世界上不存在没有原创 2018-01-31 11:38:52 · 1365 阅读 · 0 评论 -
SQL Server 安全篇——服务账号安全性(2)——SQL Server服务
本文属于SQL Server安全专题系列 在安装SQL Server时,很重要的一步就是选择所需的服务,由于每个服务必须有一个服务帐号,所以也就需要帐号的选择和配置,应该坚持最小所需权限原则。最小所需权限原则应该针对日常运行所需来制定,如果偶发性的需求,可以临时提权但是记住要用完后马上降权。 下表列出了常规服务帐号的基本所需权限,当然只是“基本”的,如果需要进行额外操作,也可以适当原创 2018-01-30 11:58:43 · 1638 阅读 · 0 评论 -
SQL Server 安全篇——服务帐号安全性(1)——服务帐号类型
本文属于SQL Server安全专题系列 服务帐号本质是一个操作系统帐号,每个SQL Server服务都需要配置一个服务帐号,并使用这个帐号来运行服务。本篇将介绍关于服务帐号的一些安全方面的内容。类型: 截至到SQL 2016,SQL Server支持下面类型的帐号作为服务帐号:Local User:创建在本机的Windows帐号。Domai原创 2018-01-29 11:39:47 · 2033 阅读 · 0 评论 -
SQL Server安全专题
随着大数据、云计算的兴起跟数据量的几乎全量存储,使得安全性越来越受重视。所以这里根据工作经历、多本专家书籍跟官方文档整理出一个安全系列专题,但是毕竟安全这个东西,很广、很深,而且涉及从行政手段、技术手段,从网络到硬件到操作系统最后到数据库甚至行列的内容,无法真正写一个完完全全的专题,更多地是希望起到抛砖引玉的作用。 另外由于某种目的(应该在2018年就会揭开答案),有某些部分应...原创 2018-01-26 14:26:50 · 5286 阅读 · 4 评论 -
SQL Server 安全篇——数据层面安全性(3)——模拟(Impersonation)
本文属于SQL Server安全专题系列接上文:SQL Server 安全篇——数据层面安全性(2)——所有权链接( Ownership Chaining) 模拟是指在不同安全主体的上下文下执行T-SQL语句或代码模块的做法。用来最小化权限授予和授予权限的用户数,但是不影响执行时提升到所需的权限。实际上,在会话或模块的执行期间,模拟起到了用户或登录名切换的过程。也可原创 2018-01-26 12:00:12 · 949 阅读 · 0 评论 -
SQL Server 安全篇——数据层面安全性(2)——所有权链接( Ownership Chaining)
本文属于SQL Server安全专题系列 接上文:SQL Server 安全篇——数据层面安全性(1)——架构Ownership Chaining SQL Server 2016提供了一种叫行级安全性(row-level security,RLS)的功能,但是这种功能是比较有限制的,标准的方式是使用视图或存储过程来限制数据返回。并且通过对视图或存储过程的授权原创 2018-01-25 15:50:58 · 988 阅读 · 0 评论 -
SQL Server 安全篇——数据层面安全性(1)——架构
本文属于SQL Server安全专题系列 在安全性主体层级之下,SQL Server 为保护数据提供了一组丰富的功能。本章将介绍架构、所有权链接和继承。本文集中介绍架构(Schema)。正文: 如果学过编程语言特别是JAVA、C#等的话,应该听过命名空间(namespace)这个术语。是一个逻辑的容器,schema把数据库对象包在里面。并且在对象和它们的拥有原创 2018-01-24 10:51:26 · 3088 阅读 · 2 评论 -
SQL Server 安全篇——SQL Server 安全模型(1)——安全性主体层级
本文属于SQL Server安全专题系列前言: 随着数据安全性的越来越重要,很有必要介绍一下数据库的安全方面的内容。本文兼容SQL Server 2016,但是由于安全这个范围太大,不可能完全说清楚,所以以重点介绍常用功能,同时兼顾新特性。系列中以SQL Server 演示库AdventureWorks2016CTP3为演示,下载地址:AdventureWorks sa原创 2018-01-22 10:50:25 · 3954 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server 安全模型(2)——实例级别安全性
本文属于SQL Server安全专题系列 接上文http://blog.csdn.net/dba_huangzj/article/details/79030680实例级别安全性包含创建和管理登录名、凭证(credentials)和服务器角色。相对的安全主体在实例级别包含数据库、端点和AlwaysON Availability Groups。本文将讨论登录名、服务器角色和凭证。原创 2018-01-22 10:59:51 · 2224 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server 安全模型(3)——数据库级别安全性
本文属于SQL Server安全专题系列 接上文SQL Server 安全篇——SQL Server 安全模型(2)——实例级别安全性 在数据库层面,以授权到安全主体来实现安全性。 相对于服务器级别,数据库级别称为数据库用户和数据库角色。用户: 通常情况下,数据库用户是从实例层面创建的登录名来实现。相同实例下,一个登录名可以映射到多个数据库用户中,并原创 2018-01-22 11:03:25 · 1773 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server 审核(1)——概览
本文属于SQL Server安全专题系列 在SQL Server 安全篇——SQL Server 安全模型(1)——安全性主体层级中提到过,安全分为主动安全和被动安全,前面关于账号权限的算主动安全,那么被动安全指的是记录用户活动以避免不可抵赖性威胁。这个很重要,因为如果攻击是由特权用户发起,那么基本上是很难阻止。SQL Server审核则可以从很大程度上帮助实现被动安全。 但原创 2018-01-22 11:05:17 · 1630 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server 审核(2)——审核实操
本文属于SQL Server安全专题系列 接上文:SQL Server 安全篇——SQL Server 审核(1)——概览 ,本文介绍如何创建服务器审核、服务器审核规范(specification)和 数据库审核规范。创建服务器审核:可以使用CREATE SERVER AUDIT来创建服务器审核,其可选项有:服务器审核选项原创 2018-01-22 11:07:05 · 2140 阅读 · 0 评论 -
SQL Server 安全篇——SQL Server 审核(3)——自定义审核事件
本文属于SQL Server安全专题系列 接上文:SQL Server 安全篇——SQL Server 审核(2)——审核实操,很多时候,原生的审核功能并不能完全满足需求,这个时候,就可以使用服务器审核规范或者数据库审核规范来捕获USER_DEFINED_AUDIT_GROUP审核操作组,然后手动在应用程序中触发。自定义服务器审核和数据库审核规范: 下面原创 2018-01-22 11:08:06 · 919 阅读 · 0 评论 -
Chapter 3 Protecting the Data(3):创建和使用数据库角色
数据库层级的角色允许把数据库权限像服务器级别角色一样组合管理。你可以配置固定服务器角色,创建用户自定义角色等。翻译 2014-09-28 12:41:57 · 5420 阅读 · 0 评论 -
Chapter 3 Protecting the Data(4):创建和使用应用程序角色
数据库角色用于管理数据库内部的访问和权限。数据库角色成员是能通过客户端软件如SSMS连接SQL Server的数据库用户,但是你可能希望授予某个特殊用户一些特权,但是仅限制于某个应用程序而不是SSMS时,第一个解决方案是使用专用SQL 帐号作为应用程序的登录。但是这个方案的缺点是需要使用SQL Server身份验证,并且不能标识出哪个用户正在连接SQL Server。但是可以使用同一个应用程序登录名,并且使用Windows身份验证,因此能更好地标识应用程序的用户,从而在必要的时候提升权限。翻译 2014-10-09 11:21:10 · 5546 阅读 · 0 评论 -
Chapter 3 Protecting the Data(2):分配列级权限
SQL Server的权限是有层次的,一个用户有架构级别的权限,就有了架构内部所有对象的权限,除非使用了DENY权限单独移除。但是对象并不是层次中的最低级,可以把权限设置到列级别。但是列级权限会覆盖掉表上被GRANT的权限。翻译 2014-09-26 11:09:25 · 4974 阅读 · 0 评论 -
Chapter 3 Protecting the Data(1):理解权限
关系型数据库管理系统(RDBMS),如SQL Server、Oracle、Mysql等,不仅仅需要负责存取数据,也要负责确保数据的一致性和安全性。类似于其他服务器系统,通过授权给一个用户并维护这个用户的会话来控制数据的访问行为。每当尝试读写数据时,SQL Server都会检查这些权限。翻译 2014-09-25 11:47:05 · 5301 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误
如果你把非包含数据库从一个服务器移到另外一个服务器,不管是备份还原还是分离附加,都有可能导致SQL用户变成孤立用户,意味着他们没有对应的登录关联。因为登录名和用户之间的映射是基于SID的,即使新服务器上有相同的登录名,但是由于SID不同,也会使得用户无法被识别,从而形成孤立用户。 如果在同一个域中迁移,那么映射问题仅会影响SQL登录,因为域账号(Windows身份验证)的SID在活动目录中是相同的。翻译 2014-09-23 12:01:43 · 4664 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库
在SQL Server中,安全性分为两级:服务器级别和数据库级别。服务器的登录名被映射到数据库中的一个用户。身份验证在登录名连接到服务器时发生。如果数据库中有这个登录名所对应的用户,那么这个登录名就能访问数据库。登录名和用户之间的映射是基于一个内部SID,当从一个服务器复制数据库到另外一个服务器,即使用户名相同,如果SID不同,也会打算这个连接关系。从2012开始引入了包含数据库(Contained database)概念,用于解决这种问题。翻译 2014-09-22 11:12:34 · 4609 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据
在SQL Server 2005之前,所有服务器和数据库元数据都是所有人可见的。当基于网银的系统把SQL Server实例共享给客户时,有可能可以看到其他用户的信息。从2005开始,可以通过控制权限来限制登录名或用户查看不必要的元数据。翻译 2014-09-02 11:42:14 · 5030 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户
登录名用于授权并访问服务器资源,如果需要访问数据库,需要对数据库内部的用户进行映射。用户是数据库级别的安全主体,访问数据库资源是授予给用户,而不是登录名。翻译 2014-09-01 11:10:46 · 8211 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色
从SQL Server 2012开始,不再限制于使用固定服务器角色,可以创建自定义的角色,允许你预设特殊权限。翻译 2014-09-01 11:03:35 · 4572 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度
在SQL Server 2005之前,只有通过添加登录到固定服务器角色,才能获取管理权限。SQL Server 2005引入了一套服务器粒度权限,允许你定义一套严密的权限给服务器级别的登录。翻译 2014-09-01 11:01:04 · 4549 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(5):使用固定服务器角色
登录帐号允许你连到SQL Server,并且如果有数据库用户映射到这个帐号,那么这个帐号也可以访问对应的数据库。默认情况下,他们没有服务器层面的管理操作权。固定服务器角色允许你简化授权和回收权限的操作。翻译 2014-09-01 11:00:14 · 4805 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐号的管理权限
SA帐号是SQL Server的系统管理员,在安装过程中就可以启用,在SQL Server 2005之前,这个帐号不能修改,但是从2005开始,可以重命名或者禁用sa来减少被攻击的风险。在后续版本中,Sa仅作为向后兼容。由于SA是众人皆知的帐号,不建议使用。翻译 2014-08-25 11:07:36 · 5242 阅读 · 1 评论 -
Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击
暴力攻击(Brute-force attack)是通过几乎所有可能的字符组合尝试破解密码,或者使用一个字典表,包含几乎所有可能的密码来实现密码破解的方法。如果你的密码很简单,那么很快就会被破解。所以,测试密码是非常重要的。翻译 2014-08-22 14:41:42 · 5094 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(2):创建登录帐号
登录帐号是定义在服务器(实例)级别,并能被授予进行管理任务、连接、访问数据库等权限的帐号。SQL Server安全模型有两个级别:服务器级别和数据库级别。登录帐号必须先创建在服务器级别。如果需要访问数据库,还需要在数据库级别创建一个用户映射到已有的登录名中。翻译 2014-08-20 14:41:04 · 7327 阅读 · 0 评论 -
Chapter 2 User Authentication, Authorization, and Security(1):选择Windows和SQL 身份验证
SQL Server 有两种身份验证:一种是WIndows身份验证,Windows身份验证使用Windows上的帐号,并利用其安全令牌进行验证。一种是SQL Server验证,使用SQL Server里面定义的帐号进行身份验证。翻译 2014-08-18 11:13:41 · 5896 阅读 · 0 评论 -
Chapter 1 Securing Your Server and Network(14):限制功能——xp_cmdshell 和OPENROWSET
基于安全性原因,某些功能在安装SQL Server时就被禁用,从2008开始,所有敏感选项可以通过一个叫【外围应用配置器】的【方面】进行管理,这个功能在2005的时候以独立工具的形式出现过,在2008又取消了。翻译 2014-08-18 11:09:21 · 5078 阅读 · 0 评论