Referencia de permisos de Java

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

Qué debes saber sobre las políticas de permisos de Java

Si está desarrollando una política JavCallout, debe saber qué políticas de permisos están en vigor en la JVM de Apigee y cómo afectarán a su código. Por ejemplo, tu código Java personalizado no tiene acceso ilimitado al sistema de archivos. Sin embargo, en el caso del acceso al sistema de archivos, puedes leer determinados archivos, como los archivos de recursos de políticas. Sin embargo, la mayoría de los demás accesos al sistema de archivos están bloqueados. En este tema se enumeran todos los tipos de permisos de JDK y sus respectivos objetivos o acciones. En cada destino o acción, especificamos la política de permisos y las excepciones que debes conocer.

Para obtener más información sobre los tipos de permisos de JDK y lo que permite cada permiso, consulta Permisos en Java Development Kit (JDK).

Tipo de permiso Nombre del objetivo o de la acción Permiso concedido
java.awt.AWTPermission
accessClipboard NO
accessEventQueue NO
accessSystemTray NO
createRobot NO
fullScreenExclusive NO
listenToAllAWTEvents NO
readDisplayPixels NO
replaceKeyboardFocusManager NO
setAppletStub NO
setWindowsAlwaysOnTop NO
showWindowWithoutWarningBanner NO
toolkitModality NO
watchMousePointer NO
java.io.FilePermission

java.io.FilePermission representa el acceso a un archivo o directorio. Un FilePermission consta de una ruta de acceso y un conjunto de acciones válidas para esa ruta de acceso.
read SÍ, pero se aplican restricciones. Consulta las restricciones.
write NO
execute NO
delete NO
readLink
java.io.SerializablePermission

SerializablePermission contiene un nombre (también denominado "nombre de destino"), pero no una lista de acciones. Tienes el permiso con ese nombre o no lo tienes.
enableSubclassImplementation
enableSubstitution NO
java.lang.management.ManagementPermission

Métodos definidos en la interfaz de gestión de la plataforma Java
control NO
monitorizará NO
java.lang.reflect.ReflectPermission

Para operaciones reflexivas. ReflectPermission es un permiso con nombre y no tiene acciones.
suppressAccessChecks NO
newProxyInPackage.{package name} NO
java.lang.RuntimePermission

Contiene un nombre (también denominado "nombre de destino"), pero no una lista de acciones. Tienes el permiso con ese nombre o no lo tienes.
createClassLoader NO
getClassLoader
setContextClassLoader
enableContextClassLoaderOverride
closeClassLoader NO
setSecurityManager NO
createSecurityManager NO
getenv.{variable name} NO
exitVM.{exit status} NO
shutdownHooks NO
setFactory NO
setIO NO
modifyThread
stopThread
modifyThreadGroup
getProtectionDomain
getFileSystemAttributes NO
readFileDescriptor
writeFileDescriptor NO
loadLibrary.{library name} NO
accessClassInPackage. {package name}
defineClassInPackage. {package name} NO
accessDeclaredMembers NO
queuePrintJob NO
getStackTrace NO
setDefaultUncaughtExceptionHandler NO
notificación NO
usePolicy NO
java.net.NetPermission

Un NetPermission contiene un nombre, pero no una lista de acciones. Tienes el permiso con el nombre o no lo tienes.
setDefaultAuthenticator NO
requestPasswordAuthentication NO
specifyStreamHandler
setProxySelector NO
getProxySelector NO
setCookieHandler NO
getCookieHandler NO
setResponseCache NO
getResponseCache NO
getNetworkInformation NO
java.net.SocketPermission

Representa el acceso a una red a través de sockets. Un SocketPermission consta de una especificación de host y un conjunto de "acciones" que especifican las formas de conectarse a ese host.
host = (nombre_de_host | dirección_IP)[:intervalo_de_puertos]
intervalo_de_puertos = número_de_puerto | -número_de_puerto | número_de_puerto-[número_de_puerto]

Las formas posibles de conectarse al host son

accept
connect
listen
resolve

La acción "listen" solo tiene sentido cuando se usa con "localhost". La acción "resolve" (resolución de búsquedas de servicios de nombres de host o IP) se implica cuando se incluye alguna de las otras acciones.
resolver
conectar

SÍ, pero se aplican restricciones. Consulta las restricciones.

Apigee restringe el acceso a las direcciones sitelocal, anylocal, de bucle invertido y linklocal, así como a los intervalos de IPv4 privados definidos en RFC1918.

listen,
accept
NO
java.net.URLPermission

Representa el permiso para acceder a un recurso o a un conjunto de recursos definidos por una URL determinada, así como a un conjunto determinado de métodos de solicitud y encabezados de solicitud que puede definir el usuario. El nombre del permiso es la cadena de URL. La cadena de acciones es una concatenación de los métodos de solicitud y los encabezados. Esta clase no restringe el intervalo de nombres de métodos y encabezados.
LinkPermission

Clase Permission para operaciones de creación de enlaces.
difícil NO
simbólico NO
java.security.SecurityPermission

