董晓涛(David Dong)

博客园 首页 新随笔 联系 订阅 管理

这是我初学时候的笔记,帖出来抛砖引玉!

本单元我们将学习服务器级别和数据库级别的安全性问题!通过本单元的学习,我们将能够为用户和角色分配登录帐户和权限!
1. 在SQL SERVER 中存在两种安全验证模式,2. WINDOWS身份验证和混合身份验证。我
以通过企业管理器或者是在查询分析器中输入…………
如果我们采用了WINDOWS身份验证模式,客房端打开信任连接,它将windows2000的安全信任证书传送给SQL SERVER,如果SQL SERVER在SYSLOGINS表中查找到WINDOWS用户帐户或是组帐户,便接受此连接,因为WINDOWS2000已经验证密码的有效性,所以SQL SERVER将不必重新验证密码!这种验证模式支持WINDOW 2000的高级安全特性,如密码长度,审核,加密等等,并且通过为组用户指定单个登录帐户的方式,可以大大减轻数据库管理员的负担;同时采用这种验证方式,可以快速访问SQL SERVER,而不必记忆登录帐户和密码!
如果我们采用的混合验证,SQL SERVER将验证登录是否存在于syslogins表中,并且验
证密码是否相符!这种验证方式使得非WINDOWS客户端,INTERNET客户端可以访问SQL SERVER。
加密:加密是通过将数据改为不可读形式而使敏感信息得到保密的方法。SQL SERVER不但是内部实现加密,就像我们的密码和在syscomments加密存储过程,触发器和视图定义等,而且也支持网络加密,它允许在客户端和服务器端之间的数据进行加密!例如,用户登录到SQL SERVER时的密码的传输
 下面我们将通过一个实验来授权WINDOWS组成员和用户来访问SQL SERVER 2000
1. 首先,2. 我们将SQL SERVER设置为WINDOWS身份验证模式!我们打开企业管理器-SQL SERVER组,3. 我们在相应服4. 务器上右键-属性-安全性-设为“仅WINDOWS”。在数据库TEST中不5. 存在guest帐户!
6. 创建wangpeng,wangxiang,sohu,yahoo这四个用户和customer_mgmt组,7. 其中customer_mgmt组包括wangpeng,wangxiang和sohu这三个用户。
8. 打开企业管理器-用户服9. 务器--安全性-右键[new login],为customer_mgmt和yahoo新建两个登录,并且为它们授予pubs数据库的访问权限
10. 下面的以后再补
3. 为用户和角色分配登录帐户:在将登录帐户增加到SQL SERVER中之后,4. 我们就可以把它们与用户需要访问的各个数据库中的用户角色或者是用户帐户对应起来!数据库中每个WIN 2000用户,5. WINDOWS组,6. SQL SERVER用户或者是数据库角色在SYSUSERS表中各占一行。一定的许可权限将分别作用于SYSUSERS表中和每个条目,7. 并把这些信息存储于当前数据库中的sysprotects表中!
实验内容:
1.设置SQL SERVER验证模式为混合验证!
2.我们现在在企业管理器中新建一个登录test,不为它设置任何数据库访问权限,当我们在查询分析器使用登录test登录的时候会出面什么,当我们使用我们自定义的数据库时,不行!但我们可以在northwind和pubs数据库中执行任何操作!这是为什么呢,大家可在在企业管理器中查看一下当前数据库角色public的权限,大家可以看到一堆对号!和(也可以使用sp_addlogin增加登录)
3.我们现在想使用我们的test登录可以访问我们自己定义的数据库TEST,我们在企业管理器中的test登录上右键-属性,在数据库访问页选择TEST数据库。(也可以在查询分析器中输入sp_arantdbaccess),现在我们可以看到数据库的用户中增加了test用户!
4.利用查询分析器使用test登录,现在登录test在数据库TEST中是PUBLIC组的成员,我们可以根据需要为它授于更高的权限!我们可以把登录加为固定服务器成员,固定数据库成员或者用户自定义成员中!

