java.policy

30.06.2006
141
5
BIT
0
Мы используем POI 3.8 для выгрузки данных в Excel (используется XSSF). Библиотеки POI добавлены в Java-агента (а не выложены в jvm/lib/ext на сервер), поэтому для нормальной работы агента необходимо в java.policy добавить различные разрешения.

Прописывать permission java.security.AllPermission в общую секцию grant {} не хочется ни нам, ни заказчику, поскольку это практически отключает SecurityManager'а.

Отсюда вопрос - можно ли указать разрешения для конкретной базы?
И какой должен быть формат у записи, т.к. сколько мы не пробовали прописывать что-то вроде:

grant codeBase "file:.../-" {
}

Разрешения не применялись.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
а почему не на конкретный список классов, а именно на базу?

Добавлено: ну и ваще чёнить отсюда
подобрать
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
ещё можно получить путь класса (к-л) в базе, а потом вбить его
 
30.06.2006
141
5
BIT
0
а почему не на конкретный список классов, а именно на базу?

Если добавить все разрешения (java.security.AllPermission) в общую секцию grant, то получим отключенный SecurityManager.
Т.е. из любой базы/агента/архива-jar и т.д. на сервере можно будет спокойно выполнять код со всеми разрешениями.

А мы хотим добавить все разрешения только для агентов из нашей базы.

ещё можно получить путь класса (к-л) в базе, а потом вбить его

А можно поподробней как это будет выглядеть.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
Java:
public void test() {
    try {
        System.out.println(this.getClass().getProtectionDomain());
//      Class myclass = Class.forName("org.apache.oro.text.regex.Perl5Matcher");
//      System.out.println(org.apache.oro.text.regex.Perl5Matcher.class.getProtectionDomain());
        System.out.println(new File(".").getAbsolutePath());
        System.out.println(new File(getClassPath()).getAbsolutePath());
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

static String getClassPath() {
    return prop.getProperty("java.class.path", null);
}
пущал в агенте - выдаёт нотусовую диру и lotus.domino.AgentLoader@<некий номер после компиляции>
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
моё предположение основывалось на получении текущего класспаз, но оно не получается (для агента пустой getCodeSource())

для хэПагесов
мобуть и для обычных агентов пропрёт ;) - не пробывал
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
У меня файл здесь лежит: ...\IBM\Notes\java.policy
правильно? /других файлов таких нет/
 
Последнее редактирование:

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
8
%USERPROFILE%/.java.policy - это с какой версии Notes такое можно?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
для клиентов лучше:
В некоторых случаях наверное лучше. У нас это всё глобально политиками приезжает, и не нужно, чтобы это мог пользователь изменять. Он может случайно удалить файл, показавшийся лишним, а потом разбирайся...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
%USERPROFILE%/.java.policy - это с какой версии Notes такое можно?
в девятой есть, я упоминал это в "ругательстве" про 11-ю, где они похерили java.pol
вот для 9.0.1 в домине:
Код:
$grep  -w \.java.policy /opt/ibm/domino/notes/latest/linux/jvm/lib//security/*
/opt/ibm/domino/notes/latest/linux/jvm/lib//security/java.security:policy.url.3=file:///${user.home}/.java.policy
 
Последнее редактирование:
  • Нравится
Реакции: VladSh

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
В некоторых случаях наверное лучше. У нас это всё глобально политиками приезжает, и не нужно, чтобы это мог пользователь изменять. Он может случайно удалить файл, показавшийся лишним, а потом разбирайся...
решается проверкой при старте приложения (файл проверить недолго), а с политиками - пойди угадай - какой фортель выкинут с обновлением нотусни
 
Последнее редактирование:

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
решается проверкой при старте приложения (файл проверить недолго), а с политиками - пойди угадай - какой фортель выкинут с обновлением нотусни
Мне не нравится проверять на старте. Так можно массу чего проверять...
Нотусня просто так не обновляется. Только после того, как мы дадим отмашку, что конкретная инсталяха оттестирована, её обновляют scom'ом, и сразу же, для новых установок винды, закатывают в образ, вместе со всем остальным ПО.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
Не помогает. "write" тоже пробовал. Похоже ему всё равно, хоть добавляй, хоть нет.

У меня файл здесь лежит: ...\IBM\Notes\java.policy
правильно? /других файлов таких нет/
как было выше - можно в юзеровом, в т.ч. на сервере, если виняцкий сервер - лучше пущать под к-л юзеров, в линухах он и так под юзером (ток. не забыть ему хомяк прописать)
до 11--ой версии (нотусни) используется специальный файл java.pol
писать в java.policy плохо, при инсталяции/обновлении его перезаписывают
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
540
%USERPROFILE%/.java.policy - это с какой версии Notes такое можно?
c 8.5.3 первые упоминая
Вот в этом посте рассматривали, там ссылки еще на источники
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
до 11--ой версии (нотусни) используется специальный файл java.pol
писать в java.policy плохо, при интсаляции/обновлении его перезаписывают
1. Почитал, вроде достаточно просто создать файл с таким именем. Верно? Или надо ещё ссылку на него где-то прописать?
2. А с 11-й что, перестали поддерживать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
1. Почитал, вроде достаточно просто создать файл с таким именем. Верно? Или надо ещё ссылку на него где-то прописать?
2. А с 11-й что, перестали поддерживать?
да, достаточно, в нотусне 11бета похерили этот путь в java.security, заметил при запуске кода, который работал в 10-ой, полез в смотреть и обнаружил разницу java.pol там пропал
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
а .java.policy в USERPROFILE не проверял? а то я не могу пока что.
это работает я писал про телегу ;), там в канале подробности
установл 11бету и первым моментов вонзился в java.security ...
там нетути строк:
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${java.home}/lib/security/java.pol
policy.url.3=file:///${user.home}/.java.policy
а есть
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
а критично это тем - что java.pol теперь не сработает!
 
  • Нравится
Реакции: alexas1
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!