Java 權限參考資料

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

Java 權限須知 政策規定

如果您要開發 Java 呼叫政策,必須知道這些政策用於哪些權限政策 對 Edge JVM 的影響,以及它們對程式碼的影響。例如,您的自訂 Java 程式碼 並沒有無限存取檔案系統的權限。不過,在檔案系統存取權的情況下 可讀取特定檔案,例如政策資源檔案但大多數其他類型的檔案系統存取權 已封鎖。本主題列出所有 JDK 權限類型及其各自的目標或動作。 針對每項目標或動作,我們會指定權限政策和任何您需要的例外狀況

如要進一步瞭解 JDK 權限類型,以及各項權限允許的項目,請參閱 Java Development Kit (JDK)

啟用安全性限制

在 Edge for Private Cloud 中,安全性限制預設為停用。也就是說 您的自訂 Java 呼叫程式碼即可存取所有資源,不受限制。啟用方式 Edge for Private Cloud 安裝作業的安全性限制步驟如下:

  1. 在第一個訊息處理器節點中開啟檔案 $APIGEE_ROOT/customer/application/message-processor.properties在編輯器中。 如果檔案不存在,請建立該檔案。
  2. 在檔案中新增下列程式碼:
    conf_security-policy_enable.security.manager=true
  3. Save the file and ensure the file is owned by the apigee user:
    chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
  4. 重新啟動訊息處理器:
    apigee-service message-processor restart
  5. 對其餘所有的訊息處理器重複上述步驟。
權限類型 指定目標或動作名稱 已授予權限
java.awt.AWTPermission
accessClipboard
accessEventQueue
accessSystemTray
createRobot
fullScreenExclusive
listenToAllAWTEvents
readDisplayPixels
replaceKeyboardFocusManager
setAppletStub
setWindowsAlwaysOnTop
showWindowWithoutWarningBanner
toolkitModality
watchMousePointer
java.io.FilePermission

java.io.FilePermission 代表存取檔案或目錄。檔案權限 包含 pathname 以及與該路徑名稱有效的一組動作。
read 是,但須遵守相關限制。請參閱「限制」一節。
write
execute
刪除
readLink
java.io.SerializablePermission

SerializablePermission 包含名稱 (也稱為「目標名稱」),但不包含 動作清單;您必須具有指定權限,或是您不具備上述權限。
enableSubclassImplementation
enableSubstitution
java.lang.management.ManagementPermission

Java 平台管理介面中定義的方法
控制
monitor
java.lang.reflect.ReflectPermission

適用於反思作業。ReflectPermission 是一項具名權限,並未 動作
suppressAccessChecks
newProxyInPackage.{package name}
java.lang.RuntimePermission

包含名稱 (也稱為「目標名稱」),但沒有動作清單;您有 指定的權限 (否則就不是您)
createClassLoader
getClassLoader
setContextClassLoader
enableContextClassLoaderOverride
closeClassLoader
setSecurityManager
createSecurityManager
getenv.{variable name}
exitVM.{exit status}
shutdownHooks
setFactory
setIO
modifyThread
stopThread
modifyThreadGroup
getProtectionDomain
getFileSystemAttributes
readFileDescriptor
writeFileDescriptor
loadLibrary.{library name}
accessClassInPackage。{套件名稱}
defineClassInPackage.{套件名稱}
accessDeclaredMembers
queuePrintJob
getStackTrace
setDefaultUncaughtExceptionHandler
偏好設定
usePolicy
java.net.NetPermission

NetPermission 包含名稱,但沒有動作清單;您具有指定權限 否則就沒有辦法
setDefaultAuthenticator
requestPasswordAuthentication
specifyStreamHandler
setProxySelector
getProxySelector
setCookieHandler
getCookieHandler
setResponseCache
getResponseCache
getNetworkInformation
java.net.SocketPermission

代表透過通訊端存取網路。SocketPermission 是由主機 規格和一組「動作」並指定連線至該主機的方式
主機 = (主機名稱 | IP 位址)[:通訊埠範圍]
Portrange = portnumber |-通訊埠 |通訊埠編號 [通訊埠編號]

你可以透過以下方式連線至主機:

接受
連線
聆聽
解決

「聆聽」只有在與「localhost」搭配使用時,才有意義。「解決」(已解決 主機/IP 名稱服務查詢) 執行 。
解析
連線

是,但須遵守相關限制。請參閱「限制」一節。

Apigee 會限制存取 sitelocal、anylocal、回送和連結本機位址,