用户自定义数据库角色:它和固定数据库角色和固定服务器角色一样,用于减化管理!可以把具有相同工作性质的帐号都加入到特定的数据库角色中,我们为数据库角色赋予权限,那属于它的用户帐户也就拥在相应权限!但是我们不可以在服务器级别新建自定义角色!
8. 为用户和角色分配许可权限!在建立安全帐户之后我们还可以为它分配许可权限!也就是用户可以在数据库中执行什么操作。它与用户所在角色和用户的权限有关!
在SQL SERVER数据库中存在三种许可权限:对象级,语句级和预定义级。语句许可权限:创建数据库对象的权限。对象许可权限:操作数据或者是执行活动的权限。预定义许可权限:只有固定数据库角色和固定服务器角色的成员或者是数据库对象的所有都者才能执行某些特定权限!我们可以通过授于,拒绝或者是废除管理数据库对象的权限!
请记住,数据库权限是累积的,并且是拒绝优先的。只要在一个帐户上权限为拒绝,它是不能被角色成员身份覆盖的!
4.管理数据库的安全性:
   在SQL SERVER中存在两个默认的登录帐户,SA和BUILTIN\ADMINISTRATORS。我们不应该直接使用SA,而应该使用它们成为SYSADMIN的一员,使用他们自己的登录来登录!如果不想让任何本地组自动映射到SQL SERVER的BUILTIN\Administrators中,可以在SQL SERVER中将它删除,并把新建的用户或者是用户组指定到sysadmin角色中!
  Guest:允许没有用户帐户的登录帐户访问数据库!我们可以决定数据库中是否存在 此帐户,如果在数据库中存在些帐户,我们要为它分配合理的许可权限!
  Public:一类特殊的数据库角色,每个数据库用户都属于它,它控制数据库用户的默认权限!但是由于notthwind和pubs的特殊性,它们的public角色拥有所有权限!所有所有用户拥有所有权限!
9. 管理应用程序的安全性:通过利用登录帐户身份验证和许可权限等机制,10. 我们可以保证安全的数据库访问!我们也可以在应用程序级别(如视图,11. 存储过程和应用程序角色等)来确保安全访问!
视图:我们可以授于用户视图的许可权限,而不授于用户表许可权限!我们可以利用视图来屏蔽保密列,如我们可以把表的某些敏感列给屏蔽掉,这样可以使用户生日,用户工资被不被它人看到!
存储过程:同样可以可以为用户授于存储过程的执行权限,而不授于表的修改权限!如我们在进行数据归档的时候,我们将某个时期以前的数据复制到归档表中,然后在主表中删除,我们可以使用存储过程来保证操作同时进行!
应用程序角色:我们也可以通过应用程序角色为应用程序创建一种安全环境!应用程序角色和其它角色不同,它不可以包括成员,还需要激活密码,并且可以避免直接为用户授于权限!如果我们在应用程序角色情况下,我们只可以拥有public角色的权限和当前应用程序角色的权限!
实验:
1. 在数据库northwind中的角色中新建应用程序角色approletest,password:test
2. 在企业管理器中为它授权:在customers表的select权限和employees表的deny select 权限!
3. 利用查询分析器,4. 用sa登录,5. 在查询分析器中输入:
   use northwind
exec sp_setapprole 'approletest','test'
select * from customers
正常显示customers数据
select * from Categories
正常显示customers数据 -注意,这里之所以能够正常显示,是因为public角色的作用
select * from employees
服务器: 消息 229,级别 14,状态 5,行 1
拒绝了对对象 'Employees'(数据库 'Northwind',所有者 'dbo')的 SELECT 权限。
说明当激活应用程序角色的时候我们只得到了public和应用程序角色的权限!
11. 管理企业内部SQL SERVER的安全性:我们可以利用组策略,12. 合理服13. 务器,14. 防火墙,15. 路由器和在线加密等来增加安全性!

posted on 2004-11-26 11:25  董晓涛  阅读(1573)  评论(1编辑  收藏  举报