Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Что нужно знать о политиках разрешений Java
Если вы разрабатываете политики Java Callout, вам необходимо знать, какие политики разрешений действуют в Edge JVM и как они повлияют на ваш код. Например, ваш собственный Java-код не имеет неограниченного доступа к файловой системе. Однако в случае доступа к файловой системе вы можете читать определенные файлы, например файлы ресурсов политики. Но доступ к большинству других файловых систем заблокирован. В этом разделе перечислены все типы разрешений JDK и соответствующие им цели или действия. Для каждой цели или действия мы указываем политику разрешений и любые исключения, о которых вам необходимо знать.
Дополнительные сведения о типах разрешений JDK и о том, что разрешает каждое разрешение, см . в разделе Разрешения в Java Development Kit (JDK) .
Включение ограничений безопасности
В Edge для частного облака ограничения безопасности отключены по умолчанию. Это означает, что ваш собственный код выноски Java может получить доступ ко всем ресурсам без ограничений. Чтобы включить ограничения безопасности в вашей установке Edge for Private Cloud, выполните следующую процедуру:
- На первом узле процессора сообщений откройте файл
$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
- Перезапустите процессор сообщений:
apigee-service message-processor restart
- Повторите эти шаги на всех остальных процессорах сообщений.
| Тип разрешения | Название цели или действия | Разрешение получено |
| java.awt.AWTPermission | ||
| доступБуфер обмена | НЕТ | |
| AccessEventQueue | НЕТ | |
| доступСистемТрей | НЕТ | |
| СоздатьРобот | НЕТ | |
| полноэкранныйЭксклюзивный | НЕТ | |
| прослушиваниеAllAWTEvents | НЕТ | |
| readDisplayPixels | НЕТ | |
| заменитьKeyboardFocusManager | НЕТ | |
| setAppletStub | НЕТ | |
| установитьWindowsAlwaysOnTop | НЕТ | |
| showWindowWithoutWarningBanner | НЕТ | |
| набор инструментовМодальность | НЕТ | |
| часыМышьУказатель | НЕТ | |
| java.io.FilePermission java.io.FilePermission представляет доступ к файлу или каталогу. FilePermission состоит из пути и набора действий, допустимых для этого пути. | читать | ДА, но действуют ограничения. См. Ограничения . |
| писать | НЕТ | |
| выполнять | НЕТ | |
| удалить | НЕТ | |
| читатьСсылка | ДА | |
| java.io.SerializablePermission SerializablePermission содержит имя (также называемое «целевым именем»), но не содержит списка действий; у вас либо есть указанное разрешение, либо нет. | EnableSubclassImplementation | ДА |
| включитьЗамещение | НЕТ | |
| java.lang.management.ManagementPermission Методы, определенные в интерфейсе управления платформой Java. | контроль | НЕТ |
| монитор | НЕТ | |
| java.lang.reflect.ReflectPermission Для рефлексивных операций. ReflectPermission — это именованное разрешение, не выполняющее никаких действий. | подавитьAccessChecks | НЕТ |
| newProxyInPackage.{имя пакета} | НЕТ | |
| java.lang.RuntimePermission Содержит имя (также называемое «целевым именем»), но не содержит списка действий; у вас либо есть указанное разрешение, либо нет. | создатькласслоадер | НЕТ |
| getClassLoader | ДА | |
| setContextClassLoader | ДА | |
| EnableContextClassLoaderOverride | ДА | |
| closeClassLoader | НЕТ | |
| SetSecurityManager | НЕТ | |
| создатьSecurityManager | НЕТ | |
| getenv.{имя переменной} | НЕТ | |
| выходVM.{статус выхода} | НЕТ | |
| выключениеHooks | НЕТ | |
| setFactory | НЕТ | |
| setIO | НЕТ | |
| модифицироватьТред | ДА | |
| stopThread | ДА | |
| изменитьThreadGroup | ДА | |
| getProtectionDomain | ДА | |
| getFileSystemAttributes | НЕТ | |
| чтениефайледескриптор | ДА | |
| записьфайледескриптор | НЕТ | |
| loadLibrary.{имя библиотеки} | НЕТ | |
| доступКлассВПакет. {название пакета} | ДА | |
| определитьКлассИнПакаже. {название пакета} | НЕТ | |
| доступдекларедмемберс | НЕТ | |
| очередьПечатьЗадание | НЕТ | |
| getStackTrace | НЕТ | |
| setDefaultUncaughtExceptionHandler | НЕТ | |
| предпочтения | НЕТ | |
| использоватьполитику | НЕТ | |
| java.net.NetPermission NetPermission содержит имя, но не содержит списка действий; у вас либо есть указанное разрешение, либо нет. | setDefaultAuthenticator | НЕТ |
| запросПарольАутентификация | НЕТ | |
| указатьStreamHandler | ДА | |
| setProxySelector | НЕТ | |
| getProxySelector | НЕТ | |
| setCookieHandler | НЕТ | |
| getCookieHandler | НЕТ | |
| setResponseCache | НЕТ | |
| getResponseCache | НЕТ | |
| Получить нетворкинформацию | НЕТ | |
| java.net.SocketPermission Представляет доступ к сети через сокеты. SocketPermission состоит из спецификации хоста и набора «действий», определяющих способы подключения к этому хосту. хост = (имя хоста | IP-адрес)[:диапазон портов] диапазон портов = номер порта | -номер порта | номер порта-[номер порта] Возможные способы подключения к хосту: принимать соединять слушать решать Действие «прослушивать» имеет смысл только при использовании с «localhost». Действие «разрешить» (разрешить поиск службы имен хоста/IP) подразумевается, когда присутствуют любые другие действия. | решать | ДА |
| соединять | ДА, но действуют ограничения. См. Ограничения . Apigee ограничивает доступ к адресам sitelocal, Anylocal, Loopback и Linklocal. | |
| слушать, принимать | НЕТ | |
| java.net.URLPermission Представляет разрешение на доступ к ресурсу или набору ресурсов, определенному заданным URL-адресом, а также для заданного набора настраиваемых пользователем методов запроса и заголовков запросов. Имя разрешения — это строка URL. Строка действий представляет собой объединение методов запроса и заголовков. Диапазон имен методов и заголовков не ограничен этим классом. | ДА | |
| LinkPermission Класс разрешений для операций создания ссылок. | жесткий | НЕТ |
| символический | НЕТ | |
| java.security.SecurityPermission SecurityPermission содержит имя (также называемое «целевым именем»), но не содержит списка действий; у вас либо есть указанное разрешение, либо нет. Целевое имя — это имя параметра конфигурации безопасности (см. ниже). В настоящее время объект SecurityPermission используется для защиты доступа к объектам Policy, Security, Provider, Signer и Identity. | createAccessControlContext | НЕТ |
| getDomainCombiner | НЕТ | |
| getPolicy | НЕТ | |
| setPolicy | НЕТ | |
| createPolicy.{тип политики} | НЕТ | |
| getProperty.{ключ} | НЕТ | |
| setProperty.{ключ} | НЕТ | |
| InsertProvider | НЕТ | |
| RemoveProvider.{имя провайдера} | НЕТ | |
| clearProviderProperties.{имя провайдера} | НЕТ | |
| putProviderProperty.{имя провайдера} | НЕТ | |
| RemoveProviderProperty.{имя поставщика} | НЕТ | |
| SQLPermission | setLog | НЕТ |
| вызовПрервать | НЕТ | |
| setSyncFactory | НЕТ | |
| setNetworkTimeout | НЕТ | |
| отменить регистрацию драйвера | НЕТ | |
| java.util.logging.LoggingPermission SecurityManager проверит объект java.util.logging.LoggingPermission, когда код, выполняемый с SecurityManager, вызывает один из методов управления журналированием (например, Logger.setLevel). | контроль | НЕТ |
| java.util.PropertyPermission Имя — это имя свойства («java.home», «os.name» и т. д.). Соглашение об именах соответствует соглашению об именах иерархических свойств. Кроме того, звездочка может появиться в конце имени после «.» или сама по себе для обозначения совпадения с подстановочным знаком. Например: «java.*» или «*» допустимы, «*java» или «a*b» недействительны. Действия, которые должны быть предоставлены, передаются конструктору в строке, содержащей список из нуля или более ключевых слов, разделенных запятыми. | читать | ДА |
| писать | НЕТ | |
javax.xml.ws.WebServicePermission | публикацияКонечная точка | НЕТ |
| javax.xml.bind.JAXBPermission | setDatatypeConverter | НЕТ |
| javax.sound.sampled.AudioPermission Права доступа к ресурсам аудиосистемы. | играть | НЕТ |
| записывать | НЕТ | |
| javax.security.auth.PrivateCredentialPermission Защитите доступ к частным учетным данным, принадлежащим определенному Субъекту. Субъект представлен набором принципов. Целевое имя этого разрешения указывает имя класса учетных данных и набор участников. Единственное допустимое значение для действий этого разрешения — «чтение». | 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. | действия | НЕТ |
| doAsPrivileged | НЕТ | |
| getSubject | НЕТ | |
| getSubjectFromDomainCombiner | НЕТ | |
| setReadOnly | НЕТ | |
| изменитьПринципалы | НЕТ | |
| модифицироватьпабликкредентиалс | НЕТ | |
| изменитьПриватеКредиенталс | НЕТ | |
| обновить учетные данные | НЕТ | |
| уничтожитьCredential | НЕТ | |
| createLoginContext.{имя} | НЕТ | |
| getLoginConfiguration | НЕТ | |
| setLoginConfiguration | НЕТ | |
| createLoginConfiguration.{тип конфигурации} | НЕТ | |
| обновитьЛогинКонфигурация | НЕТ | |
| javax.net.ssl.SSLPermission | setHostnameVerifier | НЕТ |
| getSSLSessionContext | НЕТ | |
| setDefaultSSLContext | НЕТ | |
| javax.management.MBeanPermission Разрешение, контролирующее доступ к операциям MBeanServer. Если диспетчер безопасности был установлен с помощью System.setSecurityManager(java.lang.SecurityManager), большинство операций на MBeanServer требуют, чтобы разрешения вызывающего объекта подразумевали MBeanPermission, соответствующий операции. имя класса действия#член[имя объекта] Если у вас есть разрешение MBeanPermission, оно разрешает операции только в том случае, если все четыре элемента совпадают. | добавить прослушиватель уведомлений | НЕТ |
| getAttribute | НЕТ | |
| getClassLoader | НЕТ | |
| getClassLoaderFor | НЕТ | |
| getClassLoaderRepository | НЕТ | |
| getDomains | НЕТ | |
| getMBeanInfo | НЕТ | |
| ПолучитьОбъектИнстанс | НЕТ | |
| создавать экземпляр | НЕТ | |
| вызывать | НЕТ | |
| isInstanceOf | НЕТ | |
| запросMBeans | НЕТ | |
| имена запросов | НЕТ | |
| зарегистрироватьMBean | НЕТ | |
| удалить прослушиватель уведомлений | НЕТ | |
| УстановитьАтрибут | НЕТ | |
| отменить регистрациюMBean | НЕТ | |
| javax.management.MBeanServerPermission | создатьMBeanServer | НЕТ |
| найтиMBeanServer | НЕТ | |
| новыйMBeanServer | НЕТ | |
| релизMBeanServer | НЕТ | |
| javax.management.MBeanTrustPermission Это разрешение представляет собой «доверие» к подписывающей стороне или базе кода. | зарегистрироваться | НЕТ |
| * | НЕТ | |
javax.management.remote.SubjectDelegationPermission | НЕТ |