聆聽,
接受
java.net.URLPermission

代表可存取指定網址定義的資源或一組資源的權限。 ,並產生一組可由使用者設定的要求方法和要求標頭。清單的名稱 權限即為網址字串。動作字串是要求方法的串連 以及標題方法和標頭名稱的範圍不受此類別限制。
LinkPermission

連結建立作業的權限類別。
困難
符號化
java.security.SecurityPermission

SecurityPermission 包含名稱 (也稱為「目標名稱」),但未包含動作 清單;您必須具有指定權限,或是您不具備上述權限。
目標名稱是安全性設定參數的名稱 (詳情請見下文)。目前 SecurityPermission 物件用於保護政策、安全性、提供者 Signer 和 Identity 物件
createAccessControlContext
getDomainCombiner
getPolicy
setPolicy
createPolicy.{policy type}
getProperty.{key}
setProperty.{key}
insertProvider
removeProvider.{provider name}
clearProviderProperties.{provider name}
putProviderProperty.{provider name}
removeProviderProperty.{provider name}
SQLPermission setLog
callAbort
setSyncFactory
setNetworkTimeout
deregisterDriver
java.util.logging.LoggingPermission

SecurityManager 會在編寫程式碼時檢查 java.util.logging.LoggingPermission 物件 使用 SecurityManager 執行時,呼叫任一記錄控制方法 (例如 Logger.setLevel)。
控制
java.util.PropertyPermission
名稱是屬性的名稱 (「java.home」、「os.name」等)。命名慣例 會遵循階層的屬性命名慣例。此外,「 開頭或結尾的「.」,或單獨指出萬用字元是否相符。例如: "java.*"或「*」為有效,「*java」或「a*b」為 值無效。

要授予的動作會用字串,該字串包含 零或多個逗號分隔關鍵字。
read
write
javax.xml.ws.WebServicePermission
publishEndpoint
javax.xml.bind.JAXBPermission setDatatypeConverter
javax.sound.sampled.AudioPermission

存取音訊系統資源的權限。
播放
record
javax.security.auth.PrivateCredentialPermission

保護特定主體的私人憑證存取。主題是 一組代表的此權限的目標名稱會指定 憑證類別名稱和一組主體。這項權限的唯一有效值 動作為「讀取」
認證類別{PrincipalClass "PrincipalName"}*
javax.security.auth.kerberos.ServicePermission

保護 Kerberos 服務和存取這些服務所需的憑證。
執行
接受
javax.security.auth.kerberos.DelegationPermission

用於限制 Kerberos 委派模式ie、可預測與 Proxy 問題。

這項權限的目標名稱會指定一組 kerberos 服務主體。 第一個是受信任使用票證授權的從屬服務主體 票券 (TGT)。第二個服務主體會將目標服務指派從屬 服務主體會與啟動的 KerberosPrincipal 互動
執行
接受
javax.security.auth.AuthPermission

AuthPermission 物件目前用於保護主體存取權, SubjectDomainCombiner、LoginContext 和 Configuration 物件。
doAs
doAsPrivileged
getSubject
getSubjectFromDomainCombiner
setReadOnly
modifyPrincipals
modifyPublicCredentials
modifyPrivateCredentials
refreshCredential
destroyCredential
createLoginContext.{name}
getLoginConfiguration
setLoginConfiguration
createLoginConfiguration.{configuration type}
refreshLoginConfiguration
javax.net.ssl.SSLPermission
setHostnameVerifier
getSSLSessionContext
setDefaultSSLContext
javax.management.MBeanPermission

控管 MBeanServer 作業的存取權。如果已設定安全管理員 使用 System.setSecurityManager(java.lang.SecurityManager) 處理大部分的作業, MBeanServer 要求呼叫端的權限暗示適用於 作業。

動作 className#member[objectName]

如果您有 MBeanPermission 檔案,則表示只有在全部四個項目皆允許時才能進行作業 比對。
addNotificationListener
getAttribute
getClassLoader
getClassLoaderFor
getClassLoaderRepository
getDomains
getMBeanInfo
getObjectInstance
執行個體化
叫用
isInstanceOf
queryMBeans
queryNames
registerMBean
removeNotificationListener
setAttribute
unregisterMBean
javax.management.MBeanServerPermission
createMBeanServer
findMBeanServer
newMBeanServer
releaseMBeanServer
javax.management.MBeanTrustPermission

這項權限代表「信任」程式碼集。
register
*
javax.management.remote.SubjectDelegationPermission