新加坡狮城论坛

返回列表 发帖 付费广告
查看: 2008|回复: 4

数据库安全管理策略

[复制链接]
发表于 半年前|来自:辽宁抚顺 | 显示全部楼层 |阅读模式
以下是SQL 可信奈计算的具体计算机基础知识目标

产品的设计与测试阶段减少潜在平安问题



通过提供工具和指挥手册的方式协助用户对正在使用的系统进行维护,漏洞检测。攻击防御,系统恢复和维护

通过文档和定期交流。将最近的平安信息告知客户 协助他维护 SqL 平安性和完整性。

还引进了平安改进和新的平安特性。分为以下的几个范围。

1        控制用户对服务器的访问

2        禁止服务和限制服务配置

3        减少新特性遭受攻击的外表积

SQL 平安机制

1        客户机的平安机制

2        网络传输的平安机制

3        服务器的平安机制

4        数据库的平安机制

5        收据对象的平安机制

网络传输的平安一般采用收据的加密和解密技术实现,但加密的 SQL 会使网络速度变慢。所以对安全行不高的网络一般都不采用加密技术。

任何能够登录到服务器的账号密码都对应着一个默认的工作数据库。 SQL 对数据库级 权限管理采用的数据库用户的概念

用户通过前面的四道防线后才能访问数据库中的数据对象,对数据对象能够做什么样的访问称为访问权限。

罕见的访问权限包括数据的查询,更新。插入和删除。

设置数据库权限

SQL 平安性是建立在认证和访问许可两种机制之上,

其中认证是指用来确定登录 SQL 用户的登录账号和密码是否正确。以此来验证其是否具有连接 SQL 权限。用户登录数据库的合法身份有两种: Window 用户或组, SQL 登录账户。



设置数据库的访问权限

1   SQL 验证模式

Window 身份的验证模式   最安全

最适用于只在部门访问数据库情况

通过 Window 用户账号连接 SQL 服务器。 Window 用户或组被映射到 SQL 登录账户,用户只要通过 Window 认证就可以连接到 SQL 而 SQL 自身没有必要管理一套登录数据。

混合验证模式:SQL和 Window 身份验证模式

允许用户使用 Window 身份验证或 SQL 身份验证进行连接

注意:当 SQL 实例在 98 上运行时,必需使用混合模式。因为 98 不支持 Window 身份认证,

当修改了身份认证模式之后,一定要重新启动 SQL 服务

Window 身份的验证模式相对于SQL身份验证模式有以下的优势

用户访问 SQL 时速度更快。不用输入用户名和密码。

可以利用 Window 系统自身工具和安全策略进行账户管理。平安方面更加有效,时微软推荐的身份验证模式

提供了更多的功能。例如平安确认和口令加密。审核。口令失败。最小口令长度和账号的锁定。











首先启动 SqlServ 服务 连接

设置身份验证模式

服务器上属性
完成后需要重新启动服务




设置登陆账号

默认的 SQL 使用 Windows 身份验证模式, SQL 登录账号无法登录。只能建立 SQL 登录账户之后才干使用 SQL 账户登录、如果需要利用创建的SQL账户登录。需要将身份验证模式改为混合模式

注意:不管使用哪种身份验证方式。系统管理员的登录账户 SA 密码都不能为空,建议修改 sA 用户名。



注意:如果需要创建 Window 登录账户。一定要保证系统中已经创建了这个系统账户。

密码战略包括

强制实施密码战略

强制密吗过期

用户在下策登录时必须更改密码

注意: SQL 这里的密码战略是由操作系统安全性保证的如果需要实施强制密码战略。一定要保证域或本地策略已经启用了强密码策略。



服务器角色的概念

角色划分了服务器角色与数据库角色

服务器角色也称做固定服务器角色是执行服务器级管理操作的权限的集合。这些角色是内置在系统中的常用管理功能计算机基础知识计算机基础知识。使管理员可以很方便的给用户授予权限,作用域整个的服务器,而不是单独的那个数据库、

