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

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

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

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

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

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

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

  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 НЕТ
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
НЕТ