Java 權限參考資料

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

Java 權限政策注意事項

如果您要開發 JavaCallout 政策,必須瞭解 Apigee JVM 中生效的權限政策,以及這些政策對程式碼的影響。舉例來說,您的自訂 Java 程式碼無法無限制存取檔案系統。不過,如果是檔案系統存取權,您可以讀取特定檔案,例如政策資源檔案。但大多數其他檔案系統存取權都會遭到封鎖。本主題列出所有 JDK 權限類型,以及各自的目標或動作。針對每個目標或動作,我們會指定權限政策和您需要瞭解的任何例外狀況。

如要進一步瞭解 JDK 權限類型和各項權限允許執行的操作,請參閱「Java 開發套件 (JDK) 中的權限」。

權限類型 目標或動作名稱 已授予權限
java.awt.AWTPermission
accessClipboard
accessEventQueue
accessSystemTray
createRobot
fullScreenExclusive
listenToAllAWTEvents
readDisplayPixels
replaceKeyboardFocusManager
setAppletStub
setWindowsAlwaysOnTop
showWindowWithoutWarningBanner
toolkitModality
watchMousePointer
java.io.FilePermission

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

SerializablePermission 包含名稱 (也稱為「目標名稱」),但不包含動作清單;您要麼擁有具名權限,要麼沒有。
enableSubclassImplementation
enableSubstitution
java.lang.management.ManagementPermission

Java 平台管理介面中定義的方法
控管
監控
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。{package name}
defineClassInPackage。{package name}
accessDeclaredMembers NO
queuePrintJob
getStackTrace
setDefaultUncaughtExceptionHandler
偏好設定
usePolicy
java.net.NetPermission

NetPermission 包含名稱,但不含動作清單;您要麼擁有具名權限, 要麼沒有。
setDefaultAuthenticator
requestPasswordAuthentication
specifyStreamHandler
setProxySelector
getProxySelector
setCookieHandler
getCookieHandler
setResponseCache
getResponseCache
getNetworkInformation
java.net.SocketPermission

代表透過通訊端存取網路。SocketPermission 包含主機規格和一組「動作」,用於指定連線至該主機的方式。
host = (hostname | IPaddress)[:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]

連線至主機的方式有:

accept
connect
listen
resolve

「listen」動作僅適用於「localhost」。如果存在任何其他動作,系統會隱含「解析」動作 (解析主機/IP 名稱服務查詢)。
resolve
連結

可以,但須遵守相關限制。請參閱「限制」。

Apigee 會限制存取 sitelocal、anylocal、迴路和 linklocal 位址,以及 RFC1918 中定義的私人 IPv4 範圍。

聆聽、
接受
java.net.URLPermission

代表存取資源或一組資源的權限 (由指定網址定義),以及一組使用者可設定的要求方法和要求標頭。權限名稱是網址字串。動作字串是要求方法和標頭的串連。方法和標頭名稱的範圍不受這個類別限制。
LinkPermission

連結建立作業的 Permission 類別。
hard
符號
java.security.SecurityPermission

SecurityPermission 包含名稱 (也稱為「目標名稱」),但不包含動作清單;您要不是擁有具名權限,就是沒有。
目標名稱是安全性設定參數的名稱 (請參閱下文)。目前 SecurityPermission 物件用於保護對 Policy、Security、Provider、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 執行的程式碼呼叫其中一個記錄控制方法 (例如 Logger.setLevel) 時,SecurityManager 會檢查 java.util.logging.LoggingPermission 物件。
控管
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

Protect access to private Credentials belonging to a particular Subject. 主體是以主體集合表示。這項權限的目標名稱會指定憑證類別名稱和主體集。這項權限動作的唯一有效值為「read」。
CredentialClass {PrincipalClass "PrincipalName"}*
javax.security.auth.kerberos.ServicePermission

保護 Kerberos 服務,以及存取這些服務所需的憑證。
initiate
接受
javax.security.auth.kerberos.DelegationPermission

用於限制 Kerberos 委派模型的用途,也就是可轉送和可代理的票證。

這項權限的目標名稱會指定一對 Kerberos 服務主體。第一個是受委託使用授予票券 (TGT) 的下層服務主體。第二個服務主體會指定從屬服務主體要代表啟動 KerberosPrincipal 互動的目標服務。
initiate
接受
javax.security.auth.AuthPermission

目前 AuthPermission 物件用於保護對 Subject、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 上的大多數作業都必須具備適當的 MBeanPermission,才能執行作業。

action className#member[objectName]

如果您有 MBeanPermission,只有在上述四個項目都相符時,才能執行作業。
addNotificationListener
getAttribute
getClassLoader
getClassLoaderFor
getClassLoaderRepository
getDomains
getMBeanInfo
getObjectInstance
instantiate
叫用
isInstanceOf
queryMBeans
queryNames
registerMBean
removeNotificationListener
setAttribute
unregisterMBean
javax.management.MBeanServerPermission
createMBeanServer
findMBeanServer
newMBeanServer
releaseMBeanServer
javax.management.MBeanTrustPermission

這項權限代表簽署者或程式碼庫中的「信任」。
register
*
javax.management.remote.SubjectDelegationPermission