文档库 最新最全的文档下载
当前位置:文档库 › SQL Server数据库的安全为题与安全策略

SQL Server数据库的安全为题与安全策略

SQL Server数据库的安全为题与安全策略
SQL Server数据库的安全为题与安全策略

SQL Server数据库的安全为题与安全策略

摘要:随着网络和SQL Server数据库应用的发展,SQL Server数据库安全性一直是微软公司致力改善和用户关心的问题。本文就SQL Server数据库的安全漏洞的分析,帮助数据库管理员对数据库进行有效的安全配置,探讨数据库安全管理策略。

关键词:SQL;数据库;安全;策略

0.引言

在各种数据库中,SQL Server是目前被广泛使用的网络关系型数据库,是设计中、小型数据库的首选的工具,虽然SQL Server版本不断更新,其安全性不断改进和完善,但随着网络和数据库使用的不断深入,SQL Server的安全性也是用户最关心的项目之一。

1.数据库的安全漏洞SQL Server数据库任一版本都不同程度地存在着安全漏洞,这些漏洞大部分是由不良设置或者实施造成。其中,最常见的几个与数据库相关的安全漏洞:不良的口令政策、SQL注入、交叉站点脚本、数据泄漏、不适当的错误处理等。数据库安全漏洞不光威胁数据库安全,也威胁到操作系统和其他可信任的系统。因此,对数据库的安全漏洞详细了解,有助于让用户能够采取相应的措施来修补数据库存在的安全隐患。对于用户而言,在数据库方面存在的最大问题是经常使用默认或者软弱的口令,来保护像数据库一样重要信息。其补救措施是强制执行强大的口令政策。也就是说,口令要定期变换,口令长度最少为10位数且包含字母和符号。采用这种政策,你将关闭攻击者通向你的数据的方便之门。SQL注入是依靠软弱的数据库实施,特别是在如何向数据库发送SQL请求方面的实施。如果这个数据库接受了用户提供的不干净的或者没有经过验证的数据产生的SQL请求,这就会为SQL注入攻击敞开大门。例如,通过修改从基于网络的格式受到的信息,攻击者能够提供恶意的SQL请求并且把指令直接发送到数据库。要防止这种类型的攻击,在让这些数据接近你的脚本、数据访问程序和SQL查询之前,保证所有用户提供的数据是合法的是非常重要的。验证和清洁从用户那里收到的数据的另一个理由是防止交叉站点脚本攻击。这种攻击能够用来攻破连接到一个Web服务器的数据库。黑客通过一个网络蠕虫把Java Script 等客户方面的脚本注入到一个网络应用程序的输出中。这些脚本用于收集cookie数据。这些数据经常被错误地用来存储用户账户登录信息等资料。一个经常被忽略的问题是什么时候建立一个数据库应用程序是泄漏数据。这是敏感的数据要发送的地方或者是非故意踢敏感数据的地方。这个错误将导致不能保证访问数据库备份磁带的安全和控制这种访问。通常,更敏感的数据产生于有关数据的合法查询的答案,就像从医疗处方判断疾病一样。常用的解决方案是监视查询方式以检测这种行动。与数据泄漏密切相关的是在数据库出现错误时不适当地处理这些错误,许多应用程序显示了详细的信息。这些错误信息能够泄漏有关数据库结构信息。SQL Server数据库的系统漏洞的产生的主要原因都是由于程序员不正确和不安全的编程引起的。加上程序员的水平及经验的参差不齐,这部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。在使用时,由于用户的不正确配置就有可能导致漏洞产生。认识和了解SQL Server数据库和系统安全漏洞,分析漏洞产生的原因,找出SQL Server数据库的漏洞,是为了增加数据库的安全,这是解决SQL Server 数据库安全的理论基础

2.数据库的安全设置

在设计SQL Server数据库时,要考虑数据库的安全机制,安装时要注意整个系统的安全

设置,明确操作系统的用户权限,使用文件驱动程序对文件操作进行过滤,即对数据库文件、日志文件、备份文件等各操作事项限定为数据库进程和指定进程进行操作,其余的进程为禁止操作,这时数据库的安性就取决于操作系统本身、数据库系统本身和网络传输的安全性。随着B/S模式应用开发的发展,SQL INJECTION的攻击测试不可避免,很多大型的网站和论坛都相继被注入。目前网站一般使用SQL Server作为后台数据库,正因为如此,很多人开始怀疑SQL Server的安全性。其实SQL Server各个版本的数据库都已经通过了美国政府的C2级安全认证——这是该行业所能拥有的最高认证级别,所以使用SQL Server还是相当的安全的。当然和Orcal、DB2等还是有差距,但是SQL Server的易用性和实用性还是能被广大的用户所认同,那如何做好数据库的安全设置是解决问题关键。

2.1注意操作系统的安全设置

主要方法有:1)限制不必要的用户,禁用GUEST账号,并为amdinistrator用户账号更名并增中密码;2)设置系统登录中的各个选项;3)使用NTFS格式分区;4)修改注册表关闭默认共享服备;5)关闭不需要的服务;6)关闭不必要的端口,最好不要使用远程管理软件和不信任的服务器软件等。

2.2安装最新SQL Server数据库补丁包

为了保证数据库的安全性,一个常用的、最有效的方法是到微软官方网站上及时更新SQL Server的service pack以及其它已发布的安全更新。

2.3修改默认的1433端口,并且将SQL Server隐藏

