簡介
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,替換事務名
%u,替換用戶名
%g,替換組名
因此,根據 表 1 中實現的目錄結構,將該設置設為 (&(objectClass=groupOfNames)(cn=%t)(member=uid=%u,*))。
在運行時,如果用戶 Fred 請求 addPerson 事務,則構造一個搜索字符串 (&(objectClass=groupOfNames)(cn=addPerson)(member=uid=Fred,*)),以便對 LDAP 服務器進行搜索。
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/Filter/group
該設置指定應用於 LDAP 服務器的搜索過濾器,用於搜索組被授權訪問的事務。同樣,LdapTransactionAuthorizationProvider 類具體化 3 個標記 %t、%u 和 %g。
因此,根據 表 1 中實現的目錄結構,將該設置設為 (&(objectClass=groupOfNames)(cn=%t)(member=cn=%g,*))。
在運行時,如果組 CSRs 請求 addPerson 事務,則構造一個查詢字符串 (&(objectClass=groupOfNames)(cn=addPerson)(member=cn=CSRs,*)),以便對 LDAP 服務器進行搜索。
當配置了這些設置時,InfoSphere MDM Server 分別從事務的 DWLControl 對象中的 <requesterName> 和 <userRole> 值獲取用戶和組信息,以確定是否授權某個用戶使用該事務。如果用戶沒有被授權,則在響應中返回以下錯誤消息:
清單 2. 對未被授權的用戶返回的消息
<TxResult>
<ResultCode>FATAL</ResultCode>
<DWLError>
<ComponentType>108</ComponentType>
<ErrorMessage>Security violation occurred.</ErrorMessage>
<ErrorType>DIERR</ErrorType>
<LanguageCode>100</LanguageCode>
<ReasonCode>4934</ReasonCode>
<Severity>0</Severity>
</DWLError>
</TxResult>
本文附帶的 RequestResponseSamples.zip 文件包含請求和響應樣例作為測試數據(參見 下載)。
創建自己的事務授權 provider
您可以創建自己的事務授權 provider。為此,需要創建一個實現 com.dwl.base.security.AuthorizationProvider 接口的類。該接口包括以下方法:
public boolean authorize(AuthenticationData authData, String resourceName)
throws SecurityProviderException;
AuthenticationData 參數是在將事務提交給 InfoSphere MDM Server 時從 DWLControl 對象創建的。AuthenticationData 參數包含來自 DWLControl 對象的用戶和組信息。String 參數是資源名,您可以決定是否授權用戶使用它。在這裡,它就是事務名。因此,在您的 provider 類中,需要使用這 2 個參數來確定是否允許使用授權。如果授權被許可,該方法則返回 true。
創建類之後,可以在 InfoSphere MDM Server 上通過設置以下 Configuration and Management 設置對它進行配置:
/IBM/DWLCommonServices/Security/enabled
將該設置設為 true。
/IBM/DWLCommonServices/Security/transaction_authorization_provider_class_name_1
將該設置設為 provider 類的類名。
結束語
本文展示了在 InfoSphere MDM Server 上實現事務授權的一些選項。此外,還演示了設置 InfoSphere MDM Server 提供的 LdapTransactionAuthorizationProvider 類的一些步驟。InfoSphere MDM Server 提供一個接口,使您可以靈活地實現自己的事務授權 provider 類。