保護開發應用程式的系統資源和 API (Java 2 安全)

Java™ 2 安全是一種程式設計模型,非常普遍,對應用程式開發有重大影響。

開始之前

Java 2 安全與 Java Platform, Enterprise Edition (Java EE) 角色型安全正交; 您可以獨立於管理安全來停用或啟用它。

不過,除了 Java EE 角色型授權之外,它還提供額外層次的存取控制保護。 它特別針對系統資源及應用程式設計介面 (API) 的保護。 管理者必須考量停用 Java 2 安全的風險所帶來的好處。

提供下列建議,以協助在測試或正式作業環境中啟用 Java 2 安全:
  1. 請確定應用程式是使用 Java 2 安全程式設計模型來開發。 開發人員必須知道應用程式中使用的 API 是否受到 Java 2 安全保護。 請務必在原則檔中宣告所使用 API 的必要許可權, was.policy 或在啟用 Java 2 安全時應用程式無法執行。 開發人員可以參照受 Java 2 安全保護的 Development Kit API 網站。 請參閱 Security: Resources for Learning 主題的 Programming Model and decisions 小節,以造訪此網站。
  2. 請確定舊版中已移轉的應用程式已獲得必要的許可權。 因為舊版 WebSphere® Application Server 不支援或局部支援 Java 2 安全,所以在第 5 版之前開發的應用程式很可能未使用 Java 2 安全程式設計模型。 無法輕鬆找出應用程式的所有必要許可權。 下列活動可讓您執行,以決定應用程式所需的額外許可權:
    • 程式碼複查和程式碼檢驗
    • 應用程式文件檢閱
    • 在前置正式作業環境中啟用 Java 2 安全的已移轉企業應用程式的沙盤推演測試。 在 WebSphere Java 2 安全管理程式中啟用追蹤,以協助判斷應用程式原則檔中遺漏的許可權。 追蹤規格為:com.ibm.ws.security.core.SecurityManager=all=enabled.
    • 請使用 com.ibm.websphere.java2secman.norethrow 系統內容來協助除錯。 請勿在正式作業環境中使用此內容。

[AIX Solaris HP-UX Linux Windows]應用程式的預設許可權集是 J2EE 1.3 規格中所定義的建議許可權集。 預設值在 app_server_root 中宣告。/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy具有在 Development Kit 中定義之許可權的原則檔 (JAVA_HOME/jre/lib/security/java.policy) 將許可權授與每個人的原則檔案。 不過,應用程式會被拒絕在中宣告的許可權profiles/profile_name/config/cells/cell_name/filter.policy檔案。 在許可權檢查期間,會針對應用程式過濾 filter.policy 檔中宣告的許可權。

was.policy 檔中定義應用程式的必要許可權,並將 was.policy 檔內嵌在應用程式企業保存檔 (EAR) 中作為 YOURAPP.ear/META-INF/was.policy

下列步驟說明如何在 WebSphere Application Server Network Deployment 的 Cell 層次及 WebSphere Application Server Express® 的伺服器層次上施行 Java 2 安全。

程序

  1. 按一下 安全> 廣域安全
    即會顯示「廣域安全」畫面。
  2. 選取 使用 Java 2 安全來限制應用程式存取本端資源 選項。
  3. 按一下 確定套用
  4. 按一下 儲存 以儲存變更。
  5. 重新啟動伺服器,讓變更生效。

結果

伺服器已啟用並施行 Java 2 安全。 當呼叫 Java 2 安全保護的 API 時,會選取 Java 2 安全許可權。
何時使用 Java 2 安全
  1. 在系統資源上啟用保護,例如在開啟或接聽 Socket 連線時,讀取或寫入作業系統檔案系統,讀取或寫入 Java 虛擬機器 (JVM) 系統內容。
  2. 防止應用程式碼呼叫破壞性 API ,例如,呼叫 System.exit 方法會關閉應用程式伺服器。
  3. 防止應用程式碼取得特許資訊 (密碼) 或取得額外專用權 (取得伺服器認證)。

下一步

Java 2 安全管理程式已加強,當拒絕應用程式存取資源時,會傾出授與呼叫堆疊上所有類別的 Java 2 安全許可權。 java.security.AccessControlException 異常狀況。 不過,依預設會停用此追蹤功能。 您可以使用下列指令來指定伺服器追蹤服務,以啟用此功能:com.ibm.ws.security.core.SecurityManager=all=enabled追蹤規格。 當建立異常狀況時,追蹤傾出會提供提示來判斷應用程式是否遺漏許可權,或所使用的產品執行時期程式碼或協力廠商程式庫是否未適當標示為privileged存取 Java 2 安全保護資源時。

如需詳細資料,請參閱 Security Problem Determination Guide