Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT

2 Новых Механизма Защиты - Краткий обзор Фундаментальных понятий

Мы теперь переходим, в некоторых деталях, новой архитектуре защиты и даем краткое объяснение ее функциональности. Мы запускаем с краткого обзора фундаментальных понятий позади новой архитектуры. Мы тогда представляем главные новые классы в естественном порядке, запускающемся со спецификаций разрешения, продолжая к политике и связанным функциям, сопровождаемым управлением доступом и его использованием, и затем покрывая безопасную загрузку class и разрешение.

Фундаментальное понятие и важный стандартный блок безопасности системы являются доменом защиты [Сэлцер и Шредер 75]. Домен может быть определяющим контекст набором объектов, которые в настоящий момент непосредственно доступны принципалу, где принципал является объектом в компьютерной системе, которой предоставляют полномочия (и в результате отслеживаемость). Песочница, используемая в JDK 1.0, является одним примером домена защиты с фиксированной границей.

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

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

См. длинное описание [D]

Домен концептуально включает ряд классов, экземплярам которых предоставляют тот же самый набор полномочий. Домены защиты определяются политикой в настоящий момент в действительности. Среда приложения Java поддерживает отображение от кода (классы и экземпляры) к их доменам защиты и затем к их полномочиям, как иллюстрировано числом ниже.

См. длинное описание [D]

Поток выполнения (который часто является, но не обязательно связан к, единственный поток Java, который поочередно не обязательно связывается к понятию потока базовой операционной системы) может произойти полностью в пределах единственного домена защиты или может включить домен приложения и также системный домен. Например, приложение, которое распечатывает сообщение, должно будет взаимодействовать с системным доменом, который является единственной точкой доступа к потоку вывода. В этом случае крайне важно, чтобы в любое время домен приложения не получил дополнительные разрешения, вызывая системный домен. Иначе, могут быть серьезные импликации безопасности.

В обратной ситуации, где системный домен вызывает метод от домена приложения, такой как тогда, когда системный домен AWT вызывает метод краски апплета, чтобы вывести на экран апплет, снова крайне важно, чтобы в любое время эффективные права доступа были тем же самым как текущими правами, включенными в домене приложения.

Другими словами "менее мощный" домен не может получить дополнительные разрешения в результате вызова или быть вызванным более мощным доменом.

Это обсуждение одного потока, включающего два домена защиты естественно, делает вывод к потоку, который пересекает многократные домены защиты. Простое и благоразумное эмпирическое правило для того, чтобы вычислить полномочия является следующим:

Поскольку можно видеть, doPrivileged метод позволяет части доверяемого кода временно включить доступу к большему количеству ресурсов, чем доступны непосредственно приложению, которое вызывало это. Это необходимо в некоторых ситуациях. Например, приложению нельзя позволить прямой доступ к файлам, которые содержат шрифты, но системная утилита, чтобы вывести на экран документ должна получить те шрифты, от имени пользователя. Мы обеспечиваем doPrivileged метод для системного домена, чтобы иметь дело с этой ситуацией, и методом фактически доступен всем доменам.

Во время выполнения, когда доступ к критическому системному ресурсу (такому как файловый ввод-вывод и сетевой ввод-вывод) запрашивается, обрабатывающий ресурс код прямо или косвенно вызывает специальный метод AccessController class, который оценивает запрос и решает, нужно ли запрос предоставить или отрицаться.

Такая оценка следует и обобщает "эмпирическое правило", данное выше. Фактический путь, которым проводится оценка, может измениться между реализациями. Основной принцип должен исследовать историю вызова и полномочия, предоставленные соответствующим доменам защиты, и возвратиться тихо, если запрос предоставляют, или выдайте исключение безопасности, если запрос отрицается.

Наконец, каждый домен (система или приложение) может также реализовать дополнительную защиту своих внутренних ресурсов в пределах его собственной границы домена. Например, банковское приложение, возможно, должно поддерживать и защитить внутренние понятия, такие как текущие счета, депозиты и выводы войск. Поскольку семантика такой защиты вряд ли будет предсказуема или осуществима Java 2 SDK, систему защиты на этом уровне лучше всего оставляют разработчикам системы или разработчикам приложений. Однако, всякий раз, когда приспособлено, мы обеспечиваем полезные примитивы, чтобы упростить задачи разработчиков. Одним таким примитивом является SignedObject class, деталь которого мы опишем позже.



СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT
Авторское право © 1997-1999 Sun Microsystems, Inc. Все права защищены.

Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами