Java SecurityManager: хорошее введение в файлы политики - PullRequest
0 голосов
/ 08 февраля 2011

Можете ли вы порекомендовать хорошее введение в нетривиальные файлы политики для стандартного Java SecurityManager?

Существуют ли примеры, которые выходят за рамки того, что предлагает веб-сайт Java? Или, может быть, кто-то описывает, как защитить Tomcat, который запускает целую кучу различных веб-приложений?

[РЕДАКТИРОВАТЬ] Мой вариант использования - это приложение, которое может запускать сценарии, написанные тремя типами пользователей: 1. разработчиками приложений, 2. администраторами приложений и 3. конечными пользователями.

Пользователи из группы 1 должны иметь доступ к практически любому ресурсу (= нет необходимости в специальном SM).

Группе № 2 можно доверять, но мы хотели бы защитить их от глупых ошибок (например, позвонив по номеру System.exit).

Группе № 3 нельзя доверять. Они обычно пишут только небольшие сценарии.

Когда я запускаю скрипт, я знаю, откуда он берется. Помогут ли файлы политики в моем случае использования или мне нужно написать собственный SecurityManager?

1 Ответ

0 голосов
/ 08 февраля 2011

Вы действительно смотрели на методы, доступные в SecurityManager?

  • Как он (SecurityManager) может ответить, может ли конкретный пользователь выполнить определенное действие?
    • У него нет способа узнать, что пользователь пытался (действие)
    • У него нет способа узнать, с какими данными пользователь пытался выполнить операцию (вещь).

Полицейские файлы хороши только для ресурсов, которые нуждаются в некоторых ограничениях безопасности, которые могут быть выражены в краткой текстовой форме и не изменяются во время работы jvm.Вещи, подобные следующим:

  • может читать только из hardrive / path / to / file.
  • может читать только системное свойство X
  • может открывать сокеты только напорты ...

Ваш вопросник фактически не говорит, кого вы хотите проверить и какие действия они могут выполнить.Если вы пытаетесь защитить страницы (например, URL-адреса), то вы можете рассмотреть что-то вроде Spring Security, которое позволяет вам говорить что-то вроде:

  • для URL "/ crash-computer" только позволяет пользователям входить в системуроль «противная» делает это
  • только пользователи в роли «администратор» могут получить доступ к «/ admin / *» и т. д.

. Вам нужно будет добавить собственную настраиваемую логику, чтобы делать такие вещи, кактолько пользователь, который создал X или суперпользователь, может обновить X.

...