移轉 Java 2 安全原則
如需移轉 Java™ 2 安全原則的相關指引,請使用本主題。
關於這項作業
舊版 WebSphere® Application Server
WebSphere Application Server 在伺服器執行時期使用 Java 2 安全管理程式,以防止企業應用程式呼叫 System.exit 和 System.setSecurityManager 方法。 如果企業應用程式呼叫這兩個 Java 應用程式設計介面 (API) ,則會產生不想要的結果。 例如, System.exit API 會導致 Java 虛擬機器 (應用程式伺服器程序) 提早結束,這對應用程式伺服器來說不是有益的作業。
如果要適當支援 Java 2 安全,所有伺服器執行時期都必須標示為privileged(在正確位置插入 doPrivileged API 呼叫) ,並識別預設許可權集或原則。 應用程式碼不是特許程式碼,且受限於原則檔中定義的許可權。 doPrivileged 檢測是支援 Java 2 安全的重要且必要。 如果沒有它,應用程式碼必須被授與伺服器執行時期所需的許可權。 此狀況是由於 Java 2 安全用來施行許可權檢查的設計和演算法所造成。 請參閱 Java 2 安全檢查許可權演算法。
- java.lang.RuntimePermission(exitVM)
- java.lang.RuntimePermission(setSecurityManager)
不論 Java 2 安全原則中的內容為何,都會拒絕應用程式碼存取這些許可權。 不過,伺服器執行時期會獲授與這些許可權。 不會施行所有其他許可權檢查。
- java.net.SocketPermission
- java.net.NetPermission
不過,並非所有產品伺服器執行時期都適當標示為特許。 您必須授與應用程式碼所有先前列出的其他許可權,否則企業應用程式可能無法執行。 企業應用程式的這個 Java 2 安全原則不拘。
變更內容
WebSphere Application Server完全支援「Java 2 安全」,這表示已施行所有許可權。 企業應用程式的預設 Java 2 安全原則是 Java Platform, Enterprise Edition (Java EE) 1.4 規格所定義的建議許可權集。 請參閱profile_root/config/cells/cell_name/nodes/node_name/app.policy授權給企業應用程式之預設 Java 2 安全原則的檔案。 與舊版相比,此原則更嚴格。
所有原則都是宣告式。 產品安全管理程式允許使用原則檔中所宣告的所有原則。 此規則有一個例外: 企業應用程式被拒絕存取在中宣告的許可權profile_root/config/cells/cell_name/filter.policy檔案。
在應用程式碼中,請勿使用 setSecurityManager 許可權來設定安全管理程式。 當應用程式使用 setSecurityManager 許可權時,與 WebSphere Application Server內的內部安全管理程式發生衝突。 如果您必須針對 RMI 目的在應用程式中設定安全管理程式,也必須在 WebSphere Application Server 管理主控台內的「廣域安全」頁面上啟用 使用 Java 2 安全來限制應用程式存取本端資源 選項。 WebSphere Application Server 接著會登錄安全管理程式。 應用程式碼可以使用 System.getSecurityManager() 應用程式設計介面 (API) 來驗證此安全管理程式是否已登錄。
移轉系統內容
- java.security.policy. 原則檔的絕對路徑 (需要採取動作)。 這個系統內容同時包含系統許可權 (授與 Java 虛擬機器 (JVM) 和產品伺服器執行時期的許可權) 和企業應用程式許可權。 將企業應用程式的 Java 2 安全原則移轉至 8.5。 對於 Java 2 安全原則移轉,請參閱移轉 Java 2 安全原則的步驟。
- enableJava2Security. 用來啟用 Java 2 安全強制執行 (不需要任何動作)。 這個系統內容已淘汰; WebSphere 配置應用程式設計介面 (API) 中的旗標用來控制是否啟用 Java 2 安全。 請透過管理主控台來啟用這個選項。
- was.home. 展開至 WebSphere Application Server 的安裝目錄 (可能需要採取動作)。 此系統內容已淘汰; 已由 ${user.install.root} 和 ${was.install.root} 內容取代。 如果目錄包含實例特定的資料,則會使用 ${user.install.root} ; 否則會使用 ${was.install.root} 。 針對 WebSphere Application Server 或 WebSphere Application Server Network Deployment 環境,可交換使用這些內容。 請參閱移轉 Java 2 安全原則的步驟。
移轉 Java 2 安全原則
由於同一原則檔中混合了系統許可權及應用程式許可權,因此無法輕鬆將 Java 原則檔自動移轉至 8.5 。 手動將企業應用程式的 Java 2 安全原則複製到was.policy或app.policy檔案。 不過,將 Java 2 安全原則移轉至was.policy因為使用符號或相對程式碼庫,而不是絕對程式碼庫,所以最好使用檔案。 這個程序有許多優點。 授與在中定義的許可權was.policy僅限特定企業應用程式,而在中的許可權app.policy檔案套用至在節點上執行的所有企業應用程式app.policy檔案屬於。
如需原則管理的詳細資料,請參閱 Java 2 安全原則檔 主題。
下列範例說明從舊版移轉 Java 2 安全原則。 內容包括的 Java 2 安全原則檔app1.ear企業應用程式和系統許可權,它們是授與 Java 虛擬機器 (JVM) 和產品伺服器執行時期的許可權。
Java 2 安全原則檔的預設位置為profile_root/properties/java.policy. 為了明確起見,省略預設許可權:
Java 2 安全原則檔的預設位置為profile_root/properties/java.policy. 為了明確起見,省略預設許可權:
// For product Samples
grant codeBase "file:${app_server_root}/installedApps/app1.ear/-" {
permission java.security.SecurityPermission "printIdentity";
permission java.io.FilePermission "${app_server_root}${/}temp${/}somefile.txt",
"read";
};為了清楚說明,在此範例中,所有許可權都會移轉為應用程式層次許可權。 不過,您可以在元件層次 (Web、Enterprise Bean、連接器或公用程式 Java 保存檔 (JAR) 元件層次) 授與許可權,也可以授與許可權給特定元件。