不能创建服务器角色、每个角色有一定的权限、登录账户可以添加到服务器角色











登录名

指派登录账户到服务器角色中时,应注意以下的几点

不能添加,修改和删除服务器角色

任何已经被指派到服务器角色的登录账户可以添加其他登录账户到这个角色

可以使用对象资源管理器来从服务器角色中去除登录账户






设置数据库的访问权限

数据库用户概述域创建

数据库用户是映射到登录账户上的

当一个登录账户对应到一个 Window 组时。可以建立一个数据库用户映射到这个登录账户。以使 Window 组的成员可以访问数据库。此外,还可以为这个 Windows 组的成员单独建立用户,而不用在新建登录账户。



建立一个数据库用户


验证新建地 数据库用户入用户名和密码。

可以利用 Window 系统自身工具和安全策略进行账户管理。平安方面更加有效,时微软推荐的身份验证模式

提供了更多的功能。例如平安确认和口令加密。审核。口令失败。最小口令长度和账号的锁定。











首先启动 SqlServ 服务 连接

设置身份验证模式

服务器上属性
完成后需要重新启动服务




设置登陆账号

默认的 SQL 使用 Windows 身份验证模式, SQL 登录账号无法登录。只能建立 SQL 登录账户之后才干使用 SQL 账户登录、如果需要利用创建的SQL账户登录。需要将身份验证模式改为混合模式

注意:不管使用哪种身份验证方式。系统管理员的登录账户 SA 密码都不能为空,建议修改 sA 用户名。



注意:如果需要创建 Window 登录账户。一定要保证系统中已经创建了这个系统账户。

密码战略包括

强制实施密码战略

强制密吗过期

用户在下策登录时必须更改密码

注意: SQL 这里的密码战略是由操作系统安全性保证的如果需要实施强制密码战略。一定要保证域或本地策略已经启用了强密码策略。



服务器角色的概念

角色划分了服务器角色与数据库角色

服务器角色也称做固定服务器角色是执行服务器级管理操作的权限的集合。这些角色是内置在系统中的常用管理功能。使管理员可以很方便的给用户授予权限,作用域整个的服务器,而不是单独的那个数据库、

不能创建服务器角色、每个角色有一定的权限、登录账户可以添加到服务器角色











登录名

指派登录账户到服务器角色中时,应注意以下的几点

不能添加,修改和删除服务器角色

任何已经被指派到服务器角色的登录账户可以添加其他登录账户到这个角色

可以使用对象资源管理器来从服务器角色中去除登录账户






设置数据库的访问权限

数据库用户概述域创建

数据库用户是映射到登录账户上的

当一个登录账户对应到一个 Window 组时。可以建立一个数据库用户映射到这个登录账户。以使 Window 组的成员可以访问数据库。此外,还可以为这个 Windows 组的成员单独建立用户,而不用在新建登录账户。



建立一个数据库用户


验证新建地 数据库用户入用户名和密码。

可以利用 Window 系统自身工具和安全策略进行账户管理。平安方面更加有效,时微软推荐的身份验证模式

提供了更多的功能。例如平安确认和口令加密。审核。口令失败。最小口令长度和账号的锁定。











首先启动 SqlServ 服务 连接

设置身份验证模式

服务器上属性
完成后需要重新启动服务




设置登陆账号

默认的 SQL 使用 Windows 身份验证模式, SQL 登录账号无法登录。只能建立 SQL 登录账户之后才干使用 SQL 账户登录、如果需要利用创建的SQL账户登录。需要将身份验证模式改为混合模式

注意:不管使用哪种身份验证方式。系统管理员的登录账户 SA 密码都不能为空,建议修改 sA 用户名。



注意:如果需要创建 Window 登录账户。一定要保证系统中已经创建了这个系统账户。

密码战略包括

强制实施密码战略

强制密吗过期

用户在下策登录时必须更改密码

