Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Что нужно знать о политиках разрешений Java
Если вы разрабатываете политики вызовов Java, вам необходимо знать, какие политики разрешений действуют в Edge JVM и как они повлияют на ваш код. Например, ваш пользовательский код Java не имеет неограниченного доступа к файловой системе. Однако в случае доступа к файловой системе вы можете читать определенные файлы, такие как файлы ресурсов политики. Но доступ к большинству других файловых систем заблокирован. В этом разделе перечислены все типы разрешений JDK и соответствующие им цели или действия. Для каждой цели или действия мы указываем политику разрешений и любые исключения, о которых вам необходимо знать.
Чтобы узнать больше о типах разрешений JDK и о том, что разрешает каждое разрешение, см. раздел «Разрешения в Java Development Kit (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
apigeeuser:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- Перезапустите обработчик сообщений:
apigee-service message-processor restart
- Повторите эти шаги для всех оставшихся обработчиков сообщений.
| Тип разрешения | Название цели или действия | Разрешение получено. |
| java.awt.AWTPermission | ||
| доступ к буферу обмена | НЕТ | |
| accessEventQueue | НЕТ | |
| accessSystemTray | НЕТ | |
| createRobot | НЕТ | |
| fullScreenExclusive | НЕТ | |
| listenToAllAWTEvents | НЕТ | |
| readDisplayPixels | НЕТ | |
| replaceKeyboardFocusManager | НЕТ | |
| setAppletStub | НЕТ | |
| setWindowsAlwaysOnTop | НЕТ | |
| showWindowWithoutWarningBanner | НЕТ | |
| инструментарийМодальность | НЕТ | |
| watchMousePointer | НЕТ | |
| java.io.FilePermission Объект `java.io.FilePermission` представляет собой доступ к файлу или каталогу. `FilePermission` состоит из пути к файлу и набора действий, допустимых для этого пути. | читать | Да, но действуют ограничения. См. раздел «Ограничения» . |
| писать | НЕТ | |
| выполнять | НЕТ | |
| удалить | НЕТ | |
| 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.{имя переменной} | НЕТ | |
| exitVM.{статус завершения} | НЕТ | |
| shutdownHooks | НЕТ | |
| setFactory | НЕТ | |
| setIO | НЕТ | |
| модифицировать поток | ДА | |
| стопТред | ДА | |
| модифицироватьПотокГруппы | ДА | |
| getProtectionDomain | ДА | |
| getFileSystemAttributes | НЕТ | |
| readFileDescriptor | ДА | |
| writeFileDescriptor | НЕТ | |
| loadLibrary.{название библиотеки} | НЕТ | |
| accessClassInPackage. {имя пакета} | ДА | |
| defineClassInPackage. {package name} | НЕТ | |
| accessDeclaredMembers | НЕТ | |
| queuePrintJob | НЕТ | |
| getStackTrace | НЕТ | |
| setDefaultUncaughtExceptionHandler | НЕТ | |
| предпочтения | НЕТ | |
| политика использования | НЕТ | |
| java.net.NetPermission Объект NetPermission содержит имя, но не список действий; у вас либо есть указанное разрешение, либо его нет. | setDefaultAuthenticator | НЕТ |
| requestPasswordAuthentication | НЕТ | |
| указатьStreamHandler | ДА | |
| setProxySelector | НЕТ | |
| getProxySelector | НЕТ | |
| setCookieHandler | НЕТ | |
| getCookieHandler | НЕТ | |
| setResponseCache | НЕТ | |
| getResponseCache | НЕТ | |
| получить информацию о сети | НЕТ | |
| java.net.SocketPermission Объект SocketPermission представляет собой доступ к сети через сокеты. Он состоит из спецификации хоста и набора «действий», определяющих способы подключения к этому хосту. хост = (имя хоста | IP-адрес)[:диапазон портов] диапазон портов = номер порта | -номер порта | номер порта - [номер порта] Возможные способы подключения к хосту: принимать соединять слушать решать Действие "listen" имеет смысл только при использовании с "localhost". Действие "resolve" (разрешение запросов к службе имен хостов/IP-адресов) подразумевается при наличии любого из других действий. | решать | ДА |
| соединять | Да, но действуют ограничения. См. раздел «Ограничения» . Apigee ограничивает доступ к адресам sitelocal, anylocal, loopback и linklocal. | |
| слушать, принимать | НЕТ | |
| java.net.URLPermission Представляет собой разрешение на доступ к ресурсу или набору ресурсов, определяемых заданным URL-адресом, а также к заданному набору пользовательских методов запроса и заголовков запроса. Имя разрешения — это строка URL-адреса. Строка действий представляет собой конкатенацию методов запроса и заголовков. Диапазон имен методов и заголовков не ограничен этим классом. | ДА | |
| Разрешение на размещение ссылки Класс разрешений для операций создания ссылок. | жесткий | НЕТ |
| символический | НЕТ | |
| java.security.SecurityPermission Объект SecurityPermission содержит имя (также называемое "целевым именем"), но не содержит списка действий; у вас либо есть указанное разрешение, либо его нет. Целевое имя — это имя параметра конфигурации безопасности (см. ниже). В настоящее время объект SecurityPermission используется для защиты доступа к объектам Policy, Security, Provider, Signer и Identity. | createAccessControlContext | НЕТ |
| getDomainCombiner | НЕТ | |
| получить политику | НЕТ | |
| setPolicy | НЕТ | |
| createPolicy.{policy type} | НЕТ | |
| getProperty.{key} | НЕТ | |
| setProperty.{key} | НЕТ | |
| insertProvider | НЕТ | |
| removeProvider.{provider name} | НЕТ | |
| clearProviderProperties.{имя поставщика} | НЕТ | |
| putProviderProperty.{имя поставщика} | НЕТ | |
| 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" — недопустимо. Действия, которые необходимо разрешить, передаются в конструктор в виде строки, содержащей список из нуля или более ключевых слов, разделенных запятыми. | читать | ДА |
| писать | НЕТ | |
javax.xml.ws.WebServicePermission | publishEndpoint | НЕТ |
| 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). Второй субъект службы обозначает целевой сервис, с которым подчиненный субъект службы должен взаимодействовать от имени инициирующего субъекта Kerberos. | инициировать | НЕТ |
| принимать | НЕТ | |
| javax.security.auth.AuthPermission В настоящее время объект AuthPermission используется для защиты доступа к объектам Subject, SubjectDomainCombiner, LoginContext и Configuration. | doAs | НЕТ |
| doAsPrivileged | НЕТ | |
| getSubject | НЕТ | |
| getSubjectFromDomainCombiner | НЕТ | |
| setReadOnly | НЕТ | |
| модифицировать Принципы | НЕТ | |
| modifyPublicCredentials | НЕТ | |
| modifyPrivateCredentials | НЕТ | |
| refreshCredential | НЕТ | |
| destroyCredential | НЕТ | |
| createLoginContext.{name} | НЕТ | |
| getLoginConfiguration | НЕТ | |
| setLoginConfiguration | НЕТ | |
| createLoginConfiguration.{тип конфигурации} | НЕТ | |
| 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 | НЕТ |
| получить атрибут | НЕТ | |
| 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 | НЕТ |