查看: 3928|回复: 1

哪位高手谈谈db2的安全配置?

[复制链接]
论坛徽章:
3
网络板块每日发贴之星
日期:2005-04-13 01:01:542010新春纪念徽章
日期:2010-03-01 11:06:132011新春纪念徽章
日期:2011-02-18 11:42:48
跳转到指定楼层
1#
发表于 2002-9-4 11:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
db2怎么安全配置
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-12-01 10:11:47管理团队2006纪念徽章
日期:2006-04-16 22:44:45会员2006贡献徽章
日期:2006-04-17 13:46:34
2#
发表于 2002-9-5 16:23 | 只看该作者

一点说明

DB2 Sercurity Overview
        DB2的安全策略是由两部分组成:
²        认证(Authentication):是指对用户的合法性验证,解决的问题是当一个用户登陆到数据库,他的密码和用户名是否匹配,这个验证并不是由DB2来完成,而是由外部的程序,如操作系统或者是第三方的身份验证程序。
²        授权许可(Authorization):当用户通过认证之后,要开始操作数据,这个时候DB2会察看该用户是否有权限进行要求的操作,这个工作是在DB2系统内部来做的。
举例:CONNECT TO sample USER bob using pwd,DB2会做两件事情:
²        将该用户名和密码发送个操作系统或是第三方程序验证,该用户的合法性;
²        合法性验证通过之后,DB2将检查这个用户是否有权限连接到 Sample数据库;
也就是说DB2首先认为数据库服务器的操作系统应该是安全的,所以也要注意对数据库服务器的安全策略的设置。
External Database Sercurity(Authentication)
        上面提到了Authentication是完全在DB2之外进行验证用户合法性的,DB2的客户端只需要发送用户名和密码给操作系统或是第三方验证程序。鉴于网络环境的复杂性和安全考虑DB2设计很多Authentication方式来进行用户验证以满足各种要求。
Authentication Types
        Authentication type决定了验证发生的场所,DB2的缺省验证类型为Server,即在服务器端进行验证。DB2还支持如下方式验证。下面具体介绍各种方式的意义。
        在讲述Authentication之前,我们先来看一下Authentication所发生的环境,主要有两种:
²        Client/Server环境
²        Client/DB2 Connect Server/Host Server 环境
Authentication Type Server
        用户验证发生在服务器上,密码在传输过程中不加密。
Authentication Type DCS
        用户验证发生在Host系统中(DRDA环境),密码在传输过程中不加密。

Ecrypted Password
²        Server Encrypt :Server 方式的加密选择
²        DCS Encrypt        :DCS方式的加密选择
密码在传输过程是加密的。
Authentication Type DCE
        借助于第三方身份验证软件来进行用户验证。会有一个专门的DCE Server来负责身份验证。密码在传输过程是加密的。
Authentication Type Kerberos
        另一种基于第三方服务的验证方式,使用户可以不必重复登录就可以登录到处于Kerberos模式下的所有服务资源。目前Win2k支持此服务。
Sercurity Extension
²        DCE_Server_Encypt
在Server端使用DCE_Server_Encypt,在客户端提供了多种选择:
Client Authentication        Server Authentication        Authentication Result
DCE        DCE_Server_Encypt        DCE
Server        DCE_Server_Encypt        Server
Server_Encypt        DCE_Server_Encypt        Server_Encypt
²        Kerberos_Server_Encrpt
在Server端使用Kerberos_Server_Encrypt,在客户端提供了多种选择:
Client Authentication        Server Authentication        Authentication Result
Kerberos        Kerberos_Server_Encrypt        Kerberos
非Kerberos        Kerberos_Server_Encrypt        Server_Encrypt
Authentication的搭配
        对Authentication我们关心的问题就是,用户验证发生在哪里,在验证信息的传递过程中密码是否被加密。







        环境一:Client/Server

Client Authenticationtype        DB2 server authentication type        Authenticatedat        Client toDB2 ConnectServer encryption
SERVER        SERVER        SERVER        NO
SERVER_ENCRYPT        SERVER        SERVER        YES
SERVER        SERVER_ENCRYPT        SERVER        NO
SERVER_ENCRYPT        SERVER_ENCRYPT        SERVER        YES
DCE        DCE        DCE SERVER        YES
KERBEROS        KERBEROS        KERBEROS SERVER        YES
CLIENT        CLIENT        CLIENT        N/A

        环境二:Client/DB2 Connect Server/Host Server
Client Authenticationtype        DB2 Connectserver authentication type        Authenticatedat        Client toDB2 ConnectServerencryption        DB2 ConnectServerto hostencryption
SERVER        SERVER_ENCRYPT        DB2 CONNECT SERVER        NO        N/A
SERVER_ENCRYPT        SERVER_ENCRYPT        DB2 CONNECT SERVER        YES        N/A
DCS        SERVER_ENCRYPT        DB2 CONNECT SERVER        NO        N/A
DCS_ENCRYPT        SERVER_ENCRYPT        DB2 CONNECT SERVER        YES        N/A
SERVER        SERVER        DB2 CONNECT SERVER        NO        N/A
SERVER_ENCRYPT        SERVER        DB2 CONNECT SERVER        YES        N/A
DCS        SERVER        DB2 CONNECT SERVER        NO        N/A
DCS_ENCRYPT        SERVER        DB2 CONNECT SERVER        YES        N/A
SERVER        DCS        HOST SERVER        NO        NO
SERVER_ENCRYPT        DCS        HOST SERVER        YES        NO
DCS        DCS        HOST SERVER        NO        NO
DCS_ENCRYPT        DCS        HOST SERVER        YES        NO
SERVER        DCS_ENCYPT        HOST SERVER        NO        YES
SERVER_ENCRYPT        DCS_ENCYPT        HOST SERVER        YES        YES
DCS        DCS_ENCYPT        HOST SERVER        NO        YES
DCS_ENCRYPT        DCS_ENCYPT        HOST SERVER        YES        YES
DCE        DCE        DCE SERVER        YES        YES
CLIENT        CLIENT        CLIENT        N/A        N/A

