Справочник по разрешениям Java

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Что нужно знать о политиках разрешений Java

Если вы разрабатываете политики Java Callout, вам необходимо знать, какие политики разрешений действуют в Edge JVM и как они повлияют на ваш код. Например, ваш собственный Java-код не имеет неограниченного доступа к файловой системе. Однако в случае доступа к файловой системе вы можете читать определенные файлы, например файлы ресурсов политики. Но доступ к большинству других файловых систем заблокирован. В этом разделе перечислены все типы разрешений JDK и соответствующие им цели или действия. Для каждой цели или действия мы указываем политику разрешений и любые исключения, о которых вам необходимо знать.

Дополнительные сведения о типах разрешений JDK и о том, что разрешает каждое разрешение, см . в разделе Разрешения в Java Development Kit (JDK) .

Включение ограничений безопасности

В Edge для частного облака ограничения безопасности отключены по умолчанию. Это означает, что ваш собственный код выноски Java может получить доступ ко всем ресурсам без ограничений. Чтобы включить ограничения безопасности в вашей установке Edge for Private Cloud, выполните следующую процедуру:

  1. На первом узле процессора сообщений откройте файл $APIGEE_ROOT/customer/application/message-processor.properties в редакторе. Если файл не существует, создайте его.
  2. Добавьте в файл следующую строку:
    conf_security-policy_enable.security.manager=true
  3. Save the file and ensure the file is owned by the apigee user:
    chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
  4. Перезапустите процессор сообщений:
    apigee-service message-processor restart
  5. Повторите эти шаги на всех остальных процессорах сообщений.
Тип разрешения Название цели или действия Разрешение получено
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
НЕТ