本頁內容適用於 Apigee 和 Apigee 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
|
否 |