这样能禁止对试图枚举网络上现有的SQL Server 客户端所发出的广播作出响应。另外,还需要在TCP/ip筛选中将1433端口屏蔽掉,尽可能的隐藏SQL Server数据库。这样子一但让攻击创建了SQL Server的账号,也不能马上使用查询分析器远程登陆来进行下一步的攻击。

2.4删除有安全问题的SQL过程

SQL INJECTION往往在Web CODE中产生。攻击者一旦确认了网站存在SQL INJECTION 漏洞,肯定有一步操作步骤就是测试网站的SQL Server使用者具有多大的权限。一般都会借助SELECT IS_SRVROLEMEMBER('sysadmin'),或者SELECT IS_MEMBER('db_owner'),SQL Server 就会提示了错误信息,从该信息中即可知道一些敏感信息)等语句进行测试。

2.5删除危险函数

SQL Server为了方便操作Excel、Access、远程服务器等数据库,增加了OPENDATASOURCE 和OPENROWSET 等函数,正是这些函数增加了数据库的危险性。黑客可以利用该函数进行数据库挂马,从而获得数据库,以及服务器的控制权限。如OPENDATASOURCE 的用法:SELECT*FROM OPEN-DATASOURCE ('SQLOLEDB', 'Data Source=ServerName; User ID=。MyUID; Password = MyPass') .Northwind.dbo.Categories黑客完全可以用此语句获得注入数据库的库名、表名、列名、字段值的所有信息。

2.6删除不安全的扩展存储过程

xp_cmdshell是一个非常危险的扩展存储过程,它可执行dos命令,危险的不只是这个,还有Xp_regaddmulti-string 、Xp_regdeletekey、Xp_regdeletevalue等都是删除的对象。3.数据库的管理策略

为保证数据库安全,安全管理策略从几个方面加以分析。

3.1访问控制

访问控制(access control)是对用户访问数据库各种资源的权力控制。SQL Server对用户的访问控制分为两阶段:一是安全账户认证,二是访问许可认证。在安全账户认证阶段,Windows操作系统或SQL Server对用户登录进行认证,如认证成功,用户可连接到SQL Server,否则数据库服务器将拒绝用户的连接请求。访问许可确认指的是用户成功连接到SQL Server 后,系统根据数据库中保存的与服务器登录标识相对应的用户帐户来判断他们是否拥有对数据库的访问许可。在建立SQL Server登录后,需要将许可授予用户或用户组,使他们能够在数据库中执行任务。默认条件下,数据库内只有一名特殊的用户——DBO,

用以表示数据库所有者。它对数据库及其对象拥有完全控制权。要使用户拥有对数据库的访问权,管理员必须明白无误地将数据库许可赋予合法的登录者。区分好SQL Server的登录和数据库用户许可,管理员可以方便地将服务器上某一个数据库的访问权赋予某一用户,同时限此用户访问服务器上的其他数据库。有了访问控控制,SQL Server可以防止非法的用户进入。

3.2数据库许可

合法用户进入服务器和数据库后,对数据对象进行操作还要通过数据库访问许可机制来控制。首先,可通过数据库许可中的语句许可达到限制数据库用户执行某些Transact-SQL语句(如create table、create view等)的目的。其次,可通过数据库许可中的对象许可达到限制数据库用户执行数据库对象某些任务(如select、insert、DRI等)的能力。但要注意的是,在应用过程中一定要分清每个许可的三种状态的区别。

3.3使用系统存储过程建立数据安全性

作为SQL Server数据库管理员,在某些情况下需要赋予用户在数据库中执行一个或多个任务能力,但出于安全性方面的考虑,你可能无法或不愿意赋予对那个数据源的用户许可。如你想让某一用户具有select许可,而不拥有delete许可,此时就可通过建立存储过程达到目的,从而保护了数据的安全。

3.4使用视图建立数据安全性

用户创建数据库的目的就是使用数据,而这些数据都是通过基本表来体现。但对于一名SQL Server管理员而言还应清醒地认识到,在一个数据库中可以包含多张表,可是用户仅使用某些表中的局部数据。若此时SQL Server管理员赋予用户能够访问这些表的许可,形成用户访问区域过大,从而造成用户对数据库中数据安全的威胁。为了避免这一情况,可以通过建立数据视图的方式达到数据安全的目的。

3.5使用服务器角色建立数据安全性

在SQL Server系统中,为了便于管理增加了同时能为多个数据库用户的登录和许可进行设置的能力,这种能力系统是通过角色来体现。服务器角色是一类特殊的功能的集合,拥有执行某些服务器操作的权力。服务器角色中包括了SQL Server登录,因为它们所拥有的许可在本质上是作用于整个服务器的,而不是单独哪个数据库。在SQL Server系统中提供了7种预定义服务器角色,我们使用时还应注意数据库创建者、进程管理员、安全管理员、服务器管理员、设置管理员、系统管理员等角色的使用。当我们将某一用户添加到这些角色中时,我们要慎重考虑,

因为这些角色会给数据带来潜在的威胁。

3.6使用数据库角色建立数据安全性

此角色用于一次设置多个数据库用户对数据库的访问许可,它是直接面对数据的,若许可权限配置不当则直接威胁数据库中的数据,如PUBLIC(公共)角色,在默认情况下,所有的SQL Server登录都是这个组内的成员。作为管理员,在对公共角色赋予许可时必须非常小心谨慎。

3.7数据备份

