Java SecurityManager: хорошее введение в файлы политики

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

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

[EDIT] Мой вариант использования - это приложение, которое может запускать скрипты, написанные тремя типами пользователей: 1. разработчиками приложений, 2. администраторами приложений и 3. конечными пользователями.

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

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

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

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

1 ответ

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

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

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

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

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

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

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

Другие вопросы по тегам