安全性實質上就是資料保護:如何在儲存或傳輸資料時防止對資料進行未授權的存取或紐a。Application Server 具有基於 J2EE 標準的動態可延伸安全性架構。它內置的安全性功能包括密碼學、認證與授權以及公開金鑰基礎架構。Application Server 是基於 Java 安全性模型建置的,該安全性模型使用了一個沙箱,應用程式可以在沙箱中安全地執行,而不會給系統或使用者帶來潛在的危險。本節論述以下主題:
從廣泛意義上講,應用程式安全性有兩種:
在程式安全性中,開發者編寫的應用程式碼負責處理安全性事務。做為管理員,您對此機制沒有任何控制權。由於程式化安全性將安全性配置硬編碼到應用程式中而不是透過 J2EE 容器對其進行管理,因此一般不提倡使用這種程式化安全性。
在宣告性安全性中, 容器 (Application Server) 透過應用程式的部署描述元處理安全性。您可以透過直接編輯部署描述元或使用 deploytool 等工具來控制宣告性安全性。由於可以在完成應用程式開發之後變更部署描述元,因此宣告性安全性具有更大靈活性。
除了應用程式安全性以外,還有影響 Application Server 系統中所有應用程式的系統安全性。
程式安全性受應用程式開發者的控制,因此本文件不對其進行論述;宣告性安全性受應用程式開發者的控制要少一些,本文件中只偶爾涉及到宣告性安全性。本文件主要針對系統管理員,因此主要論述系統安全性。
Application Server 提供了以下用於管理安全性的工具:
管理主控台,一種基於瀏覽器的工具,用於配置整個伺服器的安全性,管理使用者、群組和範圍以及執行系統範圍內的其他安全性作業。如需有關 管理主控台 的一般介紹,請參閱管理工具。如需有關使用 管理主控台 可以執行之安全性作業的簡介,請參閱使用 管理主控台 管理安全性。
asadmin,指令行工具,可以執行 管理主控台 能夠執行的許多作業。您還可以使用 asadmin 執行使用 管理主控台 無法執行的某些作業。您可以從指令提示符號或程序檔中執行 asadmin 指令,以自動執行重複的作業。如需有關 asadmin 的一般簡介,請參閱管理工具。
deploytool,圖形化封裝和部署工具,用於編輯應用程式部署描述元,從而控制個別應用程式的安全性。由於 deploytool 主要針對應用程式開發者,因此本文件未對該工具的使用做詳細說明。如需有關使用 deploytool 的說明,請參閱此工具的線上說明以及位於以下位置的「The J2EE 1.4 Tutorial」:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html。
Java 2 Platform, Standard Edition (J2SE) 提供了兩個用於管理安全性的工具:
keytool,指令行公用程式,用於管理數位憑證和鍵對。使用 keytool 可以管理 certificate 範圍內的使用者。
policytool,圖形化公用程式,用於管理系統範圍內的 Java 安全策略。做為管理員,您很少會用到 policytool。
如需有關使用 keytool、policytool 和其他 Java 安全性工具的更多資訊,請參閱位於以下位置的「Java 2 SDK Tools and Utilities」:http://java.sun.com/j2se/1.4.2/docs/tooldocs/tools.html#security。
在 Enterprise Edition 中,還可以使用另外兩個實作網路安全服務 (NSS) 的工具來管理安全性。如需有關 NSS 的更多資訊,請至 http://www.mozilla.org/projects/security/pki/nss/。用於管理安全性的工具包括:
certutil,指令行公用程式,用於管理憑證和金鑰資料庫。
pk12util,指令行公用程式,用於以 PKCS12 格式在憑證/金鑰資料庫和檔案之間匯入和匯出金鑰及憑證。
如需有關使用 certutil、pk12util 和其他 NSS 安全性工具的更多資訊,請參閱位於以下位置的「NSS Security Tools」:http://www.mozilla.org/projects/security/pki/nss/tools。
在 Application Server 的此發行版本中,包含特定網域規格的 domain.xml 檔案最初包含純文字形式的 Sun Java System Message Queue 代理程式密碼。domain.xml 檔案中包含此密碼的元素為 jms-host 元素的 admin-password 屬性。由於在安裝期間不能變更此密碼,因此它不會對安全性產生很大的影響。
但是,您可以使用 管理主控台 增加使用者和資源,並為這些使用者和資源指定密碼。部分密碼將以純文字形式寫入 domain.xml 檔案,例如用於存取資料庫的密碼。將這些純文字形式的密碼保存在 domain.xml 檔案中可能會破壞安全性。透過執行以下程序,您可以加密 domain.xml 中的任何密碼,包括 admin-password 屬性或資料庫密碼。
在 domain.xml 檔案常駐的目錄 (依預設,此目錄為 domain-dir/config) 中,執行以下 asadmin 指令:
asadmin create-password-alias --user admin alias-name |
例如,
asadmin create-password-alias --user admin jms-password |
螢幕將顯示輸入密碼提示 (在本範例中為 admin)。請參閱 create-password-alias、list-password-aliases 和 delete-password-alias 指令的線上手冊,以取得更多資訊。
移除並替代 domain.xml 中的密碼。使用 asadmin set 指令可以完成此作業。使用 set 指令實現此目的的範例如下:
asadmin set --user admin server.jms-service.jms-host. default_JMS_host.admin-password=${ALIAS=jms-password} |
重新啟動相關網域的 Application Server。
某些檔案包含需要使用檔案系統許可權進行保護的編碼密碼。這些檔案包括:
domain-dir/master-password
此檔案包含編碼主密碼,並且應使用檔案系統許可權 600 對其進行保護。
對於使用 --passwordfile 引數並做為引數傳送給 asadmin 的任何已建立之密碼檔案,均應使用檔案系統許可權 600 對其進行保護。
主密碼 (MP) 是全局性的共用密碼。它從不用於認證,也從不會在網路上傳輸。此密碼是全局安全性的要塞點;使用者可以選擇在需要時手動輸入此密碼,也可以將其隱藏在檔案中。它是系統中最敏感的資料。使用者可以透過移除此檔案強制系統提示輸入 MP。變更主密碼後,系統會將其重新儲存到主密碼金鑰存放區中。
停止網域的 Application Server。使用 asadmin change-master-password 指令會提示輸入舊密碼和新密碼,然後重新加密所有附屬項目。例如,
asadmin change-master-password> Please enter the master password> Please enter the new master password> Please enter the the new master password again> |
重新啟動 Application Server。
此時,不能啟動正在執行的伺服器實例並且不能重新啟動正在執行的伺服器實例,除非已變更這些實例所對映的節點代理程式上的 SMP。如果在變更伺服器實例的 SMP 之前重新啟動了該伺服器實例,它將無法啟動。
一次停止一個節點代理程式及其相關伺服器。再次執行 asadmin change-master-password 指令,然後重新啟動節點代理程式及其相關伺服器。
繼續對下一個節點代理程式執行這些步驟,直到對所有節點代理程式均已執行這些步驟。這樣可以完成輪替變更。
管理密碼安全性中論述了如何加密管理員密碼。強烈建議您加密管理員密碼。若要在加密管理員密碼之前變更管理員密碼,請使用 asadmin set 指令。使用 set 指令實現此目的的範例如下:
asadmin set --user admin server.jms-service.jms-host.default_JMS_host.admin-password=new_pwd |
還可以使用 管理主控台 變更管理員密碼,如以下程序所示。
在 管理主控台 樹形元件中,展開 [配置] 節點。
選取要配置的實例:
展開 [安全性] 節點。
展開 [範圍] 節點。
選取 [admin-realm] 節點。
在 [編輯範圍] 頁面中,按一下 [管理使用者] 按鈕。
選取名為 admin 的使用者。
輸入新密碼並確認密碼。
按一下 [儲存] 以儲存新密碼,或者按一下 [關閉] 以關閉頁面而不儲存新密碼。
將為以下角色指定安全性職責:
應用程式開發者負責:
為應用程式元件指定角色和基於角色的存取限制。
定義應用程式的認證方法並指定受保護的應用程式部分。
應用程式部署者可以使用 deploytool 等工具編輯應用程式部署描述元。「The J2EE 1.4 Tutorial」中的「Security」一章詳細論述了這些安全性作業,您可以從以下 URL 中檢視該指導文件:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html。
應用程式部署人員負責:
將使用者或群組 (或兩者) 對映至安全性角色。
存取元件方法所需的權限以滿足特定部署方案的要求。
應用程式部署者可以使用 deploytool 等工具編輯應用程式部署描述元。「The J2EE 1.4 Tutorial」中的「Security」一章詳細論述了這些安全性作業,您可以從以下 URL 中檢視該指導文件:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html。
系統管理員負責:
配置安全性範圍。
管理使用者帳戶和群組。
管理稽核記錄。
管理伺服器憑證,並配置伺服器對安全套接字層 (SSL) 的使用。
處理系統範圍內的其他各類安全性功能,例如連接器連線池的安全性對映、其他 JACC 提供者等等。
系統管理員使用 管理主控台 管理伺服器安全性設定,並使用 certutil 管理憑證。本文件主要適用於系統管理員。