在数据库日常管理过程中,进行数据备份为首要的工作。当服务器或SQL Server数据库系统发生崩溃时,其原先的数据很难恢复,因为SQL Server数据库不像Visual Foxpro等数据库可以直接拷贝数据库文件,前者必须要有备份策略才能安全恢复。因此,数据库应该安装在所属单位内部网的安全区域中,不要直接连接到Internet。另外,在处理异常故障时应实施异机备份策略,采用适当有效的备份措施,保护数据安全。

3.8数据库加密

数据库加密要求数据库密码系统将明文数据加密成密文数据,数据库中存储密文数据,查询时将密文数据取出解密得到明文信息,即便硬件存储失窃也不会泄漏数据,这样就大大提高了数据库系统的安全性,当然成本也随之提高。对于网络层面上的攻击,数据库主要采用安装防火墙、进行入侵检测等方式来提高其安全性能。防火墙阻挡来自外部的不可信连接。入侵检测系统一般部署在防火墙后,通过网络截包解析或者分析日志来检测网络中和主机上

的异常。4.结束语

由于SQL Server数据库安全事关各种因素,为尽可能保证SQL Server数据库系统的安全,除了注意以上的各种安全配置和加强安全管理策略外,还应加强内部管理人员的安全培训和完善安全管理制度。

参考文献

[1] 杨苏.SQL Server 常见的安全配置.改革与开放,+2010年4月刊.

[2] 胡登卫等.SQL server数据库安全策略研究.南阳师范学院学报, 2008年9月.

[3] 刘传波.SQL Server数据库的安全策略设计与应用.学术探讨,2008年第6期.

SQLServer(多语句表值函数代码)

SQLServer(多语句表值函数代码) 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE FUNCTION [dbo].[ufnGetContactInformation](@ContactID int) RETURNS @retContactInformation TABLE ( -- Columns returned by the function [ContactID] int PRIMARY KEY NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [JobTitle] [nvarchar](50) NULL, [ContactType] [nvarchar](50) NULL ) AS -- Returns the first name, last name, job title and contact type for the specified contact. BEGIN

DECLARE @FirstName [nvarchar](50), @LastName [nvarchar](50), @JobTitle [nvarchar](50), @ContactType [nvarchar](50); -- Get common contact information SELECT @ContactID = ContactID, @FirstName = FirstName, @LastName = LastName FROM [Person].[Contact] WHERE [ContactID] = @ContactID; SET @JobTitle = CASE -- Check for employee WHEN EXISTS(SELECT * FROM [HumanResources].[Employee] e WHERE e.[ContactID] = @ContactID) THEN (SELECT [Title] FROM [HumanResources].[Employee] WHERE [ContactID] = @ContactID) -- Check for vendor

SQLSERVER操作命令

SQLSERVER数据库操作 ******操作前,请确定SQL的服务已经开启******** 一:登录进入sql数据库 1、开始---所有程序---Microsoft SQL Server 2005---SQL Server Management Studio Express 2、此时出现“连接到服务器”的对话框, “服务器名称”设置为SQL数据库所在机器的IP地址 “身份验证”设置为SQL Server身份验证或者Windows 身份验证 填写登录名和密码后,点击“连接”按钮,即可进入到SQL数据库操作界面。 二:新建数据库 登录进去后,右击“数据库”,选择—“新建数据库” 设置数据库名称,在下面的选项卡中还可以设置数据库的初始大小,自动增长,路径。 点击确定,一个数据库就建好了。 三:如何备份的数据库文件。 登录进入后,右击相应的需要备份数据库----选择“任务” 目标下的备份到,点击“添加”按钮可以设置备份数据库保存的路径。 四:如何还原备份的数据库文件。(以本地机器为例子) 1、设置服务器名称,点击右边的下拉框的三角,选择“浏览更多…”。 此时出现查找服务器对话框,选择“本地服务器”---点开“数据库引擎”前面 的三角---选中出现的服务器名称—确定。 (注:可以在“网络服务器”选项卡中设置网络服务器) 2、设置身份验证,选择为“windows身份验证” 3、点击连接按钮,进入数据库管理页面 4、右击“数据库”,选择“还原数据库”,出现还原数据库的对话框 还原的目标----目标数据库,这里设置数据库的名字 还原的源----选择“源设备”,在弹出的对话框中点击“添加”按钮,找到所备 份的数据库文件,确定。 5、此时,在还原数据库对话框中会出现所还原的数据库的信息。在前面选中所需还 原的数据库。确定。 6、为刚刚还原的数据库设置相应的用户。 a点开“安全性”---右击“登录名”---新建登录名 b 设置登录名(假如为admin),并设置为SQL Server身份验证,输入密码,去除 “强制实施密码策略”前的勾。 C 找到导入的数据库,右击此数据库----选择“属性”,在选择页中,点击“文件” 设置所有者,点击右边的按钮,选择“浏览”,找到相应的用户(如admin)。确 定。。 7、此时重新以admin的身份进入,就可操作相应的数据库。

连接SQLServer2008数据库的方法

连接SQLServer2008数据库的方法 一、设置SQLServer2008: SQL server 2008 1433端口开启解决方案 查看电脑开放端口命令为:netstat -an SQL Server 2008一般默认的端口为 1433 ,但有时会遇到无法连接端口1433的问题,检查端口1433是否启用的方法为: 开始–>输入cmd –>回车–>telnet localhost 1433->回车出现黑屏,表示本机连接端口1433成功。 否则按照以下顺序进行配置: (1)关闭数据库引擎 打开配置管理器,找到 SQL Server(SQEXPRESS),右键单击,选择停止,即可停止数据库引擎

