Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91513947
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-05-31 16:32:40

配置安全性

LBAC 通过为表对象附加安全标签实现了对表对象的访问控制。试图访问对象的用户必须具有授权给自己的安全标签。如果标签匹配的话,则允许访问;否则拒绝访问。

有三种类型的安全标签:

  1. 行安全标签:该安全标签和数据库表中的数据行或记录相关联
  2. 列安全标签:该安全标签与数据库表中的列相关联
  3. 用户安全标签:该安全标签被授权给数据库用户

安全标签是由一个或多个安全标签组件构成。您可以使用三种安全标签组件构建自己的安全标签:

  1. 集合(Set):集合是一些元素的组合,该组合中元素的出现次序并不重要。所有元素之间的关系是平等的。
  2. 数组(Array):数组是一个经过排序的集合,可用来表示一个简单的层次结构。在数组中,元素出现的次序非常重要。例如,第一个元素的级别要比第二个高,而第二个元素的级别比第三个高。
  3. 树(Tree):树表示一种更加复杂的层次结构,它可以具有多个节点和分支。例如,可以使用树表示结构图。

可以使用安全策略定义安全标签组件,由这些安全标签组件组成具体的安全标签。需要使用 DBSECADM 处理 LBAC 对象。







可插入的身份验证模块(Pluggable Authentication Module,PAM)是一个经过良好定义的框架,可以支持最初由 Sun Microsystems 开发的各种身份验证模块。

PAM 使系统管理员能够针对不同的应用程序实现不同的身份验证机制。例如,诸如 UNIX 登录程序之类的系统与访问数据库敏感信息的应用程序相比,其需求不尽相同。PAM 可以在一个机器中实现很多种这类场景,这是因为身份验证服务是在应用程序级别上实现的。

除了能够使应用程序选择所需的身份验证机制,PAM 还可以实现模块堆栈。模块被逐一堆起来,因此使应用程序在授权访问之前能够使用多种方式进行身份验证。PAM 提供了一组 API 来支持身份验证、账户管理、会话管理和密码管理。

系统管理员可以启用或禁用 PAM 功能。默认情况下,数据库服务器使用传统 Informix 身份验证机制(该机制基于 BSD rhosts 机制),从而避免对用户强加较大更改。

要结合使用 PAM 和 Dynamic Server:

  • Informix 数据库服务器必须使用支持 PAM 的操作系统平台
  • 客户机应用程序必须使用最新版本的客户机 SDK 编写
  • 必须在操作系统上配置正确的 PAM 服务
  • 必须知道 PAM 服务是否接受给定的密码或者它是否使用挑战——响应(challenge-response)形式的协议(例如,RADIUS 身份验证服务器)
  • 如果 PAM 服务使用挑战——响应形式的协议,则必须修改应用程序以处理挑战和响应。应用程序必须要意识到 PAM 模块会生成多个挑战这一事实。
  • 必须确保 PAM 身份验证不会影响企业复制(Enterprise Replication)和高可用性数据复制(High-Availability Data Replication)。
  • 必须同时为客户机应用程序和数据库服务器修改 sqlhosts 文件中的服务器条目(如果客户机应用程序和数据库服务器位于不同位置或位于同一机器上不同位置)

可插入的身份验证模式(PAM)在 Solaris、Linux、HP-UX 和 AIX® 上的 32 位和 64 位模式都受支持。







Windows 中的 LDAP 身份验证的创建和配置与 UNIX 和 Linux 使用的可插入的身份验证模块(PAM)类似。如果希望使用 LDAP 服务器对您的系统用户进行身份验证,可以使用 LDAP 身份验证支持模块。该模块包含源代码,您可以对其进行修改来实现特定的 LDAP 身份验证支持模块。

身份验证模块是一个 DLL,通常位于 %INFORMIXDIR%\dbssodir\lib\security 目录。%INFORMIXDIR%\dbssodir\pam.conf 文件列出了该模块的参数。功能完整的 LDAP 身份验证模块的源代码和所需的配置文件示例包含在 %INFORMIXDIR%\demo\authentication 目录中。

LDAP 身份验证模块提供了单模块(single-module)身份验证。该模块并不支持诸如模块堆栈等特性。系统管理员可以启用或禁用身份验证。







您可以在连接或访问时更改数据库服务器会话的属性,而不需要更改会话运行的应用程序。这种特性在某些情况下非常有用,例如如果您无法修改应用程序的源代码来设置环境选项或环境变量,或者包括会话相关的 SQL 语句(例如由于 SQL 语句包含供应商获得的代码)。

要更改会话的属性,需要为不同数据库设计自定义的 sysdbopen( )sysdbclose( ) 程序,以支持特定用户或 PUBLIC 组的应用程序。sysdbopen( )sysdbclose( ) 应用程序可以包含一些 SETSET ENVIRONMENTSQLSPL 语句,当数据库打开或关闭时,数据库服务器将为用户或 PUBLIC 组执行这些语句。

例如,您可以为 user1 定义包含 SET PDQPRIORITYSET ISOLATION LEVELSET LOCK MODESET ROLESET EXPLAIN ON 语句的程序,当 user1 使用 DATABASECONNECT TO 语句打开数据库时,将执行上述语句。

会话环境变量 PDQPRIORITYOPTCOMPIND 的任何设置是由 sysdbopen( ) 程序内的 SET ENVIRONMENT 语句指定,该程序将在会话期间一直保持运行状态。SET PDQPRIORITYSET ENVIRONMENT OPTCOMPIND 语句并不持久存留在常规程序中,当包含在 sysdbopen( ) 程序中时会一直保存在该程序中。

如果用户断开程序与数据库的连接(或者当 PUBLIC.sysdbclose( ) 运行时,存在 sysdbclose( ) 并且不属于当前用户),将运行 user.sysdbclose( ) 程序。

阅读(614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~