0Pricing
Cyber Security Academy · Урок

Диаграммы потоков данных и границы доверия

Отображение движения данных и пересечения ими границ доверия

«Диаграммы потоков данных и границы доверия» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Зачем нужно моделирование угроз
  2. Методика STRIDE
  3. Диаграммы потоков данных и границы доверия
  4. Деревья атак и расстановка приоритетов рисков
← Назад к Cyber Security Academy