本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
关于 Java 权限政策,您需要了解哪些信息?
如果您要开发 JavCallout 政策,您需要了解 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 | 否 | |
| delete | 否 | |
| readLink | 是 | |
| java.io.SerializablePermission SerializablePermissions 包含一个名称(也称为“目标名称”),但不包含操作列表;您拥有命名权限或没有权限。 |
enableSubclassImplementation | 是 |
| enableSubstitution | 否 | |
| java.lang.management.ManagementPermission 在 Java 平台的管理界面中定义的方法 |
control | 否 |
| 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. {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] 连接主机的可能方式为: accept connect listen resolve “listen”操作只有在与“localhost”配合使用时才有意义。如果存在任何其他操作,则已暗含“resolve”(解析主机/IP 名称服务查找)操作。 |
resolve | 是 |
| 连接 |
是,但存在限制。请参阅限制。 Apigee 会限制对 sitelocal、anylocal、loopback 和 linklocal 地址以及 RFC1918 中定义的专用 IPv4 范围的访问。 |
|
| listen, accept |
否 | |
| java.net.URLPermission 表示有权访问由指定网址定义的一个资源或一组资源,以及指定的一组用户可设置的请求方法和请求标头。权限的名称是网址字符串。操作字符串是请求方法与标头的串联。方法和标头名称的范围不受该类的限制。 |
是 | |
| LinkPermission 适用于链接创建操作的权限类。 |
hard | 否 |
| symbolic | 否 | |
| java.security.SecurityPermission SecurityPermission 包含一个名称(也称为“目标名称”),但不包含操作列表;您拥有命名权限或没有权限。 目标名称是安全配置参数的名称(见下文)。目前,SecurityPermission 对象用于保护对政策、安全、提供商、签署者和身份等对象的访问。 |
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 对象。 |
control | 否 |
| 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 对音频系统资源的访问权限。 |
播放 | 否 |
| 记录 | 否 | |
| javax.security.auth.PrivateCredentialPermission 保护对属于特定主题的专用凭据的存取权限。主题由一组主体表示。此权限的目标名称指定了凭据类名称和一组主体。此权限操作的唯一有效值是“read”。 |
CredentialClass {PrincipalClass "PrincipalName"}* | 否 |
| javax.security.auth.kerberos.ServicePermission 保护 Kerberos 服务以及访问这些服务所需的凭据。 |
initiate | 否 |
| accept | 否 | |
| javax.security.auth.kerberos.DelegationPermission 用于限制 Kerberos 授权模型(例如可转发和可代理的票证)的使用。 此权限的目标名称指定了一对 Kerberos 服务主体。第一个主体是授权使用票证授予票证 (TGT) 的从属服务主体。第二个服务主体指定从属服务主体代表起始 Kerberos 主体进行互动的目标服务。 |
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 执行的大多数操作都要求调用者的权限暗含适合该操作的 MBePermission。 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
|
否 |