Secure by Design: принципы построения защищенных систем

Пока исследователи и центры мониторинга разбирают бэкдор, который умело спрятан в новых версиях широко используемой библиотеки liblzma, мы ознакомимся с отчетом “Secure by Design at Google”. В нем инженеры безопасности пересмотрели принципы построения современных приложений.

Цель материала: сократить разрыв между концептуальными требованиями Secure by Design и их практическим применением. Ключевые инсайты:

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

  • Дизайн, ориентированный на пользователя - пожалуй, ключевое требование.

наша задача заключается в проектировании и внедрении продуктов и сервисов, которые обеспечат безопасность наших пользователей

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

  • Дизайн-мышление в терминах инвариантов.

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

Инварианты безопасности помогают исключить какие-либо требования к пользователям и сфокусировать архитектора на требованиях к системе, с которой работает этот пользователь. При этом, реализация всех инвариантов может быть проверена автоматически на этапе анализа качества ПО.

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

@makrushin

Secure by Design: принципы построения защищенных систем | Сетка — социальная сеть от hh.ru