Заголовок ptsecurity.com Требования по безопасности в архитектуре ПО Иванов Кирилл Архитектор Positive Technologies
ЗаголовокЦикл жизни ПО Требования Анализ и Проектирование РазработкаТестирование Релиз и Поддержка
ЗаголовокТребования Требования Анализ и Проектирование РазработкаТестирование Релиз и Поддержка
Заголовок Архитектурно-значимые требования: • Функциональные требования • Нефункциональные требования (атрибуты качества) • Ограничения • Требования цикла жизни ПО Требования
Заголовок • Производительность • Доступность • Надежность • Удобство использования • Легкость изменения • Безопасность • Тестируемость • … Нефункциональные требования
Заголовок • Одноразовые • Разработал и забыл • Постоянные • Требуют поддержки при новых изменениях Нефункциональные требования
Заголовок • Конфиденциальность • Приватность • Разграничение доступа • Целостность • Подлинность данных • Защита от искажения • Доступность • Аудит Требования по безопасности
ЗаголовокСценарий нефункционального требования Источник стимула Неизвестный пользователь Артефакт SSO Сервис Измерение реакции Не менее 5 секунд Стимул Вводит логин Реакция Валидирует логин Окружение Онлайн, публичная сеть
Заголовок • Источник стимула • Пользователь • Другая система • Стимул • Атака на систему • Артефакт • Сервис в целом • Данные Формулировка требования
Заголовок • Окружение • Онлайн или офлайн • Под нагрузкой или нет • Подключена ли к сети • Положение: • в ДМЗ, • за сетевым экраном, • в открытой сети. Формулировка требования
Заголовок • Реакция • Аутентификация пользователей • Авторизация действий • Аудит действий • Ведение лога транзакций • Нотификация операторов Формулировка требования
Заголовок • Измерение реакции • Время выполнения операции • Сложность восстановления после атаки • Вероятность обнаружения атаки • Скорость/вероятность идентификации источника атаки • Процент доступных сервисов после атаки • Процент потерянных данных Формулировка требования
Заголовок Идентифицированный пользователь с правами администратора изменяет содержимое каталога. При штатной работе системы в течение дня возможно определить кто изменил каталог. Хакер изменяет пакет данных к Сервису Б, приходящий от Сервиса А из той же сети, Сервис Б не принимает пакет в обработку, 0% данных изменилось. Примеры формулировок
Заголовок • Надо немного знать ИБ • Заказчик их не формулирует • Есть стандарты! • ISO/IEC DTR 10181 • ГОСТ Р ИСО/МЭК ТО 13335 • PCI DSS • … • Необходимо думать в негативном ключе Особенность требований по безопасности
Заголовок Пользователь в банкомате снимает деньги. • А если это не он? • Пусть карточка его подтвердит • А если карточка не у него? • Пусть введен ПИН, известный ему • А если он не забрал карточку? • Напоминание, удержание • А если… Негативное мышление: Пример
ЗаголовокАнализ и проектирование Требования Анализ и Проектирование РазработкаТестирование Релиз и Поддержка
Заголовок • Все требования не реализуешь • Что делать? • Ставим приоритеты в попугаях (Low, Medium, High) • ATAM (Architecture Trade-off Analysis Method) предлагает: • Важность для успеха системы • Сложность разработки (Риск) • Безопасность: Риск атаки для системы и данных Анализ
Заголовок • Защита от атак • Аутентификация пользователей • Авторизация пользователей • Поддерживать секретность данных • Поддерживать целостность • Ограничение доступа к ресурсам • Ограничение воздействия • Обнаружение атак • Восстановление после атак • Обнаружение атаки по аудиту • Восстановление данных и работоспособности Проектирование: Тактики
Заголовок • Separation of Concerns • Secured Infrastructure • Hexagonal Architecture • Single Sign On • Event Sourcing • GateKeeper (API Gateway) Проектирование: Паттерны и подходы
ЗаголовокHexagonal Architecture
ЗаголовокHexagonal Architecture: Риски H L H H HM M L L L L ML L
ЗаголовокSingle Sign On
ЗаголовокSingle Sign On • OAuth 2.0 • OpenID Connect • WS Federation • SAML
ЗаголовокEvent Sourcing Состояние – последовательность примененных событий Событие 1 Событие 2 Событие 3 Состояние
ЗаголовокEvent Sourcing Событие – результат применения команды к состоянию Состояние Команда СобытиеСостояние
ЗаголовокEvent Sourcing: пример +100р. -50р. +100р. -40р. Состояние счета = сумма транзакций
ЗаголовокEvent Sourcing: метаданные +100р. Вася -50р. Петя +100р. Катя -40р. Коля Аудит: Добавим пользователей
ЗаголовокEvent Sourcing: исследование истории +100р. Вася -50р. Петя +100р. Катя -40р. Коля Обнаружения сбоя/атаки
ЗаголовокEvent Sourcing: компенсация +100р. Вася -50р. Петя +100р. Катя -40р. Коля -100р. Админ Восстановление после сбоя/атаки
ЗаголовокGateKeeper: Gateway protection Клиент GateWay Сервис Сервис Публичное API Доверенное API
ЗаголовокРазработка Требования Анализ и Проектирование РазработкаТестирование Релиз и Поддержка
Заголовок • Ревью кода • Используйте готовые крипто-инструменты • Статический анализ кода (SAST) Разработка
ЗаголовокТестирование Требования Анализ и Проектирование РазработкаТестирование Релиз и Поддержка
Заголовок Вспомнить требования… Тестирование
ЗаголовокТестирование Источник стимула Неизвестный пользователь Артефакт SSO Сервис Измерение реакции Не менее 5 секунд Стимул Вводит логин Реакция Валидирует логин Окружение Онлайн, публичная сеть
ЗаголовокЦикл жизни ПО Требования Анализ и Проектирование РазработкаТестирование Релиз и Поддержка
Заголовок • Software Architecture in Practice (Лен Басс, Пол Клементс, и Рик Казман) • ATAM (http://www.sei.cmu.edu/architecture/tools/evaluate/atam.cfm) • Event Sourcing (https://martinfowler.com/eaaDev/EventSourcing.html) • Hexagonal Architecture (http://fideloper.com/hexagonal-architecture) • SOA Pattens (http://arnon.me/soa-patterns/) Что почитать?
Заголовок ptsecurity.com Спасибо! Спасибо!

Требования по безопасности в архитектуре ПО