注意: SQL 这里的密码战略是由操作系统安全性保证的如果需要实施强制密码战略。一定要保证域或本地策略已经启用了强密码策略。



服务器角色的概念

角色划分了服务器角色与数据库角色

服务器角色也称做固定服务器角色是执行服务器级管理操作的权限的集合。这些角色是内置在系统中的常用管理功能计算机基础知识。使管理员可以很方便的给用户授予权限,作用域整个的服务器,而不是单独的那个数据库、

不能创建服务器角色、每个角色有一定的权限、登录账户可以添加到服务器角色











登录名

指派登录账户到服务器角色中时,应注意以下的几点

不能添加,修改和删除服务器角色

任何已经被指派到服务器角色的登录账户可以添加其他登录账户到这个角色

可以使用对象资源管理器来从服务器角色中去除登录账户






设置数据库的访问权限

数据库用户概述域创建

数据库用户是映射到登录账户上的

当一个登录账户对应到一个 Window 组时。可以建立一个数据库用户映射到这个登录账户。以使 Window 组的成员可以访问数据库。此外,还可以为这个 Windows 组的成员单独建立用户,而不用在新建登录账户。



建立一个数据库用户


验证新建地 数据库用户特殊用户

特殊用户时数据库预定义的 SQL 中有两个特殊的用户: DBO 和 Guest

DBO 数据库的所有者。对该数据库具有所有权限,默认情况下。具有固定服务器角色 Sysadmin 成员都自动映射到所有数据库的 DBO 用户上, DBO 不能被删除,每个数据库都有自己的 DBO 用户,

Guest 来宾用户,同样不能被删除,不需要映射任何登录账户。同时他可以代表任何登录账户,只要一个登录账户连接到服务器。那么他对任何数据库都是一个 Guest 用户。当数据库中有 Guest 用户的时候。就表示任何连接到服务器的登录账户都可以访该数据库。

如果在 model 数据库中启用了 Guest 账户。以后所有新建数据库默认情况都会启用 Guest 账户。

注意: Guest 账户默认的情况下是被禁用的

Mater 和 tempdb 不能禁用 Guest 账户操作的但是被限制了许可和权限。



数据库角色

数据库用户账号对该数据库所具有的权限由该账户所属的数据库角色决定,

SQL 提供了两类数据库角色固定数据库角色和用户定义数据库角色

固定数据库角色

一组 SQl 预定义的数据库角色。具有数据库级别的管理权力。用以完成常用的数据库任务。

Public 角色是特殊的固定数据库角色

捕获数据库中用户的所用默认权限

所用用户,角色或组默认属于 Public 角色

无法将用户。组或角色指派给他因为默认情况下他即属于该角色

不能被删除









用户定义数据库角色


添加数据库角色成员




角色允许将用户分组。从而更易于将安全设置应用到数据库对象或者服务器,也可以分配权限给角色,然后通过将用户添加到角色或者从角色中删除用户来分配或回收权限。




设置数据库的访问权限

一般权限设置都是通过角色和架构来完成的但是遇到架构里的个别对象的权限需要调整时。可以通过设置数据库对象访问权限来做到

设置数据库对象的权限

权限用于控制对数据库对象的访问。以及指定用户对数据库可以执行的操作。访问数据资源的唯一方法是被直接授予权限或者通过角色或组的成员间接授予权限。

权限可以被授予,转授权限和拒绝

授予:允许一个数据库用户或角色执行所授权限指定的操作

转授权限:允许将所授权限转授给其他用户

拒绝:拒绝一个数据库用户或角色的特定权限,并且阻止他从其他角色中继承这个权限。

全部不选择:根据用户所属的数据库角色的权限情况决定该对象的权限

拒绝语句总是优先于授予语句

为表授权


为数据库授权

数据库自身也是对象。为数据库授权时。可以为其授予在数据库中创建其他各种对象的权限。






数据库访问审核

审核协助跟踪并阻止系统中未经授权的用户行为。一个好的审查系统允许只对那些重要的事件进行过滤。因为用户不会淹没在海量的信息中。

