啟用 Java 安全管理程式

依預設,Java™ 應用程式不會對 Java API 的要求活動施加任何安全限制。若要使用 Java 安全性來保護 Java 應用程式,免於執行可能不安全的動作,您可以在執行該應用程式的 JVM 中啟用安全管理程式。

關於這項作業

安全管理程式會施行安全原則,原則是指派給程式碼來源的一組許可權(系統存取權)。Java 平台提供預設的原則檔。但若要在 Java 安全性作用中時,讓 Java 應用程式可以在 CICS® 中順利執行,您必須指定其他原則檔,提供 CICS 執行該應用程式所需要的許可權。

您必須針對已啟用安全管理程式的每一種 JVM,指定這個額外的原則檔。CICS 提供一些範例,您可以用來建立您的專屬原則。

附註: 在 Liberty JVM 伺服器中不支援啟用 Java 安全管理程式。
  • OSGi 安全代理程式範例在您的專案中建立稱為 com.ibm.cics.server.examples.security 的 OSGi 中介組合,該專案包含安全設定檔。此設定檔套用於安裝所在架構中的所有 OSGi 組合。
  • example.permissions 檔案包含在 JVM 伺服器中執行應用程式的特定許可權,包括檢查以確定應用程式沒有使用 System.exit() 方法。
  • CICS 必須具備 zFS 中部署 OSGi 軟體組之目錄的讀取權和執行權。

對於在 JVM 伺服器的 OSGi 架構中執行的應用程式:

程序

  1. CICS Explorer® SDK 中建立外掛程式專案,然後選取提供的 OSGi 安全代理程式範例。
  2. 在專案中,選取 example.permissions 檔案,以編輯安全原則的許可權。
    1. 驗證已正確指定 CICS zFS 及 DB2® 安裝目錄。
    2. 依需求新增其他許可權。
  3. 將 OSGi 組合部署至 zFS 中的合適目錄,例如:/u/bundles
  4. 編輯 JVM 伺服器的 JVM 設定檔,將 OSGi 組合新增至 OSGI_BUNDLES 選項,然後再新增任何其他組合:
    • OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
  5. 將下列 Java 內容新增至 JVM 設定檔,以啟用安全。
    • -Djava.security.policy=all.policy
  6. 將下列 Java 環境變數新增至 JVM 設定檔,以啟用 OSGi 架構中的安全:
    • org.osgi.framework.security=osgi
  7. 為了讓 OSGi 架構開始使用 Java 2 安全,請新增下列原則:
    • grant { permission java.security.AllPermission; };
  8. 儲存變更,並啟用 JVMSERVER 資源,以在 JVM 伺服器中安裝中介組合。
  9. 選擇性的: 啟動 Java 2 安全。
    1. 若要啟動 Java 2 安全原則機制,請將它新增至適當的 JVM 設定檔。您也必須編輯 Java 2 安全原則來授與適當的許可權。
    2. 若要從 Java 2 安全原則機制為作用中的 Java 應用程式中使用 JDBC 或 SQLJ,請使用 IBM® Data Server Driver for JDBC and SQLJ。
    3. 若要啟動 Java 2 安全原則機制,請編輯 JVM 設定檔。 說明如何設定 Java 2 安全原則。
    4. 編輯 Java 2 安全原則,新增範例 1 顯示的那幾行以授與許可權給 JDBC 驅動程式。 請指定所有 DB2 檔案庫所在的目錄,來取代 db2xxx。許可權會套用至這一層之下的所有目錄和檔案。如此即可讓您使用 JDBC 和 SQLJ。
    5. 編輯 Java 2 安全原則,新增範例 2 顯示的那幾行來授與讀取權。 如果您未新增讀取權,執行 Java 程式會產生 AccessControlException 和無法預期的結果。您可以搭配 Java 2 安全原則來使用 JDBC 和 SQLJ。
    範例 1:
    grant codeBase "file:/usr/lpp/db2xxx/-" {
      permission java.security.AllPermission;
    };   
    範例 2:
    grant {
    
    // allows anyone to read properties
    permission java.util.PropertyPermission "*", "read";
    
    };

結果

呼叫 Java 應用程式時,JVM 先判定類別的程式碼來源,並查詢安全原則,然後才對該類別授與適當的許可權。