(2) .配置服务器端和客户端的TCP/IP协议: 在SQL Server网络配置中选择SQLEXPRESS的协议,选择TCP/IP ,右键单击,选择属性 选择IP 地址选项卡 把"IP1"和"IP2"中"TCP端口"为1433,"已启用"改为"是" 把“IP地址”下“IPALL”的端口改为“1433”。

(3)SQL Native Client 10.0 配置->客户端协议->TCP/IP (4).开启数据库引擎

这样就开启了1433的端口了 先停止SQLServer2008服务。 1.启用1433端口 S1:执行“配置工具”下的“SQL Server配置管理器”。打开如下窗口: S2:右击“SQL Server网络配置”右边的“TCP/IP”,从快捷菜单中选择“属性”,打开下图所示窗口

2.设置登录方式(使用SQL Server登录方式,而不是Windows方式) 打开“SQL Server Management Studio”,打开如下图所示快捷菜单,选择“属性”

SQLSERVER数据库、表的创建及SQL语句命令

SQLSERVER数据库、表的创建及SQL语句命令 SQLSERVER数据库,安装、备份、还原等问题: 一、存在已安装了sql server 2000,或2005等数据库,再次安装2008,会出现的问题 1、卸载原来的sql server 2000、2005,然后再安装sql server 2008,否则经常sql server服务启动不了 2、sql server服务启动失败,解决方法: 进入sql server configure manager,点开Sql server 网络配置(非sql native client 配置),点sqlzhh(我sqlserver 的名字)协议,将VIA协议禁用。再启动Sql Server服务,成功 如图: 二、在第一次安装SQLSERVER2008结束后,查看安装过程明细,描述中有较多项插件或程度,显示安装失败。 解决方法:

1、重新启动安装程度setup.exe,选择进行修复安装,至完成即可。 三、先创建数据库XXX,再进行还原数据库时,选择好备份文件XXX.bak,确定后进行还原,会报如下图的错误。 解决方法: 选择好备份数据库文件后,再进入“选项”中,勾选“覆盖现在数据库”即可。

四、查看数据库版本的命令:select @@version 在数据库中,点击“新建查询”,然后输入命令,执行结果如下 五、数据库定义及操作命令: 按照数据结构来组织、存储和管理数据的仓库。由表、关系以及操作对象组成,把数据存放在数据表中。 1、修改数据库密码的命令: EXEC sp_password NULL, '你的新密码', 'sa' sp_password Null,'sa','sa'

SQLServer数据库安全配置规范

SQLServer数据库安全配置规范

1.概述 1.1. 目的 本规范明确了SQL Server数据库安全配置方面的基本要求。为了提高SQL Server数据库的安全性而提出的。 1.2. 范围 本规范适用于XXXX使用的SQL Server数据库版本。

2.配置标准 2.1. 补丁 2.1.1.安装数据库最新补丁 【目的和操作】连接微软SQLServer网站,获得各个最新的补丁包和补丁集合。 2.2. 网络配置 2.2.1.隐藏服务器 【目的和操作】在企业管理器中选择数据库服务器的属性,网络配置,TCP/IP 属性,选中其中的“隐藏服务器”选项。 该操作可以通过设置IPSE策略过滤UDP1434端口完成。 2.2.2.去掉不必要的协议 【目的和操作】默认情况下,SQLSERVER同时安装TCP/IP和管道,在企业管理器中选择数据库服务器的属性,网络配置,删除管道。 【影响】首先确认用户或者应用程序不使用管道来通讯。只使用Windows进行身份验证并需要远程维护必须使用管道。 2.2. 3.改变默认通信端口 【目的和操作】在企业管理器中选择数据库服务器的属性,网络配置,TCP/IP 属性,默认情况下是TCP 1433端口,请修改该端口为新的端口。 再使用Windows的IPSEC安全策略,禁止非允许的IP地址访问此端口。 【影响】影响使用默认端口的远程访问,要求用户先确认不影响其他操作。

2.2.4.使用通讯协议加密 【目的和操作】使用SSL加密协议。 【影响】影响使用默认端口的远程访问,要求用户先确认不影响其他操作。2.2.5.网络连接访问控制 【目的】在操作系统或者相应的网络设备上设置网络访问控制 【具体配置】 1、禁止非数据库应用系统IP连接UDP1434、TCP1433(或者修改后的通 讯端口)的连接 2、禁止非数据库应用系统IP连接TCP445/139端口的连接。 【影响】根据需要选择。会影响普通的数据库连接。 2.3. 审核设置 2.3.1.设置审核级别 【目的】设置SQL Server的审核选项。 【具体配置】 展开一个服务器组。右击一个服务器,再单击"属性"。在"安全性"选项卡 的"身份验证"下,在"审核级别"中选择在 SQL Server 错误日志中记录的用 户访问 Microsoft? SQL Server?的级别:"全部"表示审核成功的和失败的 登录尝试。 2.3.2.设置日志目录权限 【目的】限制日志目录的权限,防止对日志目录的非授权访问。 【具体配置】 日志通常保留在:SQL Server安装目录\MSSQL\LOG\ 设置目录权限为:administrator, system(完全控制),如果有服务账号, 也加上服务账号的权限。 【影响】 如果SQL Server服务不是以localsystem而是以其他账号运行,那么也设置 该账号有完全控制的权限

SQLSERVER函数大全

