Диаграммы потоков данных и границы доверия
Отображение движения данных и пересечения ими границ доверия
«Диаграммы потоков данных и границы доверия» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Зачем начинать с диаграммы
Невозможно найти угрозы в системе, которую вы не понимаете. Диаграмма потоков данных (DFD) — основа моделирования угроз: она наглядно показывает, как данные перемещаются по вашей системе.
Диаграмма делает явными неявные предположения. Когда вы видите, куда направляются данные и кто к ним обращается, угрозы обнаружить гораздо проще.
Четыре элемента DFD
В DFD используются всего четыре строительных блока. Делайте их простыми:
- Внешняя сущность — человек или система вне вашего контроля (пользователь, сторонний программный интерфейс)
- Процесс — то, что преобразует данные (сервис, функция)
- Хранилище данных — место хранения данных (база данных, файл, кэш)
- Поток данных — перемещение данных между элементами (стрелка)
Почти любую систему можно представить с помощью этих четырёх фигур.
Стандартные обозначения DFD
В DFD используются общепринятые фигуры, поэтому их может прочитать любой человек:
External entity -> rectangle / square
Process -> circle (or rounded rectangle)
Data store -> two parallel lines (open rectangle)
Data flow -> labeled arrow
Trust boundary -> dashed line crossing flowsПростая DFD веб-приложения
Рассмотрим простое веб-приложение. Его DFD в текстовом виде может выглядеть так:
User (external) --HTTPS request--> Web App (process)
Web App --SQL query--> Database (data store)
Web App --API call--> Payment Provider (external)
Database --results--> Web App
Web App --HTTPS response--> UserЧто такое граница доверия
Граница доверия — это любая линия на диаграмме, где меняется уровень доверия. С одной стороны данные или вызывающие стороны являются доверенными, а с другой — нет.
Границы доверия — наиболее значимый с точки зрения безопасности элемент DFD, поскольку они отмечают места, где:
- Данные следует проверять
- Вызывающие стороны должны пройти аутентификацию и авторизацию
- Меняются уровни привилегий
Уязвимости чаще всего возникают именно там, где данные пересекают границу доверия.
Распространённые границы доверия
Если начать искать, границы доверия обнаружатся повсюду. Распространённые примеры:
- Между интернетом и вашим приложением (поступают недоверенные входные данные пользователя)
- Между приложением и базой данных
- Между процессами с низкими и высокими привилегиями
- Между вашей системой и сторонним программным интерфейсом
- Между контейнером и основной системой
- Между сетевыми сегментами (DMZ и внутренней сетью)
Каждая граница требует отдельного внимательного анализа.
Отображение границ на DFD
Добавьте границы доверия в виде пунктирных линий, пересекающих потоки данных, на которые они влияют. В нашем веб-приложении:
User (external)
| HTTPS
- - - - - - - - - - - - <- Trust boundary: internet / app
v
Web App (process)
| SQL
- - - - - - - - - - - - <- Trust boundary: app / database
v
Database (data store)Границы указывают, где применять STRIDE
Границы доверия связывают этот урок с STRIDE. Сосредоточьте анализ STRIDE на потоках данных, которые пересекают границу.
На границе между интернетом и приложением спросите:
- Подмена личности — аутентифицирован ли отправитель запроса?
- Изменение данных — проверяются ли входные данные?
- Разглашение информации — зашифрован ли канал?
- Отказ в обслуживании — ограничивается ли частота запросов?
Границы превращают абстрактный фреймворк в конкретные вопросы.
Выбор подходящей степени детализации
DFD может быть слишком общей или слишком подробной. Оба варианта не подходят.
- Слишком общий уровень — один блок с надписью «система» скрывает все значимые границы
- Слишком подробный уровень — отображение каждой функции и переменной погружает вас в лишние детали
Стремитесь к уровню, на котором видны каждый основной компонент и каждая граница доверия. Используйте многоуровневые DFD: контекстную диаграмму всей системы, а затем отдельно детализируйте сложные процессы.
Проверьте диаграмму вместе с командой
DFD, нарисованная одним человеком, обычно содержит ошибочные предположения. Разберите её вместе с разработчиками системы.
Задавайте уточняющие вопросы:
- Действительно ли это единственный путь, по которому данные попадают в базу данных?
- Есть ли административные или пакетные пути, не показанные здесь?
- Обходит ли что-либо этот этап аутентификации?
- Есть ли где-нибудь ещё кэшированные копии этих данных?
Скрытые потоки данных часто становятся причиной пропущенных уязвимостей.
Поддерживайте диаграмму актуальной
Системы меняются, и устаревшая DFD начинает вводить в заблуждение. Устаревшая диаграмма хуже, чем её отсутствие, потому что создаёт ложную уверенность.
Обновляйте DFD, когда:
- добавляется новая интеграция или внешняя зависимость
- появляется новое хранилище данных
- меняется модель доверия (служба перемещается в новую сетевую зону)
Считайте DFD документацией, которая развивается вместе с системой, а не одноразовым артефактом.
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете DFD и границы доверия.
Итоги
Вы научились отображать системы для моделирования угроз:
- DFD использует четыре элемента: внешние сущности, процессы, хранилища данных и потоки данных
- Границы доверия показывают, где меняется уровень доверия и где возникает большинство уязвимостей
- Потоки данных, пересекающие границу, — главное место для анализа STRIDE
- Выбирайте подходящую степень детализации и используйте многоуровневые диаграммы
- Проверяйте DFD вместе с командой и поддерживайте её актуальность
Далее Вы будете ранжировать угрозы с помощью деревьев атак и расставлять приоритеты для мер защиты.
Часто задаваемые вопросы
Урок «Диаграммы потоков данных и границы доверия» бесплатный?
Да — полный текст урока «Диаграммы потоков данных и границы доверия» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Диаграммы потоков данных и границы доверия»?
Отображение движения данных и пересечения ими границ доверия Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Диаграммы потоков данных и границы доверия»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем нужно моделирование угроз
- Методика STRIDE
- Диаграммы потоков данных и границы доверия
- Деревья атак и расстановка приоритетов рисков