Учебный пример. Робот-доставщик.md


Постановка задачи

Бизнес-функция

Доставка заказа клиенту на дом.

Способ доставки

С использованием самодвижущегося робота.

Бизнесс процесс

DRBP

Высокоуровневая архитектура

Потоки данных

DRDFD

Компоненты

DRLD

Цели и предположения безопасности

Цель безопасности робота

  1. обеспечение сохранности груза до момента передачи авторизованному клиенту
  2. получение задания только от корпоративного сервера в случае многократных попыток неавторизованного доступа вернуть груз на склад

Предположения безопасности

целями безопасности робота не являются

  • защита от атак с использованием физического доступа

Требования

  1. доработать архитектуру решения при необходимости (обнаружены важные для выполнения бизнес-функции компоненты)
  2. разработать документ ЦПБ определить доверенные компоненты на уровне архитектуры определить механизмы обеспечения ИБ, в частности
    1. защита от несанкционированного доступа к содержимому заказа, доставляемого клиенту
    2. обеспечение целостности информации о заказе (адрес доставки, PIN)
    3. защита от множественных попыток авторизации реализовать прототип решения, в ходе которого “робот” получает задание на доставку с параметрами доставки (координаты, PIN)
  3. имитация сервиса доставки выдаёт информацию “приехал/не приехал” в консоль (механизм автоматического уведомления пользователя о прибытии робота не требуется)
  4. робот рассчитывает движение, осуществляет его с учётом ограничений и прибывает в место назначения
  5. также после состояния “приехал” через HMI пользователь может ввести PIN код для получения доступа к хранилищу
  6. если робот прибыл в место назначения и получил правильный PIN код, срабатывает имитация открытия хранилища (информация отображается в консольном окне)
  7. после “выдачи заказа” робот должен вернуться на склад и передать статус “доставлено” серверу
  8. в случае ошибки робот, не открывая хранилище, должен вернуться на склад и передать серверу статус “ошибка”

Критерии оценки работоспособности доставщика

  1. заказ должен быть доставлен по координатам места назначения
  2. заказ может быть выдан клиенту только в месте назначения для получения доступа к заказу клиент должен ввести PIN код если верный PIN код не введён, заказ должен быть возвращён на склад
  3. все попытки несанкционированного доступа должны быть зафиксированы в системе журналирования

Критерии оценки работы

  1. функционал решения достаточен для отработки всего сценария из постановки задачи
  2. определены политики безопасности для взаимодействия сервисов
  3. неавторизованные запросы регистрируются и блокируются
  4. в мониторе безопасности можно отследить всю цепочку взаимодействия сервисов

Упрощения

  1. любой товар не имеет массы и объёма, можно заказать любое количество любых товаров (в пределах доступности) в одну доставку
  2. графический интерфейс для взаимодействия с пользователем не требуется, достаточно примеров REST запросов (Postman коллекцией или .rest файлом в Visual Studio Code)

Принципиальные соображения

  1. после получения задания робот функционирует автономно (т.е. движется к клиенту, авторизует и выдаёт заказ даже в отсутствие связи с сервером)
  2. после доставки робот должен вернуться в пункт отправления, только тогда его задача считается выполненной

Последовательность шагов выполнения заказа роботом-доставщиком

DRSD

Подсистемы

Клиент (Customer)

  • взаимодействует с роботом через REST интерфейс
  • использует для авторизации уже известный ему уникальный PIN код (программная реализация механизма передачи PIN кода клиенту не требуется), но этот же PIN код использует и Fleet management service при отправке роботу задания на доставку

Fleet management service

  • в задаче использует только REST интерфейс
  • принимает параметры задачи от “сотрудника склада” (для простоты) - POST запросом из Postman или аналогичного инструмента
  • принимает от Communication service уведомление о возвращении робота на склад и сохраняет в журнале (выводит на консоль)

Communication service

  • получает параметры доставки по REST интерфейсу, отправляет их в шину сообщений
  • получает уведомление о выполнении доставки и возвращении на базу из шины сообщений
  • по REST интерфейсу уведомляет сервис управления парком роботов о прибытии

Central control unit Центральный управляющий модуль (сервис)

  • подписан на сообщения всех сервисов получает от communication service информацию о новой доставке, перепаковывает в сообщение с уменьшенным количеством информации (убирает PIN доступа) и публикует в своём топике
  • получает информацию о текущем положении и рассчитывает параметры управления, которые публикует отдельном топике в случае приближения к месту назначения даёт команду на остановку движения
  • при получении информации об обнаружении объекта и вводе PIN код даёт команду на открытие хранилища
  • после получения информации о закрытой крышке хранилища начинает движение обратно на склад
  • получает информацию о координатах и рассчитывает управление
  • при прибытии на склад останавливает движение

Positioning

  • выдаёт текущие координаты (x, y) - удаление в метрах (“от центра города”)
  • использует параметры движения от сервиса motion control для вычисления изменения координат
  • для простоты предположим, что препятствий нет и доставщик может ехать по прямой и поворачиваться (с ограничениями, см. motion control)

Motion control

  • берёт на вход желаемые параметры направления и скорости движения
  • применяет ограничения
  • скорость не более 5 км/ч
  • по запросу способен выдать информацию об имеющихся физических ограничениях
  • выдаёт параметры движения после применения ограничений Sensors
  • уведомляет об обнаружении объекта и его типе
  • для простоты - берёт координаты и расстояние до цели, при приближении к цели меньше 10 см всегда обнаруживает объект типа “человек”.
  • управляет состоянием замка хранилища
  • при получении сообщения открывает замок через фиксированное время (например, 5 сек) передаёт сообщение о закрытии замка

HMI

  • имеет два интерфейса
    • с шиной сообщений
    • REST интерфейс для обработки запросов с PIN кодом
  • при получении REST запроса с PIN отправляет сообщение в топик

Вспомогательные материалы

Ссылка на вики репозиторий