SQL SERVER函数大全 SQL SERVER命令大全 SQLServer和Oracle的常用函数对比 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual 5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数 S:select log10(10) value 1 O:select log(10,10) value from dual; 1 9.取平方 S:select SQUARE(4) value 16 O:select power(4,2) value from dual 16

SQLServer数据库基准安全配置标准

MS SQL Server 数据库 基准安全配置标准 目录 1. 将SQL SERVER身份验证设置为仅限WINDOWS (2) 2. 安装最新的补丁更新程序 (2) 3. 优化服务 (2) 4. 限制SQL SERVER 只采用TCP/IP (3) 5. 帐户 (3) 5.1. 使用最低权限帐户运行SQL S ERVER (3) 52 为SA帐号设置强壮的口令 (3) 53 删除SQL来宾用户帐户 (5) 54 删除BUILTIN\A DMINISTRATORS 服务器登录 (5) 5.5. 不为公共角色授予权限 (5) 6. 文件和目录 (5) 6.1. 验证对SQL S ERVER安装目录的访问权限 (6) 6.2. 验证E VERYONE组是否不具有对SQL S ERVER文件的访问权限 (6) 63 保证安装日志文件的安全 (7) 7. SQL SERVER 数据库对象 (7) 7.1. 删除示例数据库 (7) 7.2. 保证存储过程的安全 (7) 7.3. 限制CMD E XEC对SYSADMIN角色的访问权限 (9) 8. 审核和日志 (11)

1.将SQL Server身份验证设置为仅限Windows 应当对SQL Server进行配置,使其支持仅限Win dows身份验证,因为这种验证方式有诸多优点。不必在网络上传送凭据;可避免在数据库连接字符串中嵌入用户名和密码;更易于进行安全管理,因为只需要与一个Windows安全模块而不是另外的SQL Server安全模块打交道;密码到期期间的登录安全性得到提高;最低限度的长度要求及帐户锁定策略。 2. 安装最新的补丁更新程序 包括最新的Windows操作系统以及SQL Server的Service Pack。 3. 优化服务 SQL服务安装程序运行期间将安装以下四个Windows服务: MSSQLSERVER(对于命名实例,则为MSSQL$InstanceNam?。此为SQL Server数据库引擎,是唯一的强制安装服务。 SQLSERVERAGENT (对于命名实例,则为SQLAgent$lnstanceName)。可 借助此支持服务制定命令执行计划及在出错时通知操作人员。 MSSQLServerADHelper。它可提供Active Directory集成服务,包括数据库实 例注册。 Microsoft Search。它可提供全文搜索能力。在任何情况下均须通过本地系统帐户 来运行此服务。 只有MSSQLSERVER数据库引擎是必备的。其余服务提供了附加功能,只在特定情况下才需要使用。如并非必需,请禁用这些服务。 注意:不应将SQL Server配置为以本地系统帐户或本地Administrators组的任何成员

SqlServer数据库安全加固

SQLServer数据库安全配置基线加固操作指 导书 佛山供电局信息中心 2014年4月

目录 1.1 SQLServer数据库安全基线要求 (3) 1.1.1 应对登录操作系统的用户进行身份标识和鉴别 (3) 1.1.2 禁止用Administrator或System用户启动数据库 (4) 1.1.3 密码策略 (4) 1.1.4 用户名的唯一性 (5) 1.1.5 应启用访问控制功能 (5) 1.1.6 管理用户的角色分配权限 (6) 1.1.7 实现操作系统和数据库系统特权用户的权限 (6) 1.1.8 删除多余账户 (6) 1.1.9 审计功能 (7) 1.1.10 审计记录要求 (7) 1.1.11 安装最新补丁 (8) 1.1.12 删除默认安装数据库 (8) 1.1.13 删除不必要的存储过程 (9)

1.1 SQLServer数据库安全基线要求 1.1.1 应对登录操作系统的用户进行身份标识和鉴别 控制台根目录下的SQL Server组/数据库,右建打开数据库属性, 选择安全性,将安全性中的审计级别调整为“全部”,身份验证调整 为“SQL Server 和Windows” SQL Server 2000 SQL Server 2005

1.1.2 禁止用Administrator或System用户启动数据库 1.1.3 密码策略

1.1.4 用户名的唯一性 户名。 为每个管理员添加专门的用户名,建议实名制。 进入“SQLServer管理器->安全性->登陆名(右键)->新建用户名” 进行添加数据库用户名。 1.1.5 应启用访问控制功能

SQLServer数据库入门学习总结

SQL Server数据库入门学习总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数存储过程触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器 第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库 数据库(DB);数据库管理系统(DBMS);数据库系统(DBS) SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版 SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney 数据库的创建和删除;数据库表的创建、修改和删除 数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束 SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint). 关系图 数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护 两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n) 实体关系模型-- E-R图

SQLServer数据库使用心得

