Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Правила в отношении разрешений Java
Если вы разрабатываете правила Java Callout, вам нужно знать, какие правила разрешений действуют в JVM Edge и как они повлияют на ваш код. Например, у вашего кода Java нет неограниченного доступа к файловой системе. Однако в случае доступа к файловой системе вы можете читать определенные файлы, например файлы ресурсов правил. Однако доступ к большинству других файловых систем заблокирован. В этой статье перечислены все типы разрешений JDK и их целевые объекты или действия. Для каждой цели или действия мы указываем правила разрешений и исключения, о которых вам нужно знать.
Чтобы узнать больше о типах разрешений JDK и о том, что позволяет каждое разрешение, ознакомьтесь со статьей Разрешения в Java Development Kit (JDK).
Как включить ограничения безопасности
В Edge для частного облака ограничения безопасности по умолчанию отключены. Это означает, что ваш код вызова Java может без ограничений получать доступ ко всем ресурсам. Чтобы включить ограничения безопасности в установке Edge для частного облака, выполните следующие действия:
- На первом узле Message Processor откройте файл
$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
apigeeuser:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- Перезапустите Message Processor:
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 состоит из пути к файлу и набора действий, допустимых для этого пути. |
чтение | ДА, но есть ограничения. Подробнее об ограничениях… |
| 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.{название библиотеки} | НЕТ | |
| 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-адресов) подразумевается, если присутствует любое другое действие. |
распознавать | ДА |
| подключение |
ДА, но есть ограничения. Подробнее об ограничениях… Apigee ограничивает доступ к адресам sitelocal, anylocal, loopback и linklocal. |
|
| слушать, принять |
НЕТ | |
| java.net.URLPermission Представляет разрешение на доступ к ресурсу или набору ресурсов, определенных заданным URL, а также к заданному набору настраиваемых пользователем методов запроса и заголовков запроса. Название разрешения – это строка URL. Строка действий представляет собой конкатенацию методов запроса и заголовков. Диапазон названий методов и заголовков не ограничен этим классом. |
ДА | |
| LinkPermission Класс разрешений для операций по созданию ссылок. |
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 проверяет объект java.util.logging.LoggingPermission, когда код, работающий с SecurityManager, вызывает один из методов управления ведением журнала (например, Logger.setLevel). |
контроль | НЕТ |
| java.util.PropertyPermission Имя – это название свойства ("java.home", "os.name" и т. д.). Правила именования соответствуют иерархической структуре. Также в конце имени после точки или отдельно может стоять звездочка, обозначающая подстановочный знак. Например, "java.*" или "*" – допустимые значения, а "*java" или "a*b" – недопустимые. Действия, которые нужно предоставить, передаются конструктору в виде строки, содержащей список из нуля или более ключевых слов, разделенных запятыми. |
чтение | ДА |
| 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 и учетных данных, необходимых для доступа к этим сервисам. |
Запускать | НЕТ |
| принять | НЕТ | |
| javax.security.auth.kerberos.DelegationPermission Используется для ограничения использования модели делегирования Kerberos, то есть билетов с возможностью пересылки и проксирования. Целевое имя этого разрешения указывает на пару участников службы Kerberos. Первый – это подчиненный сервисный субъект, которому разрешено использовать мандат на получение мандата (TGT). Второй участник службы обозначает целевой сервис, с которым подчиненный участник службы должен взаимодействовать от имени инициирующего участника KerberosPrincipal. |
Запускать | НЕТ |
| принять | НЕТ | |
| 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 | НЕТ | |
| создать экземпляр | НЕТ | |
| вызывать | НЕТ | |
| isInstanceOf | НЕТ | |
| queryMBeans | НЕТ | |
| queryNames | НЕТ | |
| registerMBean | НЕТ | |
| removeNotificationListener | НЕТ | |
| setAttribute | НЕТ | |
| unregisterMBean | НЕТ | |
| javax.management.MBeanServerPermission |
createMBeanServer | НЕТ |
| findMBeanServer | НЕТ | |
| newMBeanServer | НЕТ | |
| releaseMBeanServer | НЕТ | |
| javax.management.MBeanTrustPermission Это разрешение представляет собой "доверие" к подписанту или базе кода. |
зарегистрироваться | НЕТ |
| * | НЕТ | |
|
javax.management.remote.SubjectDelegationPermission
|
НЕТ |