<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
关于 Java 权限政策,您需要了解哪些信息?
如果您正在开发 Java 调用程序政策,则需要知道哪些权限政策 影响,以及它们将如何影响您的代码。例如,您的自定义 Java 代码对文件系统不具备不受限制的访问权限。但在访问文件系统时,您可以读取某些文件,例如政策资源文件。但大多数其他文件系统的访问都会被禁止。本主题列出了所有 JDK 权限类型及其各自的目标或操作。对于每个目标或操作,我们都会指定权限政策以及您需要了解的任何例外情况。
如需详细了解 JDK 权限类型以及各权限所允许的内容,请参阅 Java 开发工具包 (JDK) 中的权限。
启用安全限制
在适用于私有云的 Edge 中,安全限制默认处于停用状态。这意味着 您的自定义 Java 调用程序代码可以不受限制地访问所有资源。启用 在用于私有云安装的 Edge 中实施安全限制,请按照以下步骤操作:
- 在第一个消息处理器节点上,打开文件
$APIGEE_ROOT/customer/application/message-processor.properties
。 如果该文件不存在,请创建该文件。 - 将以下代码行添加到文件中:
conf_security-policy_enable.security.manager=true
- Save the file and ensure the file is owned by the
apigee
user:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- 重启消息处理器:
apigee-service message-processor restart
- 对其余所有消息处理器重复上述步骤。
权限类型 | 目标或操作名称 | 已授予权限 |
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 | 否 | |
preferences | 否 | |
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 地址的访问。 |
|
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 对音频系统资源的访问权限。 |
play | 否 |
record | 否 | |
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 | 否 | |
invoke | 否 | |
isInstanceOf | 否 | |
queryMBeans | 否 | |
queryNames | 否 | |
registerMBean | 否 | |
removeNotificationListener | 否 | |
setAttribute | 否 | |
unregisterMBean | 否 | |
javax.management.MBeanServerPermission |
createMBeanServer | 否 |
findMBeanServer | 否 | |
newMBeanServer | 否 | |
releaseMBeanServer | 否 | |
javax.management.MBeanTrustPermission 此权限表示签署者或代码库中的“信任”。 |
register | 否 |
* | 否 | |
javax.management.remote.SubjectDelegationPermission
|
否 |