SQLServer数据库使用心得 摘要:ASP+Access的组合方式不能满足现有编程需要,在使用ASP+SQLServer的组合方式中经常遇到的一些问题 关键词:ASPAccess数据库SQLServer数据库 我刚开始学习编写ASP代码时,一般都使用Access数据库,因为它操作简便并且功能强大。ASP+Access的组合方式使用方便,代码执行速度快,很适合做一些中小型网站、聊天室、论坛、网上商城等中小型程序。 但是,从数据安全和数据存贮量的角度考虑,ASP+Access的组合方式无疑存在着很大的弊端:一是数据库可以被入侵者使用网络工具下载;二是Access数据库的存储量有限,当数据记录过多时,会导致相应的程序代码出错或者没有响应。 基于上述原因,我开始使用SQLServer数据库,在实际应用中遇到了很多问题,我通过查找参考书和网络论坛解决了其中的一部分,现总结如下几点,与大家共同探讨一下。 …sa?登录失败。原因:未与信任SQLServer连接相关联 当你确认自己的SQLServer安装使用正常,数据库连接代码没有错误,数据库也附加成功,出现上述错误时,请检查SQLServer属性中安全性配置的身份验证方式,应该使用SQLServer和Windows混合认证方式,如果使用的是仅Windows认证方式,就会显示该项错误提示。 刚开始使用SQLServer数据库的时候,由于不了解认证方式的区别,我以为是自己的SQLServer数据库安装有问题,重装了几次,费时费力还没有解决问题,幸好网络上高手众多,才发现原来是如此简单的一个认证方式的原因,令人汗颜。 2ACCESS转化成SQLServer2000需要注意的几个问题 2.1转换的方法 (1)打开SQLServer企业管理器“控制台”下“工具”中的“数据转换服务”中的“数据导入”;(2)库,然后确定。(3)选择目的,选择用于SQLServer的microsoftOLEDB 提供程序;服务器选择,如果是本机,默认(local);认证方式两种选择均可;数据库可

SQLServer数据库基本介绍

SQLServer数据库基本介绍 数据库用于存储结构化数据。数据的组织有多种数据模型,目前主要的数据模型是关系数据模型,以关系模型为基础的数据库就是关系数据库。一,数据库的概述1)关系数据库术语 表:用于存储数据,它以行列式方式组织,可以使用SQL从中获取、修改和删除数据库。表是关系数据库的基本元素记录:记录是指表中的一行,在一般情况下,记录和行的意思是相同的。字段:字段是表中的一列,在一般情况下,字段和列所致的内容是相同的。关系:关系是一个从数学中来的概念,在关系代数中,关系是指二维表,表既可以用来表示数据,也可以用来表示数据之间的联系索引:索引是建立在表上的单独的物理结构,基于索引的查询使数据获取更为快捷。索引是表中的一个或多个字段,索引可以是唯一的,也可以是不唯一的,主要是看这些字段是否允许重复。主索引是表中的一列和多列的组合,作为表中记录的唯一标识。外部索引是相关联的表的一列或多列的组合,通过这种方式来建立多个表之间的联系。视图:视图是一个真实表的窗口,视图不能脱离表。视图和表的区别是,表是实际存在的(需要存储在计算机中,占用存储空间),而视图是虚拟表(仅存储真实表的视图表现形式),它用于限制用户可以看到和修改的数据量,以简化数据的表达。存储过程:存储过程是一个编译过的SQL程序。在该过程中,可以嵌入条件逻辑、传递参数、定义变量和执行其他编程任务。 2)数据库管理系统提供的功能数据库管理系统简称为DBMS,是一种操作和管理数据库的大型软件,用于建立、使用维护数据库。基本功能如下

数据定义功能:定义数据库结构数据存取功能:提供数据操纵语言,实现对数据库数据的 基本存储操作数据库运行管理功能:提供数据控制功能,即数据的安全性,完整性和并发控制等对数据库运行进行有效的控制和管理数据库的建立和维护功能:包括数据库初始数据的嵌入,数据库的转储、恢复、重组织、系统性能监视、分析等功能数据库的传输:实现用户程序与DBMS之间的通信 3)数据库的存储结构 数据库文件主数据文件(Primary):是数据库的关键文件,用来存放数据,包含数据库启 动信息,每个数据库都必须包含也只能包含一个主数据文件,默认扩展名是.mdf次数据文件(Secondary):又称辅助文件,包含除主数据文件外的所有数据文件。次数据文件是可选的,有些数据库没有次数据文件,有些数据库则包含多个次数据文件.默认扩展名是.ndf事务日志 文件(Transaction Log):用来存放事务日志信息。事务日志记录了SQL Sever所有的事务 和由这些事务引起的数据库的变化。SQL Sever遵循先写日志再进行数据库修改的规则,所以 数据库中数据的任何变化在写到磁盘之前,这些改变先在事务日志中做了记录,每个数据库至 少有一个事务日志文件Lof File,也可以不止一个。默认扩展名是.ldf数据库文件组主文件组:包含主数据文件和所有没有被包含在其他文件组里的文件用户定义文件组:默认文件组:

sqlserver数据库安全配置规范

竭诚为您提供优质文档/双击可除sqlserver数据库安全配置规范 篇一:sqlserver2000的安全配置 sqlserver2000的安全配置 sqlserver2000的安全配置在进行sqlserver2000数据库的安全配置之前,首先你必须对操作系统进行安全配置,保证你的操作系统处于安全状态。然后对你要使用的操作数据库软件(程序)进行必要的安全审核,比如对asp、php 等脚本,这是很多基于数据库的web应用常出现的安全隐患,对于脚本主要是一个过滤问题,需要过滤一些类似,‘;@/等字符,防止破坏者构造恶意的sql语句。接着,安装sqlserver2000后请打上补丁sp1以及最新的sp2。 下载地址是:/sql/downloads/2000/sp1.asp 和/sql/downloads/2000/sp2.asp 在做完上面三步基础之后,我们再来讨论sqlserver的安全配置。 1、使用安全的密码策略 我们把密码策略摆在所有安全配置的第一步,请注意,很多数据库帐号的密码过于简单,这跟系统密码过于简单是

