简介
InfoSphere MDM Server 安全模块的特点之一是基于用户或用户所属的组提供事务授权。这种授权决定是否允许请求用户使用一个事务。这被称作 InfoSphere MDM Server 安全模块的事务授权。默认情况下,事务授权是禁用的。
为了使用事务授权,可以将 InfoSphere MDM Server 配置为使用一个事务授权 provider 类。这个 provider 类与管理事务授权的系统进行交互。
图 1. 事务授权
事务授权 provider 类必须实现 com.dwl.base.security.AuthorizationProvider 接口。InfoSphere MDM Server 开箱即用地提供了一个作为 InfoSphere MDM Server Security Manager 接口的事务授权 provider 类,以及一个作为 Lightweight Directory Access Protocol(LDAP)服务器接口的事务授权 provider 类。您还可以实现自己的 provider 类。
图 2. 事务授权实现选项
本文将详细描述如何配置 LdapTransactionAuthorizationProvider 类,以及如何在 InfoSphere MDM Server 上启用事务授权。这个 provider 类使用 LDAP 服务器来管理事务授权。本文的示例 provider 类使用一个简单的目录结构来管理用户、组和事务授权。
前提
本文使用 Tivoli Directory Server version 6.1 作为 LDAP 服务器。本文假设您拥有 LDAP 方面的基础知识,并拥有使用 Tivoli Directory Server 的经验。
本文包含提交到 InfoSphere MDM Server version 8.0 的事务。您应该知道如何:
将事务提交到 InfoSphere MDM Server
使用 Configuration and Management 组件配置 InfoSphere MDM Server
在 InfoSphere MDM Server 事务中指定用户和组
对于任何 InfoSphere MDM Server 事务,都可以在事务的 DWLControl 对象中指定用户或用户所属的组。假设成功认证用户或组,事务授权将检查用户或组是否被授权访问请求的事务。
清单 1 是 DWLControl 对象的 XML 表示的一个例子:
清单 1. DWControl 对象的 XML 表示
<DWLControl>
<requesterName>myUserName</requesterName>
<userRole>myGroup1</userRole>
<userRole>myGroup2</userRole>
</DWLControl>
<requesterName> 元素对应于用户,<userRole> 元素对应于用户所属的组。对于每个事务,DWLControl 对象必须包含一个用户名,另外还可以包含 0 个或多个组名。事务授权 provider 通过 com.dwl.base.security.AuthorizationProvider 接口检查用户名和组名,以确保对事务的访问经过授权。
LDAP 事务授权 provider
通常,可以选择使用 LDAP 事务授权 provider,因为:
您的组织已经有 LDAP 服务器基础设施。
LDAP 服务器上已经设置了您的组织的用户和组。在这种情况下,只需添加想要与用户和组相关联的 InfoSphere MDM Server 事务。
com.dwl.base.security.provider.LdapTransactionAuthorizationProvider 类就是使用 LDAP 服务器实现事务授权的一种实现。它使用一个简单的目录结构来管理用户、组和事务名称之间的关系。当然,您也可以实现自己的 LDAP 事务授权 provider 类,只要这个类实现 com.dwl.base.security.AuthorizationProvider 接口就行了。
使用来自 InfoSphere MDM Server 的 LDAP 事务授权 provider
InfoSphere MDM Server 提供了一个 LdapTransactionAuthorizationProvider 类,您可以在 LDAP 服务器上使用这个类。使用这个类的步骤如下所示:
设计授权需求
在 LDAP 服务器上实现授权需求
配置 LdapTransactionAuthorizationProvider 类,使之成为 LDAP 服务器的接口
下面的小节更详细地描述这些步骤。
设计授权需求
授权需求应该以业务需求为基础。为了演示如何使用 LdapTransactionAuthorizationProvider 类,现在假设您的 NewBusiness 部门有 3 个组:DirectSales、CSRs 和 DataStewards。NewBusiness 部门决定授予这 3 个部门访问以下事务的权限。
事务 | 组 |
addPerson | DirectSales、CSRs、DataStewards |
getPerson | CSRs、DataStewards |
updatePerson | DataStewards |
属于这 3 个组当中任何一个组的用户都可以使用 addPerson 事务添加一个客户。考虑到客户的隐私,只有属于 CSRs 或 DataStewards 组的用户可以使用 getPerson 事务查看客户信息。考虑到数据的完整性,只有属于 DataStewards 组的用户可以使用 updatePerson 事务更新客户信息。
假设在 NewBusiness 部门中,Fred 是 DirectSales 组的用户,Sue 是 CSRs 组的用户,而 Thomas 是 DataStewards 组的用户。
根据上述业务需要,可以设置 LDAP 服务器,使之管理以下业务授权数据:
表 1. 用户/组的事务授权
addPerson | getPerson | updatePerson | |
DirectSales (Fred) | 允许 | 不允许 | 不允许 |
CSRs (Sue) | 允许 | 允许 | 不允许 |
DataStewards (Thomas) | 允许 | 允许 | 允许 |
本文提供了一个 MDM_LADP.ldif 文件,其中显示了如何在 LDAP 服务器上设置这些用户、组和事务。您可以查看该文件,了解更多的细节(参见 下载)。
配置 Tivoli Directory Server
根据 MDM_LADP.ldif 文件,假设目录从 NewBusiness 部门开始。您需要在 Tivoli Directory Server 实例中创建以下后缀。如果使用 Tivoli Directory Server Instance Administration Tool,可以像下面这样创建后缀 o=NewBusiness,c=us:
图 3. 添加 o=NewBusiness,c=us 后缀
为事务授权创建目录结构
创建后缀之后,可以在 Tivoli Directory Server 实例上创建 表 1 所述的目录结构。
如果使用 Tivoli Directory Server Administration Tool,那么可以通过导入 MDM_LADP.ldif 文件来创建目录结构(参见 下载)。
图 4. 导入 LDIF 文件
添加后缀和导入数据之后,启动 Tivoli Directory Server 实例。如果想验证数据是否被成功地导入,还可以启动 Tivoli Directory Server Web Admin。应该可以看到,在 o=NewBusiness,c=us 后缀下有 3 个条目。要了解如何启动实例和 Web Admin,请参阅 Tivoli Directory Server 文档。
图 5. 目录条目
配置 LDAP 事务授权 provider 类
在 Tivoli Directory Server 实例上装载好数据后,便可以配置 InfoSphere MDM Server LdapTransactionAuthorizationProvider 类。这可以通过配置 InfoSphere MDM Server Configuration and Management 设置完成。这些设置包括:
/IBM/DWLCommonServices/Security/enabled
该设置决定是否为事务授权启用安全性。
将该设置设为 true。
/IBM/DWLCommonServices/Security/transaction_authorization_provider_class_name_1
该设置指定事务授权 provider 类。
将该设置设为 com.dwl.base.security.provider.LdapTransactionAuthorizationProvider。
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/jndiFactoryClass
该设置指定用于在 LDAP 服务器上进行查找的 JNDI factory 类。
可以使用默认的设置 com.sun.jndi.ldap.LdapCtxFactory。
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/jndiProviderUrl
该设置指定指向 LDAP 服务器的 URL。
假设在本机的端口 389 上配置 Tivoli Directory Server 实例,那么将该设置设为 ldap://localhost:389。
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/base
该设置指定从其中开始搜索的基本对象。
在 图 3 中,我们从 o=NewBusiness,c=us suffix 开始设置用户和组。因此,将该设置设为 o=NewBusiness,c=us。
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/Filter/user
该设置指定应用于 LDAP 服务器的搜索过滤器,用于搜索用户被授权访问的事务。LdapTransactionAuthorizationProvider 类在运行时具体化 3 个标记,以替换实际的值。这 3 个标记是:
%t,替换事务名
您可能想查找下面的文章:
- 为 InfoSphere Warehouse 提供实时数据的高效解决方案
- 结合使用 IBM InfoSphere Warehouse Design Studio 和 pureXML 数据,第 2 部分: 为涉及 XML 的多个 ETL 作业设计控制流
- IBM InfoSphere Federation Server V9.7 中 DECFLOAT 数据类型及相关语义支持
- IBM InfoSphere Federation Server V9.7 中的新增功能
- 使用 IBM InfoSphere Warehouse 9.7 Administration Console,第 1 部分: 入门与设置
- 理解 IBM InfoSphere MDM Server 安全性 3