Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Korporativnye_informatsionnye_sistemyT.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
5 Мб
Скачать
☆

§ 3.4.5. Безопасность программной среды

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

ческий пример реализации подобного подхода - это хранимые процедуры в реляционных СУБД.

Для Web-серверов аналогом хранимых процедур являются программы, обслуживающие CGI (Common Gateway Interface - общий шлюзовый интер- фейс). CGI-процедуры располагаются на серверах и обычно используются для динамического порождения HTML-документов. Политика безопасности организации и процедурные меры должны определять, кто имеет право по- мещать на сервер CGI-процедуры. Жесткий контроль здесь необходим, по- скольку выполнение сервером некорректной программы может привести к сколь угодно тяжелым последствиям. Разумная мера технического характера состоит в минимизации привилегий пользователя, от имени которого выпол- няется Web-сервер.

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

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

* доступности (программа может поглотить все наличные ресурсы);

* целостности (программа может удалить или повредить данные);

* конфиденциальности (программа может прочитать данные и передать их по сети).

Проблему ненадежных программ осознавали давно, но, пожалуй, толь- ко в рамках системы программирования Java впервые предложена целостная концепция ее решения.

Java предлагает три оборонительных рубежа:

* надежность языка;

* контроль при получении программ;

* контроль при выполнении программ.

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

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

Интересный подход предлагают специалисты компании Sun Microsystems для обеспечения безопасного выполнения командных файлов. Речь идет о среде Safe-Tcl (Tool Comman Language - инструментальный ко- мандный язык). Sun предложила так называемую ячеечную модель интерпре- тации командных файлов. Существует главный интерпретатор, которому доступны все возможности языка. Если в процессе работы приложения необ- ходимо выполнить сомнительный командный файл, порождается подчинен- ный командный интерпретатор, обладающий ограниченной функционально- стью (например, из него могут быть удалены средства работы с файлами и сетевые возможности). В результате потенциально опасные программы ока-

зываются заключенными в ячейки, защищающие пользовательские системы от враждебных действий. Для выполнения действий, которые считаются при- вилегированными, подчиненный интерпретатор может обращаться с запро- сами к главному. Здесь, очевидно, просматривается аналогия с разделением адресных пространств операционной системы и пользовательских процессов и использованием последними системных вызовов. Подобная модель уже около 30 лет является стандартной для многопользовательских ОС.