Книга: Безопасность веб-приложений. Исчерпывающий гид для начинающих разработчиков
Назад: «Предполагать взлом»
Дальше: Безопасность цепи поставок

Глубокая защита

«Глубокая защита» предполагает наличие нескольких уровней безопасности на случай, если одного окажется недостаточно (рис. 1.5). Хотя данная идея может показаться очевидной при столь простом объяснении, иногда непросто определить, сколько уровней необходимо иметь и какие это должны быть уровни (особенно если выделенный на обеспечение безопасности бюджет ограничен).

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



Рис. 1.5. Три уровня безопасности приложения; пример глубокой защиты





Примеры использования многочисленных уровней приведены ниже.

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

• Сетевая безопасность: включение мониторинга, наличие системы SIEM (Security information and event management – «Управление информацией о безопасности и событиями безопасности», панель инструментов для просмотра возможных событий безопасности в режиме реального времени), наличие системы IPS/IDS (Intrusion prevention/detection system – «Система предотвращения и обнаружения вторжений», инструмент для поиска и препятствования действиям злоумышленников в сети), брандмауэры и многое другое. Каждый новый элемент усиливает защиту приложения.

• Физическая безопасность: замки, колючая проволока, заборы, ворота, видеокамеры, охранники, сторожевые собаки, датчики движения, сигнализация и т. д.

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

ПРИМЕЧАНИЕ. Моделирование угроз – определение угроз, которым могут подвергаться приложения, и разработка планов по снижению их возникновения. Подробнее об этом см. в главе 3.

Система SIEM – мониторинг сети и приложений, панель инструментов для работы с возможными проблемами.

Система предотвращения и обнаружения вторжений (IPS/IDS) – программное обеспечение, установленное в сеть с целью обнаружения или предотвращения сетевых атак.

Принцип наименьших привилегий

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

Примеры реализации принципа наименьших привилегий таковы.

• Необходимость получения дополнительного разрешения от службы безопасности для доступа в лабораторию или часть здания с повышенным уровнем безопасности.

• Отсутствие привилегий администратора на рабочем компьютере.

• Наличие доступа для записи к своим проектам, доступа только для чтения ко всему коду своей команды и полное отсутствие доступа к хранилищам кода других команд.

• Создание сервисной учетной записи в приложении для входа в базу данных и предоставление разрешения на чтение и запись, но не доступ владельца базы данных (Database owner, DBO). Если приложению требуется доступ только для чтения, дайте ему не более того, что необходимо для нормальной работы. Сервисная учетная запись с доступом к базе данных только для чтения не может быть использована для изменения или удаления каких-либо данных, даже если через нее можно украсть копии данных. Все вышеперечисленное значительно снижает риски.

ПРИМЕЧАНИЕ. Разработчики программного обеспечения и системные администраторы являются привлекательными целями для большинства злоумышленников, поскольку обладают наибольшими привилегиями. Отказавшись от некоторых из них, вы защитите свою компанию больше, чем можете предположить, и одновременно заслужите уважение команды безопасности.

Назад: «Предполагать взлом»
Дальше: Безопасность цепи поставок