6.8 安全性 WebSphere應用服務器具備很好的安全性支持。安全性簡單地說就是肯定誰可訪問重要的系統資源,這些系統資源包括文件、目錄、程序、鏈接和 數據庫。以獨立模式運行WebSphere應用服務器比做爲 Web 服務器的一部分運行具備更高的安全性。若是安全性要求超出了 Web 服務器提供的安全性,那麼請以獨立模式運行WebSphere應用服務器。下面介紹使用存取控制表保護資源、選擇認證方案和協議、在WebSphere應 用服務器中使用目錄服務。 1.使用存取控制表保護資源 創建了一個設置安全性的基本過程。 與安全性相關的概念包括用戶、組、資源、許可權、領域、和存取控制表(ACL),這些安全性概念是緊密相關的,現說明以下: (1) 用戶:一個可被 Web 服務器認證的身份。用戶能夠是人也能夠是計算機。 (2) 組:用戶的集合。組提供了一個管理大量的用戶的有效方法,這是由於管理員能夠一次指定一個組的許可權。一般,組成員之間有一些共同特徵。例如,一個公司中 可能包括一個由管理級僱員組成的組,和另外一個由非管理級僱員組成的組。其中,可能對非管理級用戶賦予查看銷售數據文件的訪問權,而對管理級用戶賦予查看和 編輯銷售數據文件的訪問權。能夠將一我的定義成單個用戶,同時也將其定義成組的成員。例如,我的 Amy 可能表明單個用戶 amy,也可能表明組 managers 的成員。 (3) 資源:經過 Web 服務器進行存取的有價資源包括HTML 文件和目錄(Web 頁面)、其它文件和目錄(如FTP文件)、Web 應用程序(Java Servlet 或 CGI 程序),而經過WebSphere應用服務器進行存取的資源包括Java Servlet、啓用訪問企業資源和應用程序(如數據庫)的定製 Servlet、鏈接、套接字、文件和其它可由 Servlet 使用的資源。 (4) 許可權:許可權表示請求訪問資源的特權。管理員可經過創建存取控制表向用戶和組授予許可權,以保護資源。許可權是與特定的資源相關的。想象一下,若是一個 用戶具備查看文件 A 和修改文件 B 的許可權。那麼該用戶不能用修改文件 B 的許可權來修改文件 A。每一個許可權僅適用於特定的資源,且不能傳遞。單個用戶的許可權優先於組的許可權。例如,若是用戶 amy 對文件具備讀、寫權,但同時 amy 所屬的組對該文件僅有讀取權,那麼 amy 仍對該文件具備讀、寫權,這是由於單個用戶的許可權將覆蓋具備更多限定的組許可權。(即便組的許可權限制性低於單個用戶的許可權,但用戶的許可權仍將覆蓋 組的許可權)。 (5) 領域:領域是用戶、組和存取控制表的數據庫。爲了使用戶能訪問領域中的資源,必須在該領域中定義需訪問資源的用戶。一個用戶能夠屬於幾個領域,但在同一領 域中用戶標識符不能重複。例如,用戶 amy 可屬於 fileRealm 和 anyRealm 領域。但每一個領域中僅可包含一個名爲 amy 的用戶。可在每一個領域中賦予用戶 amy 訪問不一樣資源的不一樣許可權。 (6) 存取控制表:與資源關聯的存取控制表指定了領域中的哪些用戶和組能夠訪問資源。 存取控制表(ACL)、領域和資源的關係以下: l 一個領域能夠包含許多 ACL。 l 一個領域能夠包含許多資源。 l 一個 ACL 能夠僅屬於一個領域。 l 一個資源能夠僅屬於一個領域。 l 一個資源僅與一個 ACL 相關。 l 一個 ACL 可與許多資源相關。 WebSphere應用服務器附帶了一些前期創建的領域: l defaultRealm 定義了用戶如何訪問本地定義的資源。也可創建存取控制表,以肯定哪些用戶和組 對哪些資源具備訪問權。 l NT 領域(NTRealm)和UNIX領域(UnixRealm)定義了在操做系統中擁有賬戶的用戶如何使用 WebSphere應用服務器資源。 操做系統中定義的用戶可由WebSphere應用服務器共享。只要他們存在於下層系統中,這種共享就一直存在。WebSphere應用服務器管理器界面使 您能查看該領域;但若要更改它,必須使用操做系統所提供的設施。目前,WebSphere應用服務器能夠共享操做系統定義的用戶,但不能共享組。 l servletMgrRealm 定義了 Servlet 如何訪問遠程定義的資源,如遠程裝入的 Servlet。 servletACL 是 該領域中的惟一一張存取控制表。當遠程裝入且帶有數字簽名的 Servlet 試圖訪問一個受保護的資源時,將對 Servlet 中的數字證書與 servletMgrRealm 中與用戶關聯的數字證書進行比較。 servletACL 定義了是否授予或拒絕許可權。例如,假設用戶 X 的數字證書封裝在 anyServlet.JAR 文件中。若是用戶 X 被添加在 servletMgrRealm 中,則全部包含與該用戶相同數字證書的 Servlet (anyServlet.JAR 文件中)能夠執行和訪問賦予該用戶的資源。 l 最後,若是在WebSphere應用服務器管理器的「目錄管理」頁面中啓用目錄服務,將顯示 LDAPRealm。WebSphere應用服務器能夠共享定義在目錄服務中的用戶和組,且這種共享將一直持續下去,直至除去他們或禁用目錄管理 支持。WebSphere應用服務器管理器界面使您能查看該領域;但若要對它進行更改,必須使用 LDAP 服務器所提供的設施。如需更多有關 LDAP、目錄服務和 LDAPRealm 的信息,請參閱有關使用目錄服務的文檔。 WebSphere應用服務器使您能設置各類許可權。例如,其中包括髮送和接收文件、刪除文件、讀取和寫入文件、裝入 Servlet、連接至庫文件、打開和偵聽套接字等許可權。某些狀況下,服務不須要其客戶存在於存取控制表中。例如,許多 Web 頁面(HTTP)服務向全部用戶公開其文檔,而不要求他們在存取控制表中進行註冊。 可經過爲每一個資源在單個領域中創建單個存取控制表(ACL)來保護該資源(下面將進行討論)。 ACL 將指定能夠訪問或修改資源的用戶或組。對於要保護的每一個資源,須要指定存取控制表、安全性領域、認證方案(用來驗證訪問資源的用戶的方法)。下面介紹實現 安全性的一個示例。 使用各類管理器頁面,以用存取控制表來創建安全性的基本步驟顯示以下。 (1) 定義用戶。 使用「安全性」-> 使用「用戶」頁面來定義用戶,即定義被容許訪問資源的我的和計算機。例如,定義名爲 bopeep 的用戶: l 選擇 defaultRealm。 l 單擊頁面左上部的「添加」按鈕。 l 輸入用戶名 bopeep。 l 輸入口令 sheep。再一次輸入該口令以進行驗證。 l 單擊「肯定」按鈕。 l 驗證 bopeep 顯示在「定義的用戶」列表中。 (2) 可選地定義組 使用「安全性」-> 使用「組」頁面來定義用戶所屬的組,以使管理更加容易。首先,選擇一個領域。下一步,選擇將組添加到該領域中。能夠用您喜歡的名稱來命名組,而後將用戶從非成員狀態轉換爲成員狀態。例如,將用戶 bopeep 添加到組 mypeeps 中: l 選擇 defaultRealm。 l 單擊頁面左上部的「添加」按鈕。 l 輸入組名 mypeeps。 l 在「非成員」列表中選擇用戶 bopeep。 l 單擊「非成員」列表旁的「添加」按鈕。 l 驗證 bopeep 已轉換到成員框中。 (3) 建立 ACL 使用「安全性」-> 使用「存取控制表」頁面來建立 ACL。例如,建立名爲 sheepcontrol 的 ACL: l 單擊定義「定義的存取控制表」列表旁的「添加」按鈕。 l 輸入 ACL 名稱 sheepcontrol。 l 單擊「肯定」按鈕。 (3) 定義資源 使用「安全性」-> 使用「資源」頁面以將要保護的資源添加到領域中。(注意:必須在執行「建立 ACL」步驟後才能執行該步驟,這是由於必須指定新資源所屬的 ACL)。例如,將 CheckMessage Servlet 添加到領域 defaultRealm 中的 sheepcontrol ACL 中: l 選擇 defaultRealm。 l 單擊「添加」按鈕。 l 選擇基本方案做爲認證方案。(「方案」選項將在下文中討論)。 l 選擇 sheepcontrol ACL。 l 選擇 Servlet,並指定 CheckMessage Servlet。 l 單擊「肯定」按鈕。 l 驗證 CheckMessage 現已做爲 ACL sheepcontrol 的資源列示出來。 (4) 賦予許可權 返回 ACL 並賦予用戶、組和計算機訪問 ACL 資源的許可權。例如,賦予 bopeep具備 GET 和 PUT 許可權,以使它能夠訪問領域 defaultRealm 中sheepcontrol ACL的文件和文件夾: l 確保已在「定義的存取控制表」列表框中選定 sheepcontrol。 l 單擊頁面底部「主許可權」字段旁的「添加」按鈕。 l 當顯示「在 defaultRealm 中的 ACL sheepcontrol 添加許可權」框時,單擊「文件與文件夾」。 l 下一步,選擇許可權選項爲 bopeep。因爲 bopeep 是一個用戶,因此單擊「用戶」。在列表中選 擇bopeep。(注意,若是選擇的是「組」,則將看到「主名」列表中的組 mypeeps)。 l 使用複選框賦予 bopeep具備 GET 和 PUT 許可權。 l 單擊「肯定」按鈕。 l 經過查看「主許可權」框來驗證 bopeep 具備正確的許可權。若是沒有顯示許可權,請單擊 bopeep 左邊的加號。這時將顯示一個列表,該列表顯示了 bopeep 的許可權。 2.選擇認證方案和協議 首先討論的是認證協議,即 HTTP 和 HTTPS。接下來將會討論的是認證方案,即基本、摘要、定製和證書認證。最後討論的是有關組合方案和協議的策略。 (1) 關於認證協議 HTTPS 則是 HTTP 和 SSL 協議的組合。SSL(安全套接字層)是一個網絡安全協議,它用來提供服務器和客戶機之間必要的安全性。若是選擇 HTTP,認證數據的接收無任何保護。若是選擇 HTTPS,認證數據在每一個 SSL 協議中加密。若是要使用證書認證,那麼必須使用 HTTPS。 (2) 關於認證方案 WebSphere應用服務器支持的認證方案包括基本認證、摘要認證、定製認證、證書認證。 l 基本認證:使用 HTTP 或 HTTPS 請求來自客戶機的用戶名和口令。 用普通文本將用於驗證的 信息發送給服務器驗證。全部瀏覽器都支持基本認證。若是一個用戶標識符和口令提供了足夠的認證,那麼請考慮使用基本認證。 l 摘要認證:使用 HTTP 或 HTTPS 請求來自客戶機的用戶名和口令。將用於驗證的用戶名和口 令的加密形式(使用摘要)發送給服務器。並不是全部瀏覽器都支持摘要認證。(當前僅 Sun HotJava 瀏覽器支持該認證方案)。若是瀏覽器不支持摘要認證,那麼其用戶將沒法訪問由該協議進行保護的資源。 l 定製認證:使用 HTTP 或 HTTPS 來請求使用 HTML 格式定製的客戶機信息。由 CGI 和 Servlet 將這些用於驗證的信息用普通文本發送到服務器上。當須要除了標識符和口令以外的用戶認證時,可以使用定製認證。例如,能夠請求一個社會安全號的用戶認證。使 用該協議,可創建 HTML 格式以詢問用戶數據。認證是由服務器端代碼(CGI 和 Servlet)執行的,而不是由 IBM WebSphere應用服務器運行時應用程序執行的。若是使用定製認證,請使用 HTTPS 保護數據。 l 證書認證:使用 HTTPS 以請求一個客戶機證書。必須啓用 SSL 客戶機認證選項。將用於驗證 的信息發送給服務器。認證使用的數字證書具備很高的安全性,且證書認證一般對用戶是透明的。系統或站點管理員會對客戶機證書進行管理。一般這些任務是由證書權威服務器軟件受權的,例如 IBM Vault Registry 產品。 (3) 組合認證方案和協議 正如前述,除非是在一個與安全無關的環境中,不然 HTTPS 一般更爲可取。對於不一樣的安全性要求能夠對方案和協議進行組合,策略以下: l 對於基本安全性要求,使用基本、摘要或 HTTP 上的定製認證。 l 對於較高安全性要求,使用基本、摘要或 HTTPS 上的定製認證。 l 對於最高安全性要求,使用 HTTPS 上的證書認證。 3.使用目錄服務 一個目錄服務是信息倉庫、存取法和相關服務的組合。信息倉庫一般是用於存儲位置信息和其它有關資源(例如用戶、打印機、文件服務器和 WebSphere應用服務器)的詳細信息的數據庫。存取法是指輕量級目錄訪問協議(LDAP)或其它可用來與目錄服務組件進行通訊的存取法。相關服務是 指目錄服務提供的用於查詢、操縱和認證數據庫中信息的設施。 對集中式安全性數據一般須要使用目錄服務。目錄服務能夠爲整個網絡提供單個管理點。使用目錄服務,能夠一次定義用於全部應用程序(包括 WebSphere應用服務器)的用戶和組,而無需爲每一個應用程序分別定義用戶和組。目錄服務對於實現安全性頗有幫助,即經過認證用戶和控制對資源的訪 問。沒有目錄服務,可能必須爲不一樣的軟件產品(例如WebSphere應用服務器、Web 服務器和操做系統)重複定義相同的用戶和組,這是由於這些軟件產品不共享安全性數據。 WebSphere應用服務器版本 2.0 支持使用輕量級目錄訪問協議(LDAP)V2 的目錄服務。這些目錄服務包括 Domino Directory 版本 4.6.x 和 Netscape Directory Server 版本 3.x。WebSphere應用服務器版本 2.02 (本地語言版本)也支持 IBM Suites(不包括 IBM Suites 版本 1.0)的 eNetwork Directory 組件。使用目錄服務的基本步驟以下: (1) 設置目錄服務,或使用一個現有的目錄服務。 (2) 使用WebSphere應用服務器的管理器界面的「目錄管理」 頁面,以標識至WebSphere應用服務 器的目錄服務,並指定基本設置。 (3) 查看管理器中的目錄服務用戶和組信息。 (4) 在WebSphere應用服務器中定義存取控制表(或已有的 ACL),以利用目錄服務用戶和組信息。 (5) 用 ACL 保護WebSphere應用服務器資源。 使用「目錄管理」 頁面指定目錄服務的步驟以下: l 查看「設置」 -> 「目錄管理」頁面。 l 在「配置」標籤中,請在「是否啓用目錄?」字段中單擊「是」 l 使用下拉列表選擇目錄類型。選擇: ¾「netscape」使用 Netscape Directory Server; ¾ 「domino4.6」使用 Domino Server; ¾ 「enetworkibmsuite」使用 IBM Suite 的 eNetwork Directory Server 組件。 l 輸入駐留目錄服務的計算機主機名。 l 輸入服務的端口號。 l 輸入將做爲目錄服務的 LDAP 搜索起始點的基本分辨名(Base DN)。例如,o=raleigh.ibm.com. l 可選功能。輸入聯編分辨名和聯編口令。這些字段空白表示WebSphere應用服務器匿名聯編目錄 服務。若是指定了聯編分辨名和口令,則請確認將目錄服務配置成使用同一分辨名和口令來認證WebSphere應用服務器,不然認證將告失敗。 當使用「目錄管理」指定目錄服務時,管理器將提供的功能有: l 動態地創建、初始化和維護與 LDAP 目錄服務相關聯的 ldapRealm。 l 使用管理器的「安全性」頁面關聯WebSphere應用服務器資源和 ldapRealm。 l 將WebSphere應用服務器存取控制表(ACL)與 ldapRealm 的資源關聯起來。 IdapRealm 是一個包含已定義在目錄服務中的用戶和組的WebSphere應用服務器安全性領域。可使用WebSphere應用服務器的管理器界面的「安全性」頁 面,以創建存取控制表和 IdapRealm 之間的關聯。 ldapRealm 對資源進行保護,而且存取控制表容許屬於該領域的用戶和組(在這種狀況下,用戶和組在目錄服務中)訪問資源。 ldapRealm 使用非 SSL LDAP V2 協議來與目錄服務進行通訊,並根據在「目錄管理」頁面中指定的設置進行聯編。當受 IdapRealm 保護的WebSphere應用服務器資源須要認證時,將根據IdapRealm 來驗證客戶機的用戶標識符和口令。該過程以下: l 客戶機向WebSphere應用服務器發出 Servlet 請求。 l WebSphere應用服務器肯定請求的資源是否受 ACL 保護。 l 所以WebSphere應用服務器將一個認證要求發送給客戶機。 l 客戶機輸入用戶標識符和口令。 l 目錄服務驗證用戶標識符和口令與保護資源的 IdapRealm 是否相符合:目錄服務發出 LDAP 查 找,以查找與指定用戶標識符相符的人。爲該用戶建立一個分辨名(DN)。 l 目錄服務使用該用戶分辨名和口令執行一個 LDAP 鏈接。 l 當目錄服務認證用戶後,WebSphere應用服務器Java 引擎將調用 Servlet 以處理與客戶機得到的 許可權一致的客戶機請求。 能夠經過訪問ldap://act:389/o=raleigh.ibm.com來測試目錄服務是否正在運行,其中:act 是運行目錄服務的機器的主機名,389 是服務的端口號,o=raleigh.ibm.com 是基本分辨名,它還表明了目錄服務中的搜索起始點。