第一范文网 - 专业文章范例文档资料分享平台

SQL Server数据库安全机制

来源:用户分享 时间:2025/5/15 10:30:12 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

SQL Server数据库安全机制

一 SQL Server数据库

SQL Server 数据库是微软公司的一款关系型数据库系统。 它专门为分布式客户机 / 服务器计算所设计的一个出众的数据库管理平台。 它的优势是可扩展性,高性能管理,支持堆成多处理结构,ODBC 和存储过程,强壮的事物处理能力,支持 SQL 语句。其中 SQL 语句可以执行如从数据库中提取数据,更新、删除数据库中的数据等等各种各样的操作,可以用来完成几乎所有的数据库操作。

二、数据库的安全机制

数据库的安全性是指保护数据库避免不合法的使用, 以免数据的泄漏、更改或破坏。数据库安全机制是多层次, 具体可以划分为用户、数据库管理系统(DBMS) 、操作系统(OS) 、数据库(DB) 四个层次。对于用户部分的安全机制采用身份认证方法; 数据库管理系统则是通过访问控制保证资料安全性和审计实时监视和记录用户的行为, 任何一个用户意图控制一个对象都必须拥有相应的授权同时用户的行为也将被监视和记录; 在操作系统级的安全控制主要侧重于文件权限保护, 系统资源使用限制; 在数据库存储这一级目前大多采用加密技术, 对数据进行加密,在数据传输时可以对数据协议进行加密,为了防止数据库意外破坏,有备份恢复策略。 ( 一) 用户层次

数据库用户名是连接数据库、存取数据库对象的主体标记, 是数据库中管理权限和控制数据访问的一种安全措施, 用户认证就是确定所要求的用户身份的正确性, 口令识别是数据库身份认证中最常用的方式。

对于身份验证模式,SQL Server 提供了两种认证方式:Windows 身份验证和SQL Server身份验证。Windows 身份验证模式,即使用 Windows 中的其中一个用户登录到 SQL Server 数据库中。SQL Server身份验证即使用创建用来登陆数据库的身份进行验证。

而在远程以WEB形式登陆数据库的时候,同样要进行身份识别。SQL注入攻击是黑客最常见的攻击数据库的手段。SQL注入攻击是攻击者把SQL语句插入到 Web 表单的输入域或页面请求查询字符串中,欺骗服务器执行恶意SQL语句的操作。

防治SQL注入的方法:1.把用户验证的 SQL 语句构造到存储过程中是行之有效的方法,例如构建存储过程,只有用户名正确和密码正确才能够登陆,同时将输入的数据使用Cast()函数转换成一个整体进行验证。 Create Procedure Proc IsUserValid @UserName Varchar( 32), @Password Varchar( 32) As

Select Count(*) from Users

Where Cast(UserName As Varchar(32))=Cast(@UserName As Varchar(32)) And Cast (Password As Varbinary)=Cast (@Password As Varbinary) Go

2. 对输入的验证信息进行严格的格式审查,排查字符”or”,”and”,”=”等,一旦遇到,可以拒绝登陆。

( 二)数据库管理系统层次

主要包括访问控制、数据库审计、视图机制 (1)访问控制

数据库访问控制 (access control) 是对用户访问数据库各种对象( 包括表、视图、目录、应用等) 的权限( 包括创建、撤销、查询、增加、删除、修改、执行等) 的控制, 可以通过用户分类和数据分类实现。访问控制是数据库安全系统中的核心技术, 主要包括系统授权、确定访问权限和实施权限三个部分, 是数据库管理系统最有效的安全手段。

基于角色的权限管理可以有效的对用户进行权限管理。如下例子所示:

USE class

--创建角色r_test

EXEC sp_addrole 'r_test'

--授予r_test 对Student 表的所有权限

GRANT select ,delete ,update ON Student TO r_test --授予角色r_test 对Course 表的SELECT 权限 GRANT SELECT ON Course TO r_test

--添加登录l_test,设置密码为123,默认数据库为class EXEC sp_addlogin 'l_test','123','class' --为登录l_test 在数据库class 中添加安全账户u_test EXEC sp_grantdbaccess 'l_test','u_test' --添加u_test 为角色r_test 的成员

EXEC sp_addrolemember 'r_test','u_test' --拒绝安全账户u_test 对Course 表的SELECT 权限 DENY SELECT ON Course TO u_test

执行命令,用l_test登陆数据库,能够看到角色r_test和用户u_test,如图一所示,可以对Student表进行所有操作,如图二和图三:但无法对Course表查询,虽然角色r_test有Course表的select权限,但已经在安全账户中明确拒绝了对Course的select权限,所以l_test无Course表的select权限