SQL 通过 Window 平安日志, SQL Profil 以及触发器来提供审核功能。





SQL 平安审核设置


如果希望有更加严密的审核跟踪。可以启用 C2 审核跟踪。 C2 一个政府安全级别。保证系统能够维护资源并具有足够的审核能力。 C2 模式会监视对所有数据库实体的所有访问企图。

注意: c2 审核级别会保存大量的事件信息到日志文件里。所以文件大小会增长的特别快。如果日志文件的增长影响 其他数据文件的存放。会导致数据库停用。所以,使用 c2 审核级别时一定要慎重。

SQL Profiler 对数据库的事件进行跟踪审查的工具

SQL Profil 专做审查和跟踪的工具,不只可以起到平安审计的作用,同时起到分析数据库的性能问题的作用,

触发器是 SQL 数据库提供的一种相应事件触发的存储过程。能够对某个特定的数据库操作编程,能够起到日志记录。有效性验证和执行额外操作的作用。保证数据的一致性。


屏蔽 SQl 罕见漏洞

修改 Sa 密码Sa SQL 默认的超级管理员,所以一定要确保 Sa 密码的平安性

删除危险的存储过程

1.      执行操作系统命令的存储过程 XP_cmdshell

2.      支配 OLE 自动化对象的存储过程

3.      注册表访问的存储过程

4.      文件操作类存储过程

5.      进程管理类过程

6.      任务管理类过程

删除存储过程

Drop PROCEDURE SP_XXX

删除扩展存储过程

EXEC MASTER .. SP_DROPEXTENDEDPROC XP_XXX



打开外围应用配置器
选择 XP_cmdshell 功能






检查 C 盘下的结果




配合防火墙过滤指定端口访问

默认 SQL 会侦听 1433 端口。并将 1443UDP 端口用于客户端与服务器间的协议。

禁止不必要的协议

1   禁止不需要的协议。坚守网络攻击对象

2   减少查听网卡和 IP 地址

3   改变查听端口



加密数据

SQL中支持采用证书的方式来加密数据。

创建证书

cr master kei encrypt by password= 'administrator123'

--- 加密密码 administrator123---

cr certif c1

encrypt by password= 'administrator123'

with subject = 'c1 certificate',

start_date='03/08/2009',

expiry_date='03/08/2022';

GO





创建测试表, name 字段为要加密的列,数据类型为 varbinary

cr tabl testB id int ident 1,1 ,name varbinari 5000

注意:加密列的类型必需是 varbinari 因为加密后的数据是类型 varbinary

使用加密函数向测试表中写入一条测试数据

insert into testB name

select encryptbycert cert_id 'c1' , 'haha'

利用下面的语句来提取加密的数据

select * from testB

利用下面的语句来解密数据

select id ,cast decryptbycert cert_id 'c1' ,name,N'administrator123' as varchar 20 from testb

说明: decryptbycert 函数的返回类型为 varbinari 所以要使用 CA ST 函数将二进制转换为原始类型。 Name 为字段名,此处也必须是二进制,如果不是要做相应转换。




这个加密是比较平安的每次加密后的二进制数据也并不相同。唯一的缺点是会消耗大量的资源,不适合在大数据量的环境下部署,另外加密后的数据量相对较大,如果是加密后内容过多

的话。数据库的增长将会愈加明显。可以根据实施环境选择应用。

定期装置补丁

SQL最新的补丁是 SP2
发表于 半年前|来自:辽宁抚顺 | 显示全部楼层
小狮租房
现在的人都强!              
回复 支持 反对

使用道具 举报

发表于 半年前|来自:辽宁抚顺 | 显示全部楼层
现在的人都强!              
回复 支持 反对

使用道具 举报

发表于 半年前|来自:辽宁抚顺 | 显示全部楼层
支持一下辛苦的楼主~顶了!
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册会员 新浪微博登陆

本版积分规则

联系客服 关注微信 下载APP 小程序 返回顶部 返回列表