一个道理。对于sa更应该注意,同时不要让sa帐号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步!sqlserver2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非你确认必须使用空密码。这比以前的版本有所改进。同时养成定期修改密码的好习惯。数据库管理员应该定期查看是否有不符合密码要求的帐号。 比如使用下面的sql语句: usemaster selectname,passwordfromsysloginswherepasswordisnull 2、使用安全的帐号策略 由于sqlserver不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa帐号,只有当没有其它方法登录到sqlserver 实例(例如,当其它系统管理员不可用或忘记了密码)时才使用sa。建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。安全的帐号策略还包括不要让管理员权限的帐号泛滥。 sqlserver的认证模式有windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库的话,可以在帐号管理中把系统

易语言操作SQLServer数据库全过程

易语言操作SQL Server 数据库全过程 最近看到很多初学者在问在易语言中如何操作SQL Serve以外部数据库,也有人提出想要个全面的操作过程,为了让大家能够尽快上手,我给大家简单介绍一下操作SQL的过程,希望能起到抛砖引玉的作用。 由于我本身工作业比较忙,就以我目前做的一个软件的部份内容列给大家简单讲讲吧,高手就不要笑话了,只是针对初学者 第步,首先需要建立一个数据库: 以建立一个员工表为例,各字段如下 3 员工ID int 4 0 0 登陆帐号nvarchar 30 1 0 密码nvarchar 15 1 0 所属部门nvarchar 30 1 0 姓名nvarchar 10 1 0 性别nvarchar 2 1 0 年龄nvarchar 10 1 0 当前职务nvarchar 10 1 0 级别nvarchar 10 1 0 出生日期nvarchar 40 1 0 专业nvarchar 10 1 0 学历nvarchar 8 1 0 婚姻状况nvarchar 4 1 0 身份证号nvarchar 17 1 0 籍贯nvarchar 50 1 0 毕业院校nvarchar 50 1 0 兴趣爱好nvarchar 600 1 0 电话nvarchar 11 1 0 家庭成员nvarchar 20 1 0 工作经历nvarchar 600 1 0 销售行业经验nvarchar 600 1 0 离职原因nvarchar 600 1 0 升迁记录nvarchar 600 1 0 调岗记录 打+ -rd nvarchar 600 1 0 特殊贡献nvarchar 600 1 0 奖励记录nvarchar 600 1 0 处罚记录nvarchar 600 1 0 同事关系nvarchar 4 1 0 企业忠诚度nvarchar 4 1 0 入司日期nvarchar 30 1 0 在职状态nvarchar 4 1 0 上级评语nvarchar 600 1 0 最后登陆时间nvarchar 20 1 0 登陆次数nvarchar 50 1 0 照片image 16 1 一般我习惯用nvarchar,因为这是可变长的的非Unicode数据,最大长度为8000个字符,您可以根

SQLServer数据库安全策略