图一

图二

图三

图四

(2)数据库审计

审计是指当用户对数据库进行各种操作时,审计功能会实时监视和记录用户的行为。 审计功能对数据库管理员来说是非常有价值的。 通过审计机制,可以随时查看用户行为,便于追查责任,对于不正常的用户行为可以及时的制止,

同时审计功能还有助于发现数据库安全方面的漏洞和弱点。 一般通过 SQL 的事件探查器完成审计工作,由管理员权限用户进行。审计可以在服务器和数据库级别上或者针对个别数据库对象实现,并以不同的格式保存记录,如二进制文件或 Windows 应用程序日志。在 SQL Server 的指定实例中创建一个 SQL Server 的审计。 SQL 语句如下: use master go

create server AUDIT userAudit TO FILE

(FILEPATH='D:\\audit', MAXSIZE=10 MB) with(QUEUE_DELAY = 5000)

注意,必须在master 数据库中创建审计。这是因为审计和SQL Server实例相关联的并且作为一个整体。 (3)视图机制

视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是SELECT语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所防止用户对基表的操作在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。基于视图的信息隔离保护机制通过授予用户操作视图的权限。可以防止用户对基表的操作。不同的用户对于数据库具有不同的权限,即是,一个用户在执行某种任务时,他得到的权限只能使他看到完成此任务所应看到的数据库的部分。

( 三) 操作系统层次

操作系统(OS) 是数据库系统的运行平台, 为数据库系统提供一定程度的安全保护。由于数据库系统在操作系统下都是以文件形式进行管理的, 操作系统的用户可以直接利用 OS 工具来伪造、篡改数据库文件内容。加强操作系统的安全管理, 也有助于抵制来自网络的数据库攻击。对操作系统用户管理和权限进行合理分配, 防止操作系统用户非法进入数据库系统。

( 四) 数据库层次

主要包括数据库加密、协议加密、备份与恢复策略

1.数据库加密要求数据库密码系统将明文数据加密成密文数据, 数 据库中存储密文数据, 查询时将密文数据取出解密得到明文信息, 即 便硬件存储失窃也不会泄漏数据, 这样就大大提高了数据库系统的安 全性, 当然成本也随之提高。 以下是数据加密的实例: (1) 创建主秘钥

USE class GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd'

(2) 用密码P@ssw0rd创建证书chen

create certificate chen encryption by password='P@ssw0rd' with subject='chenzhihua tese certificate', start_date='1/9/2014', expiry_date='1/9/2015'

(3)建测试表,password字段为要加密的列,数据类型要为varbinary,因为加密后的数据是二进制数据

create table user_info(id int identity(1,1),

Uname nvarchar(50),Usex nvarchar(2),

password varbinary(5000) )

--向测试表中写入一条测试数据

insert into user_info(Uname,Usex,password)

values('王五','男',encryptbycert(cert_id('chen'),'123456'))

查询表中数据结果:

使用解密函数查询表中数据,可以看到解密后的password

2.协议加密策略:

SQL Server使用Tabular Data Stream协议来进行网络数据交换。 若不加密,所有的网络传输都是明文的,包括密码、数据库内容等,这就存在一定的安全隐患,所以,最好使用SSL加密协议议。 以下介绍在SQL Server2005上启用SSL加密的配置步骤

(1)在服务器端计算机上 ,单击 “Microsoft SQL Server” 程序组中的“服务器网络实用工具”;

(2)单击选择“强制协议加密”;

(3)验证是否启用了TCP/IP或命名管道;

(4) 单击 “ 确定 ” 关闭 SQL Server 网络实用工具 , 然后在 “SQL Server网络实用工具”消息框中单击“确定”; (5)重新启动SQL Server服务。

设置完后, 不论客户端是否指定安全连接 (即Encrypt=True/False),后续客户端所有连接都将以密文传送。 3.备份与恢复策略:

故障是数据库系统不可避免的问题。SQL Server 2005能在系统发生故障后利用已有的数据备份,恢复到原状,并保持数据的完整性和一致性。 SQL Server 2005可以创建镜像备份,在线恢复和部分备份。 镜像备份允许将备份文件创建两个或者四个同样的拷贝,以防其中某个集合损坏的情况。 在线恢复允许在保持数据库在线的情况下恢复离线的文件组。 部分备份是将所有的文件组,除了那些标记为只读的文件组之外(除非是指定的),进行备份。

搜索更多关于: SQL Server数据库安全机制 的文档
SQL Server数据库安全机制.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0qkn68f3i56c4rp7por4_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top