Un SecurityPermission contiene un nombre (también denominado "nombre de destino"), pero no una lista de acciones. O bien tienes el permiso con el nombre indicado, o bien no lo tienes.
El nombre de destino es el nombre de un parámetro de configuración de seguridad (consulta la información que aparece más abajo). Actualmente, el objeto SecurityPermission se usa para proteger el acceso a los objetos Policy, Security, Provider, Signer e Identity.
createAccessControlContext NO
getDomainCombiner NO
getPolicy NO
setPolicy NO
createPolicy.{policy type} NO
getProperty.{key} NO
setProperty.{key} NO
insertProvider NO
removeProvider.{provider name} NO
clearProviderProperties.{provider name} NO
putProviderProperty.{provider name} NO
removeProviderProperty.{provider name} NO
SQLPermission setLog NO
callAbort NO
setSyncFactory NO
setNetworkTimeout NO
deregisterDriver NO
java.util.logging.LoggingPermission

Un SecurityManager comprobará el objeto java.util.logging.LoggingPermission cuando el código que se ejecute con un SecurityManager llame a uno de los métodos de control de registro (como Logger.setLevel).
control NO
java.util.PropertyPermission
El nombre es el nombre de la propiedad ("java.home", "os.name", etc.). La convención de nomenclatura sigue la convención de nomenclatura de propiedades jerárquica. También puede aparecer un asterisco al final del nombre, después de un punto (".") o solo, para indicar que se trata de una coincidencia comodín. Por ejemplo, "java.*" o "*" son válidos, pero "*java" o "a*b" no lo son.

Las acciones que se van a conceder se transfieren al constructor en una cadena que contiene una lista de cero o más palabras clave separadas por comas.
read
write NO
javax.xml.ws.WebServicePermission
publishEndpoint NO
javax.xml.bind.JAXBPermission setDatatypeConverter NO
javax.sound.sampled.AudioPermission

Derechos de acceso a los recursos del sistema de audio.
reproducir NO
registro NO
javax.security.auth.PrivateCredentialPermission

Protege el acceso a las credenciales privadas que pertenecen a un Subject concreto. El sujeto se representa mediante un conjunto de principales. El nombre de destino de este permiso especifica un nombre de clase de Credential y un conjunto de principales. El único valor válido para las acciones de este permiso es "read".
CredentialClass {PrincipalClass "PrincipalName"}* NO
javax.security.auth.kerberos.ServicePermission

Protege los servicios de Kerberos y las credenciales necesarias para acceder a ellos.
initiate NO
aceptar NO
javax.security.auth.kerberos.DelegationPermission

Se usa para restringir el uso del modelo de delegación de Kerberos, es decir, los tickets reenviables y de proxy.

El nombre de destino de este permiso especifica un par de nombres principales de servicio Kerberos. La primera es la entidad de servicio subordinada a la que se le confía el uso del ticket de concesión de tickets (TGT). El segundo principal de servicio designa el servicio de destino con el que debe interactuar el principal de servicio subordinado en nombre del principal de Kerberos iniciador.
initiate NO
aceptar NO
javax.security.auth.AuthPermission

Actualmente, el objeto AuthPermission se usa para proteger el acceso a los objetos Subject, SubjectDomainCombiner, LoginContext y Configuration.
doAs NO
doAsPrivileged NO
getSubject NO
getSubjectFromDomainCombiner NO
setReadOnly NO
modifyPrincipals NO
modifyPublicCredentials NO
modifyPrivateCredentials NO
refreshCredential NO
destroyCredential NO
createLoginContext.{name} NO
getLoginConfiguration NO
setLoginConfiguration NO
createLoginConfiguration.{configuration type} NO
refreshLoginConfiguration NO
javax.net.ssl.SSLPermission
setHostnameVerifier NO
getSSLSessionContext NO
setDefaultSSLContext NO
javax.management.MBeanPermission

Permiso que controla el acceso a las operaciones de MBeanServer. Si se ha definido un gestor de seguridad mediante System.setSecurityManager(java.lang.SecurityManager), la mayoría de las operaciones en MBeanServer requieren que los permisos del llamador impliquen un MBeanPermission adecuado para la operación.

action className#member[objectName]

Si tienes un MBeanPermission, solo se permiten las operaciones si coinciden los cuatro elementos.
addNotificationListener NO
getAttribute NO
getClassLoader NO
getClassLoaderFor NO
getClassLoaderRepository NO
getDomains NO
getMBeanInfo NO
getObjectInstance NO
instantiate NO
invocar NO
isInstanceOf NO
queryMBeans NO
queryNames NO
registerMBean NO
removeNotificationListener NO
setAttribute NO
unregisterMBean NO
javax.management.MBeanServerPermission
createMBeanServer NO
findMBeanServer NO
newMBeanServer NO
releaseMBeanServer NO
javax.management.MBeanTrustPermission

Este permiso representa la "confianza" en un firmante o una base de código.
register NO
* NO
javax.management.remote.SubjectDelegationPermission
NO