SQLServer 高振清 (健雄职业技术学院,江苏[摘 要]文中论述了SQLServer数据库安全机制。[关键词]SQLServer;数据库;安全策略—————————————————————————— —作者简介:高振清,男,江苏太仓人,学士,讲师,研究方向:计算机与自动化。 1.前言 微软的SQL Server 数据库是一种广泛使用的数据库,很多电子商务网站、企业内部信息化平台等都是基于SQL Server 数据库上的, 但是数据库的安全性还没有被人们跟系统的安全性等同起来,一般认为只要把网络和操作系统的安全搞好了,那么所有的应用程序也就安全了。而且一些安全公司也忽略数据库安全,这就使数据库的安全问题更加严峻。数据库系统中存在的安全漏洞和不当的配置通常会造成严重的后果,而且难以发现。数据库应用程序通常同操作系统的最高管理员密切相关。SQL Server 数据库又是属于“端口”型的数据库,这就表示任何人都能够用分析工具试图连接到数据库上,从而绕过操作系统的安全机制,进而闯入系统、 破坏和窃取数据资料,甚至破坏整个系统。从而对SQL Server 数据库的安全策略进行探讨有着极其重要的现实意义。 2.SQLServer数据库安全体系结构 SQL Server 数据库安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上。认证是指来确定登陆SQL Server 数据库的用户的登陆帐号和密码是否正确,以此来验证其是否具有连接SQL Server 数据库的权限。但是,通过认证阶段并不代表能够访问SQL Server 数据库中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象,如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户帐号来实现的。同时在SQL Server 数据库中,角色作为用户组的代替物大大地简化了安全性管理。在SQL Server 数据库的安全模型中主要包括SQL Server 登录、数据库用户、权限、角色。由图1可见,SQL Server 的安全控制策略是一个层次结构系统的集合。 图1SQLServer安全性控制策略示意图3.3.1 SQL 注入就是利用插入有害字符进行攻击的技术,也称SQL 注射式攻击。SQL 注入攻击是攻击者把SQL 语句插入到Web 表单的输入域或页面请求查询字符串中,欺骗服务器执行恶意SQL 语句的操作,它是应用程序级攻击Web 主要途径,是黑客攻击的最常见手段,是构建网络安全的一大障碍。目前来说,对于SQL 注入攻击的防范主要是要找到一种能保证代码兼容性的方法。 SQL Server 虽然没有直接提供防止SQL 注入攻击的对象和方法, 但它却提供了丰富的、强大的防御工具。合理地利用这些机制,对防止SQL 注入攻击很重要。 其次,构建安全的参数类型,进一步过滤掉组装的SQL 语句对Web 站点的注入攻击。把用户验证的SQL 语句构造到存储过程中是行之有效的方法。如下面的Proc_IsUserValid 存储过程: Create Procedure Proc IsUserValid @UserName Varchar(32),@Password Varchar(32)As Select Count(*)from Users Where UserName=@U serN ame And Cast (Password As Varbinary)=Cast (@Password As Varbinary) Go 然后就是使用弱权账户来间接访问数据库。下面是实现授权给SafeUser 帐户一个缺乏 “drop table ”权限的数据库脚本,SafeUser 账户除了调用Proc_IsUserValid 外没有任何其它权限。 Create DataBase WebLogin Go Use WebLogin Go Create table Users (UserName Varehar (32)Not Null , Password Varchar(32)Not Null)Go Insert Into Users (UserName ,Password) —79—

Java连接SQLServer数据库全解

第一步:安装SQL SERVER 2000数据库软件,安装包解压之后的文件夹名为“SQL server 2000 个人版XP能用”。 安装方法:直接双击“SQL server 2000 个人版XP能用\SQL2000_PER”文件夹下的setup.bat (批处理文件)就可以进入安装程序。 在安装过程中一定要选择混合模式,设sa的密码为hw 或root 。以后登录“SQL 查询分析器”的时候就输入该密码(hw 或root)。 安装完“SQL server 2000 个人版”之后,还不能用Java连接SQL server 2000数据库。还必须安装“SQL2000-KB884525-SP4-x86-CHS”,简称“SP4”,即SQL server 2000的补丁。 安装界面如下: SP4解压缩完成之后,就会在C盘根目录下自动新建一个文件夹:C:\SQL2KSP4。 里面的内容如下:

然后双击C:\SQL2KSP4文件夹中的setup.bat批处理文件进行安装,前面的实质上是SP4的解压,解压后的文件就是C:\SQL2KSP4,所以双击并不是安装过程,而实质上是一个加压缩的过程。 □不安装SP4,Java程序无法连接SQL server 2000数据库。 双击C:\SQL2KSP4文件夹中的setup.bat后的安装才是SP4真正的安装。 SP4安装完成之后,把SQL server 2000的Java驱动(三个jar包)全部加入到应用程序中,或同时加入到classpath环境变量中。 这三个jar包的名字依次是:msbase.jar ,mssqlserver.jar ,msutil.jar 。 注:这三个jar包必须同时使用,缺一不可。 连接代码: 连接SQL server 2000数据库的Java类:

SqlServer教程:经典SQL语句集锦

SqlServer教程:经典SQL语句集锦 SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句:1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表:A: create table tab_new like tab_old (使用旧表创建新表) B: create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。7、说明:添加主键: [html]view plaincopyprint? 1. Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:

SQLServer基本语句汇总

序号功能语句 1创建数据库(创建之前判断该数据库是否存在)if exists (select * from sysdatabases where name='databaseName') drop database databaseName go Create DATABASE databasename 2删除数据库drop database databasename 3备份数据库USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' BACKUP DATABASE pubs TO testBack 4创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 5根据已有表创建新表1、use 原数据库名 go select * into 目的数据库名.dbo.目的表名 from 原表名(使用旧表创建新表)2、create table tab_new as select col1,col2… from tab_old definition only 6创建序列create sequence SIMON_SEQUENCE minvalue 1 -- 最小值 maxvalue 999999999999999999999999999 -- 最大值start with 1 -- 开始值 increment by 1 -- 每次加几 cache 20; 7删除新表drop table tabname 8增加一个列Alter table tabname add colname coltype alter table tablename add column_b int identity(1,1) 9删除一个列Alter table tabname drop column colname 10修改一个列ALTER TABLE 表名 ALTER COLUMN 字段名 varchar(30) NOT NULL DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 11添加主键Alter table tabname add primary key(col) 12删除主键Alter table tabname drop primary key(col) 13创建索引create [unique] index idxname on tabname(col…。)14删除索引drop index idxname on tabname 15创建视图create view viewname as select statement 16删除视图drop view viewname 17选择数据记录sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" sql="select top 10 * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select top 10 * from 数据表 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" sql="select * from 数据表 where 字段名 between 值1 and 值2" 注:like中"%"匹配0个或多个字符;like中"_"匹配一个字符 18更新数据记录sql="update 数据表 set 字段名=字段值 where 条件表达式" sql="update 数据表 set 字段1=值1,字段2=值2 ……字段n=值n where 条件表达式" 19删除数据记录sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) 20添加数据记录sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)" sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) 21数据记录统计函数AVG(字段名) 得出一个表格栏平均值 COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法: sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"set rs=conn.excute(sql) 用 rs("别名") 获取统计的值,其它函数运用同上。 22查询去除重复值select distinct * from table1 23查询数据库中含有同一这字段的表select name from sysobjects where xtype = 'u' and id in(select id from syscolumns where name = 's3') 24只复制表结构select * into a from b where 1<>1 select top 0 * into b from a 25复制内容set identity_insert aa ON insert into aa(Customer_ID, ID_Type, ID_Number) select Customer_ID, ID_Type, ID_Number from TCustomer; set identity_insert aa OFF 26UNION 运算符(使用运算词的几个查询结果行必须是一致的)UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。 27EXCEPT 运算符EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。 SQL Server语句 1/3

相关文档
相关文档 最新文档