熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

安全技術 Java與安全性,第1部分一

2013-11-23 19:40:57  來源: Java高級技術 

  WebLogic提供一套功能全面的安全服務這些服務可以從各個方面保護域及其部署這些安全服務影響到域的所有方面從Java Security Manager提供的最底層安全性到連接級別的安全性再到應用級別的安全性(可以保護所管理和部署的對象比如EJBweb服務和JDBC池)最後到域級別的安全性(可以建立兩個域之間的信任)這些安全服務的目標是個截然不同的用戶群可以使用服務來保護其應用程序的應用程序開發人員需要為系統和部署配置安全性的管理員以及可以修改和擴展WebLogic所提供的功能的安全性供應商
  
  讓我們從JVM層開始在這一層Java Security Manager使用一個安全性策略文件來限制對特定的運行時操作的訪問這確保了運行在JVM(包括WebLogic Server本身)上的程序僅可以許可方式訪問受保護的資源例如可以配置Java Security Manager以便讓所有線程都擁有僅對於文件系統中特定目錄的寫權限通過允許為資源適配器和EJB定義另外的安全策略WebLogic增強了Security Manager從而確保了這些組件能夠只訪問已定義的資源還有一些其他的全局高級安全性權限可以應用於這些資源和應用程序代碼
  
  WebLogic可以從客戶端過濾連接請求連接過濾器定義了一些規則規定了如何確定服務器是接受還是拒絕客戶端連接這些規則基於幾個參數這些參數通常包括客戶端的IP地址和端口用於建立連接的協議以及服務器的監聽地址和端口可以為一台服務器指定多個連接過濾器甚至可以編寫自己的連接過濾器類來實現定制的過濾邏輯例如通過使用連接過濾器可以很容易地確保服務器只接受來自內部網的T連接SSL安全性是另一種可在套接字層上使用的機制我們在章中已經講述過這種機制SSL可以通過支持數據完整性機密性和身份驗證保護給定的網絡通信
  
  WebLogic部分地支持標准的JAASJAAS框架是對JSE v的一種標准擴展現在已成為JSE v平台的一部分身份驗證使服務器可以驗證運行Java代碼的用戶的身份不論它是appletservletEJB還是應用程序授權則使服務器能夠基於用戶的身份安全權限和策略實施訪問控制WebLogic允許Java客戶端使用JAAS身份驗證而且邏輯模塊也是使用JAAS實現的如果需要使用JAAS授權就必須在WebLogic的基礎架構上編寫自己的模式
  
  WebLogic的安全性基礎架構建立在一組模塊化的可擴展的安全服務提供程序接口(security service provider interfaces SSPI)之上這種架構允許插入新的安全提供程序替換舊的並可以與用戶自己的提供程序一起運行WebLogic的默認提供程序WebLogic發行文件配備了一組安全提供程序為SSPI提供默認實現WebLogic的安全提供程序為JEE應用程序實現了底層安全性框架也就是說標准的JEE定義的安全機制是通過SSPI實現(和擴展)的通常WebLogic的安全提供程序會改進現有的安全約束例如標准的ejbjarxml部署描述符允許限定只有具有特定角色的已通過身份驗證的用戶才能訪問某個EJB方法WebLogic允許改進這種約束確保用戶只在一天中的某些時段具有訪問權事實上SSPI是一種開放的架構可以很容易地插入來自某家安全供應商的第三方安全提供程序另外還可以通過實現自己的安全提供程序來構建新的安全服務
  
  WebLogic默認的安全提供程序功能相當全security realm(安全域)就是一個用戶角色安全策略的邏輯分組以及一整套安全提供程序為服務器資源指定的安全策略可用於確定授權誰訪問資源WebLogic使用戶可以保護所有的資源單個EJB方法web應用程序web頁面的集合連接池數據源或者任何受管理的對象甚至可以保護JNDI樹中的分支從而防止未得到授權的客戶端在JNDI樹中查找對象所有這些安全數據都保存在一台嵌入式LDAP服務器中還可以配置WebLogic來使用外部的LDAP庫比如Open LDAPActive Directory或Novell NDS這些外部庫只能用於身份驗證而不能用於授權
  
  最後WebLogic允許在兩個域之間建立一種信任機制這確保了一個域中已通過身份驗證的用戶可以訪問另一個域中的資源
  
  本章分析了所有這些安全機制盡管它們彼此大相迥異但是它們互相補充得非常好我們從考察Java Security Manager和WebLogic如何過濾連接請求開始然後分析WebLogic的身份驗證和授權框架並了解它如何支持標准的JEE安全服務我們還切換使用了安全域中可用的各種安全提供程序以及它們的默認實現最後我們將考察如何使用JAAS進行身份驗證並舉一個Authentication 和Identity Assertion提供程序的例子
  
  Java Security Manager
  
  在JVM層上WebLogic可以使用標准的Java Security Manager來防止不受信任的代碼執行有害的動作可以使用安全策略文件來配置JVM以便讓運行在JVM上的所有線程都能夠受限制地訪問敏感的運行時操作安全策略文件封裝了一組權限這些權限將授予給當前的JVM實例中加載的所有類(或者取消)可以定義一整套安全權限來控制對特定資源的訪問——例如對於文件系統上某個文件夾的寫(write)訪問權限對於特定主機和特定范圍的端口的連接(connect)訪問權限對於環境變量的讀(read)訪問權限對於當前類加載器的獲取(get)訪問權限等等要獲得更多關於Security Manager和安全策略文件的信息請參考JDK說明文檔
  
  Java的Security Manager確保運行在WebLogic中的任意代碼都僅可以許可的方式訪問這些重要資源這種低級的訪問控制對於第三方不受信任代碼可能很有用Java Security Manager還可以與JEE部署設置交互例如可以使用標准的raxml部署描述符來定義應用於資源適配器的安全權限WebLogic也為web應用程序和EJB提供類似的訪問控制
  
  注意WebLogic需要有一個可用的策略文件才可以運行startWebLogic腳本用於加載默認位於WL_HOME/server/lib/weblogic Policy下的策略文件
  
  配置Security Manager
  
  為了使用Java Security Manager需要在啟動WebLogic Server時從命令行提供兩個選項
  
  必須使用–Djavasecuritymanager選項以確保安裝了默認的安全管理器而且JVM通過了策略檢查
  
  必須使用–Djavasecuritypolicy選項以指定安全策略文件的位置
  
  默認情況下JVM使用定義在javasecurity和javapolicy文件(位於JAVA_HOME/jre/lib/security文件夾中)中的安全策略下面是使用定制的安全策略文件啟動WebLogic Server的語法
  
  java –Djavasecuritymanager –Djavasecuritypolicy==c:oreillypolicy
  
   weblogicServer
  
  WebLogic創建的默認啟動腳本引用了位於WL_HOME/server/lib/weblogicpolicy下的示例安全策略文件注意指定javasecuritypolicy參數時我們使用了==(雙等號)這使得Security Manager使用c:oreillypolicy作為它惟一的策略源如果我們只使用一個等號該策略文件就會與JDK安裝所提供的默認安全策略文件一起使用
  
  通常JVM將使用安全策略文件對運行在WebLogic中的任意代碼實施訪問控制這條規則惟一的例外是在WebLogic Server啟動時當服務器啟動時WebLogic部分地禁用了Java Security Manager並使用一個禁用checkRead()方法的變體來替換它雖然這種方法改進了啟動順序的性能但是它也會降低JVM在啟動期間的安全性另外它意味著WebLogic的啟動類將使用這個修改過的安全管理器運行需要確保這些類不會導致破壞安全性
  
  注因為策略文件決定了運行在WebLogic的JVM中的所有類的訪問權限所以建議只有管理員才能讀寫安全策略文件不應該允許其他用戶訪問策略文件
  
  全局安全策略
  
  WebLogic允許為EJB資源適配器和weblogicpolicy文件中的web應用程序定義安全策略列出了為這些組件類型定義默認權限所用的代碼基址
  
  表 應用於JEE組件的訪問權限的默認代碼基址
  

  可以使用這些代碼基礎對特定的JEE組件類型授予特殊的權限注意在這些代碼基址下定義的任何安全策略都可以應用於所有的EJB資源適配器和部署到特定的服務器實例的web應用程序
  
  特定於應用程序的安全策略
  
  還可以定義特定於某個EJB組件或資源適配器的安全策略從而確保只以特定的組件為目標為此必須修改它們的部署描述符而不是策略文件本身資源適配器支持這種作為JEE標准一部分的機制只需修改標准的raxml描述符文件對於EJB需要修改weblogicejbjarxml描述符文件兩種情況中都是securitypermission元素允許用戶定義另外的安全策略
  
  讓我們看一看如何為EJB指定權限weblogicejbjarxml描述符中的securitypermission元素指定了應用於打包在EJB JAR中的所有EJB的安全權限下面的例子授予服務器文件系統中的一個臨時目錄對EJB的讀和寫的訪問權限
  
  <weblogicenterprisebean>
  <! webLogic enterprise bean statements go here >
  </weblogicenterprisebean>
  <securityroleassignment>
  <! the optional security role assignments go here >
  </securityroleassignment>
  <securitypermission>
  <description>
  grant permission to special folder
  </description>
  <securitypermissionspec>
  grant {
  permission javaioFilePermission
  f:
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27282.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.