规则:虽然这里有很多种组合,但是其实是有规律的。
首先需要搞清客户端和服务器的关系,在Client/Server环境中,客户端和服务器是非常清晰的,在Client/DB2 Connect Server/Host Server环境中,把它分为两段即:Client/DB2 Connect Server段和DB2 Connect Server/Host Server段。在Client/DB2 Connect Server段,Client为客户端,DB2 Connect Server为服务器,DB2 Connect Server/Host Server中DB2 Connect Server为客户端,Host Server为服务器;这样我们可以发现密码是否加密传输是由客户端的Authentication选项来决定,而Authentication发生在哪里是由服务器的Authentication选项来决定的。
Authentication Type Client
        前面虽然讲到Client的时候我们都是假定验证在Client端发生。但是当Client/Server上都配置了Client,那么用户验证究竟在哪里发生还和以下两个参数有关。
        讲到这里首先要为大家定义一下客户端的分类:
²        Untrust Client:Win95/98,Win3.x,Macintosh
²        Trust Client:Windows NT, Windows 2000,OS/2, all the supported UNIX operating systems, MVS, OS/390, VM, VSE和AS/400。
²        Host Client:是Trust Client的子集MVS, OS/390, VM, VSE和AS/400。
在连接的时候可以提供或不提供用户名和密码,在Authentication为Client时,如果不提供用户名和密码则使用本机登录的用户名和密码。
和Client验证方式相关的两个参数是Trust_AllClnts,Trust_ClntAuth:
²        Trust_AllClnts:有三种设置;
        YES:所有的客户机不管是Trust和Untrust的客户端都在客户端进行验证;
        No:Untrust的客户端必须提供了用户名和密码,并且验证在Server端发生;
        DRDA ONLY:只有Host Client才能在本地验证;
²        Trust_ClntAuth:有两种设置:
Client:不管是否提供了用户名和密码,验证都在Client端发生;
Server:如果提供了用户名和密码,验证会在Server端发生;
        两个参数和客户端分类需要结合起来来决定Authentication发生的地方。
Database Internal Sercurity
        在这里主要讨论是在用户连接到数据库或Attach到实例后,要对数据对象进行操作和访问的时候,数据库会进行Authorazation方面的权限验证。
        DB2的权限分以下五类:
²        SYSADM
²        SYSCTRL
²        SYSMAINT
²        DBADM
²        LOAD
带SYS的三种权限是不能被GRANT的,后两中权限是可以被Grant的。
Authorities in DBM Configuration
        在Instance的配置参数中可以看见有三个和Sys相关的参数;这三个参数的值都应该是用户组的名称(NT、2000中),应该注意这三个参数的字符数都不能超过8位,否则无效,当把SYSADM_GROUP被置为空的时候,系统缺省确认操作系统的Administrator组具有SYSADM权限。
Priviliges
Database Privileges
²        BINDADD:允许用户创建一个新的Package;
²        Create Not Fenced:允许用户以Not Fenced方式创建一个UDF(User Defined Function),所谓Not Fenced方式就是指所创建的UDF将在共享内存中使用,而不是被分配在独立的线程和进程中执行的。
²        Impilit Schema:允许用户在创建一个对象的时候同时创建一个Schema
²        所有以上权限都是被分配给Public组的,这个组是一个DB2定义的逻辑组,在操作系统中是没有的,它被用来分配DB中的Privilige。所有的登录用户都缺省为Public成员。
Schema Privileges
²        Create In :在Schema下创建对象
²        Alter In:在Schema下修改对象
Table Privileges
²        Control :拥有表上的所有权限
²        Select,Update,Delete,Insert数据操纵权限;
²        Alter:修改表结构及相关属性
²        Index:创建索引
²        Reference:允许用户将此表作为外键关系中的父表;
Package Privileges
²        Control:拥有所有的权限
²        Bind:允许用户可以重新绑定一个已经存在的Package(Bind和BindAdd权限一定要分清楚,考试经常会考到)
²        Execute:允许用户执行个已经存在的Package
Index Privileges
²        Control
Tablespace Privileges
²        Use:允许用户在Tablespace中创建表。

User or Group Support(Unix)
        在某些操作系统上是允许用户名和组名相同,所以在授权的时候如果存在这种情况的时候必须指明授权给group还是User,否则系统将返回一个错误信息。
DB2_GRP_LookUp
        在Winnt中,会出现很多域方面的用户认证问题,下面来讨论一下:
        DB2_GRP_LookUp有两种设置:
²        Local:在网络机构相对简单的情况下,例如部门级应用中,一般是以工作组方式来构建网络,这个时候可以是Local选项,在用户验证的时候,Server只会在本地寻找用户和组名,不过如果该数据库服务器同时也是一台域控制器的时候也需使用Local;
²        Domain:在域模式下,用户名和组名的搜索范围决定于网络的复杂程度,本域内的用户可以通过PDC来进行查找,而信任域中的用户DB2也需要通过本域的PDC询问信任域的BDC来查找,而不是直接去查找。

试验:
在操作系统中环境变量中把db2instance改成DB2A
db2 get instance 察看先在使用的db Manager;
db2 update dbm cfg using sysadm_group db2group;
        在windows中创建一个组叫做DB2GROUP
        在Windows中创建一个用户名字叫做DB2A
        将DB2A放到DB2GROUP中去。
使用DB2A重新登录;

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表