Java 權限參考資料

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

關於 Java 權限政策的相關資訊

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

如要進一步瞭解 JDK 權限類型,以及各項權限允許的內容,請參閱「Java Development Kit (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
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]

可用來連線至主機的方式如下:

接受
連線
監聽
解析

「listen」動作只有在與「localhost」搭配使用時才有意義。當其他動作出現時,系統會隱含「resolve」(解析主機/IP 名稱服務查詢) 動作。
resolve
連結

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

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

listen,
accept
java.net.URLPermission

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

連結建立作業的權限類別。
符號
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

保護屬於特定主體的私密憑證存取權。主體由一組主要人物代表。此權限的目標名稱會指定憑證類別名稱和一組 Principal。此權限的唯一有效值為「read」。
CredentialClass {PrincipalClass "PrincipalName"}*
javax.security.auth.kerberos.ServicePermission

保護 Kerberos 服務和存取這些服務所需的憑證。
initiate
accept
javax.security.auth.kerberos.DelegationPermission

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

這個權限的目標名稱會指定一組 kerberos 服務主體。���一個是受託使用授權票證 (TGT) 的次要服務主體。第二個服務主體會指定目標服務,以便從屬服務主體代表發起 KerberosPrincipal 互動。
initiate
accept
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