Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Qué necesitas saber sobre las políticas de permisos de Java
Si desarrollas políticas de Java Texto destacado, debes saber qué políticas de permisos están en efecto en la JVM de Edge y cómo afectarán a tu 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 ciertos archivos, como los archivos de recursos de la política. Sin embargo, la mayoría del acceso al sistema de archivos está bloqueado. En este tema, se enumeran todos los tipos de permisos de JDK y sus respectivos destinos o acciones. Para cada destino o acción, especificamos la política de permisos y cualquier excepción que necesites conocer.
Para obtener más información sobre los tipos de permisos de JDK y lo que permite cada uno, consulta Permisos en Java Development Kit (JDK).
Habilita restricciones de seguridad
En Edge para la nube privada, las restricciones de seguridad están inhabilitadas de forma predeterminada. Esto significa que tu código destacado de Java personalizado puede acceder a todos los recursos sin restricciones. Para habilitar de seguridad en la instalación de Edge para la nube privada, sigue el siguiente procedimiento:
- En el primer nodo de Message Processor, abre el archivo.
$APIGEE_ROOT/customer/application/message-processor.properties
en un editor. Si el archivo no existe, créalo. - Agrega la siguiente línea al archivo:
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
- Reinicia el procesador de mensajes:
apigee-service message-processor restart
- Repite estos pasos en todos los procesadores de mensajes restantes.
Tipo de permiso | Nombre del destino o de la acción | Se concedió permiso |
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 Un java.io.FilePermission representa el acceso a un archivo o directorio. Un FilePermission consta de un nombre de ruta de acceso y un conjunto de acciones válidas para ese nombre de ruta de acceso. |
read | SÍ, pero se aplican restricciones. Consulta Restricciones. |
write | NO | |
execute | NO | |
borrar | NO | |
readlink | SÍ | |
java.io.SerializablePermission Un SerializablePermission contiene un nombre (también denominado "nombre de destino"), pero no una lista de acciones. O tienes el permiso con nombre o no. |
enableSubclassImplementation | SÍ |
enableSubstitution | NO | |
java.lang.management.ManagementPermission Métodos definidos en la interfaz de administración para la plataforma Java |
controlar | NO |
monitor | NO | |
java.lang.reflect.ReflectPermission Para operaciones reflexivas. Un 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. O tienes el permiso con nombre o no. |
createClassLoader | NO |
getClassLoader | SÍ | |
setContextClassLoader | SÍ | |
enableContextClassLoaderOverride | SÍ | |
closeClassLoader | NO | |
setSecurityManager | NO | |
createSecurityManager | NO | |
getenv.{variable name} | NO | |
exitVM.{exit status} | NO | |
shutdownHooks | NO | |
setFactory | NO | |
setIO | NO | |
modifyThread | SÍ | |
stopThread | SÍ | |
modifyThreadGroup | SÍ | |
getProtectionDomain | SÍ | |
getFileSystemAttributes | NO | |
readFileDescriptor | SÍ | |
writeFileDescriptor | NO | |
loadLibrary.{library name} | NO | |
accessClassInPackage. {package name} | SÍ | |
defineClassInPackage. {package name} | NO | |
accessDeclaredMembers | NO | |
queuePrintJob | NO | |
getStackTrace | NO | |
setDefaultUncaughtExceptionHandler | NO | |
preferences | NO | |
usePolicy | NO | |
java.net.NetPermission Un NetPermission contiene un nombre, pero no una lista de acciones. O el permiso con nombre o no. |
setDefaultAuthenticator | NO |
requestPasswordAuthentication | NO | |
specifyStreamHandler | SÍ | |
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 consiste en una especificación de host y un conjunto de “acciones” que especifican formas de conectarse a ese host. host = (hostname | IPaddress)[:portrange] portrange = portnumber | -portnumber | portnumber-[portnumber] Las posibles formas de conectarse al host son accept connect listen resolve La acción “listen” solo es significativa cuando se usa con “localhost”. La acción “resolve” (resolver búsquedas de servicio de nombre de host/ip) está implícita cuando cualquiera de las otras acciones está presente. |
resolve | SÍ |
conectar |
SÍ, pero se aplican restricciones. Consulta Restricciones. Apigee restringe el acceso a las direcciones de sitio local, de bucle invertido, de enlace-local y locales. |
|
escuchar, aceptar |
NO | |
java.net.URLPermission Representa el permiso para acceder a un recurso o conjunto de recursos definidos por una URL determinada y para un conjunto determinado de métodos de solicitud y encabezados de solicitud que el usuario puede configurar. El nombre del permiso es la string de URL. La string de acciones es una concatenación de los métodos y encabezados de solicitud. El rango de nombres de método y encabezado no está restringido por esta clase. |
SÍ | |
LinkPermission La clase de permiso para las operaciones de creación de vínculos. |
hard | NO |
symbolic | NO | |
java.security.SecurityPermission Un SecurityPermission contiene un nombre (también denominado “nombre de destino”), pero no una lista de acciones. Tienes o no tienes el permiso con nombre. El nombre de destino es el nombre de un parámetro de configuración de seguridad (consulta a continuación). Por el momento, el objeto SecurityPermission se usa para proteger el acceso a los objetos Policy, Security, Provider, Signer y 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 se ejecute código con un SecurityManager para llamar a uno de los métodos de control de registro. (como Logger.setLevel). |
controlar | NO |
java.util.PropertyPermission El nombre es el nombre de la propiedad (“java.home”, “os.name”, etcétera). La convención de nombres sigue la convención de nombres de las propiedades jerárquicas. Además, un asterisco puede aparecer al final del nombre, después de “.” o por sí solo, para indicar una coincidencia de comodín. Por ejemplo: “java.*” o “*” son válidos, pero “*java” o “a*b” no lo son. Las acciones que se otorgarán se pasan al constructor en una string que contiene una lista de cero o más palabras clave separadas por comas. |
read | SÍ |
write | NO | |
javax.xml.ws.WebServicePermission
|
publishEndpoint | NO |
javax.xml.bind.JAXBPermission | setDatatypeConverter | NO |
javax.sound.sampled.AudioPermission Acceso a los derechos de los recursos del sistema de audio. |
play | NO |
record | NO | |
javax.security.auth.PrivateCredentialPermission Protege el acceso a las credenciales privadas que pertenecen a un sujeto en particular. El sujeto está representado por un conjunto de principales. El nombre de destino de este permiso especifica un nombre de clase de credencial 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 esos servicios. |
initiate | NO |
accept | NO | |
javax.security.auth.kerberos.DelegationPermission Se usa para restringir el uso del modelo de delegación de Kerberos, es decir, tickets de reenvío y que se pueden enviar mediante proxy. El nombre de destino de este permiso especifica un par de principales de servicio de Kerberos. La primera es la principal de servicio subordinada a la que se le confía el uso del ticket de concesión de tickets (TGT). La segunda principal de servicio designa el servicio de destino con el que la principal de servicio subordinada interactúa en nombre de la KerberosPrincipal que se inicia. |
initiate | NO |
accept | 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 configuró un administrador de seguridad con System.setSecurityManager(java.lang.SecurityManager), la mayoría de las operaciones en MBeanServer requieren que los permisos del emisor impliquen un MBeanPermission apropiado para la operación. action className#member[objectName] Si tienes un MBePermissionPermission, solo permite operaciones si estas son las cuatro elementos coincidentes. |
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 |