Безопасность в IoT: Обеспечение безопасности развертывания Azure IoT

в 8:54, , рубрики: azure, azure iot suite, IoT, microsoft, Microsoft Azure, security, security iot, безопасная инфраструктура, безопасность iot, безопасность интернета вещей, Блог компании Microsoft, деплой, Интернет вещей, информационная безопасность, обачные сервисы, облака, облачная инфраструктура, облачное хранилище, облачные технологии, облачные хранилища, Разработка для интернета вещей

Представляем вашему вниманию последнюю статью из цикла «Безопасность в IoT», а также приглашаем принять участие в конференции от Microsoft «Бизнес.IoT: открывая интернет вещей». В этой статье детально рассматриваются средства обеспечения безопасности IoT-инфраструктуры на базе Azure IoT и описывается уровень реализации в процессе настройки и развертывания отдельных компонентов. Представлен также сравнительный анализ различных методик.

Безопасность в IoT: Обеспечение безопасности развертывания Azure IoT - 1

Цикл статей «Безопасность в IoT»

1. Azure IoT Suite для тех, кто начинает с нуля.
2. Стратегия всесторонней защиты.
3. Архитектура системы безопасности.
4. Обеспечение безопасности развертывания Azure IoT.

Введение

Обеспечение безопасности развертывания Azure IoT следует оценивать в разрезе трёх областей безопасности:

  • Безопасность устройств. Обеспечение безопасности устройства IoT на время развертывания в условиях эксплуатации.
  • Защита соединения. Обеспечение конфиденциальности данных и их защиты от несанкционированного изменения при передаче между устройством IoT и службой IoT Hub.
  • Безопасность в облаке. Обеспечение безопасности данных при передаче данных и их хранении в облаке.

Безопасность в IoT: Обеспечение безопасности развертывания Azure IoT - 2

Защищенная подготовка устройств и проверка подлинности

Azure IoT Suite использует два метода обеспечения безопасности устройств IoT:

  1. Присвоение каждому устройству уникального ключа удостоверения (токены безопасности), который также можно использовать при обмене данными с IoT Hub.
  2. Установка на устройство сертификата X.509 и закрытого ключа в целях проверки подлинности устройства в службе IoT Hub. Такой способ проверки подлинности гарантирует, что никто не сможет просмотреть закрытый ключ на устройстве за пределами этого устройства. Это обеспечивает более высокий уровень безопасности.

Токен безопасности выполняет проверку подлинности всех вызовов, отправленных устройством в службу IoT Hub. Для этой цели выполняется настройка связи симметричного ключа для каждого отдельного вызова. Проверка подлинности на основе сертификата X.509 позволяет проверять подлинность устройства IoT на физическом уровне в ходе установки соединения по протоколу TLS. Метод с использованием токена безопасности можно использовать и без проверки подлинности на основе сертификата X.509, хотя этот сценарий не гарантирует такого же высокого уровня безопасности. Выбор одного из двух указанных методов, в основном, зависит от требуемого уровня безопасности при проверке подлинности устройства, а также от доступности безопасного хранилища на устройстве (где будет храниться закрытый ключ).

Токены безопасности службы IoT Hub

IoT Hub использует токены безопасности для проверки подлинности устройств и служб, что позволяет избежать отправки ключей по сети. Кроме того, токены безопасности ограничены по времени и области действия. Пакеты SDK Azure IoT Hub создают токены автоматически, специальная настройка не требуется. Тем не менее иногда вам придется создавать и использовать токены безопасности, например, в случае непосредственного использования протоколов AMQP, MQTT или HTTP либо при развертывании шаблона службы токенов.

Дополнительные сведения о структуре токена безопасности и способах его использования см. в следующих статьях: «Структура токена безопасности» и «Использование токенов SAS в качестве устройства».

Каждый экземпляр службы IoT Hub содержит реестр удостоверений устройства, который можно использовать для создания в службе ресурсов отдельных устройств (например, очередь, которая содержит текущие сообщения, передаваемые в настоящий момент между облаком и устройством), а также для настройки разрешения доступа к конечным точкам, взаимодействующим с устройством. Реестр удостоверений IoT Hub обеспечивает безопасное хранение удостоверений устройства, а также ключей безопасности решения. Добавляя в белый или черный список отдельные удостоверения устройств или группы удостоверений, можно полностью контролировать доступ к устройствам.

IoT Hub поддерживает такие протоколы, как AMQP, MQTT и HTTPS. Каждый из этих протоколов по-разному использует токены безопасности, полученные от устройства IoT и отправляемые в службу IoT Hub.

  • Протокол AMQP. Обеспечение безопасности с помощью SASL PLAIN и утверждений AMQP ({policyName}@sas.root.{iothubName} — для токенов уровня службы Hub; {deviceId} — для токенов, задействованных для устройства).
  • Протокол MQTT. Пакет CONNECT использует {deviceId} в качестве {ClientId}, {IoThubhostname}/{deviceId} в поле Имя пользователя; и токен SAS в поле Пароль.
  • Протокол HTTP. Допустимый токен представляет собой заголовок запроса на авторизацию.

Реестр удостоверений устройства IoT Hub можно использовать для настройки учётных данных безопасности устройства и контроля доступа. Тем не менее если значительный объем ресурсов решения IoT уже выделен реестру удостоверений пользовательского устройства и (или) схеме проверки подлинности, то, создав службу токена, можно интегрировать решение в существующую инфраструктуру, где используется служба IoT Hub.

Проверка подлинности устройства на основе сертификата X.509

Использование сертификата X.509 на основе устройства и связанной с ним пары закрытого и открытого ключа позволяет выполнять дополнительную проверку подлинности на физическом уровне. Закрытый ключ хранится в защищённом хранилище на устройстве. Его обнаружение за пределами устройства невозможно. Сертификат X.509 содержит сведения об устройстве (идентификатор устройства и другие организационные данные). Подпись сертификата создается с помощью закрытого ключа.

Процесс подготовки устройства высокого уровня:

  • Настройка связи идентификатора с физическим удостоверением «устройство — устройство» и (или) сертификатом Х.509, который сопоставлен с устройством ещё на этапе изготовления или пусконаладочных работ.
  • Создание соответствующей записи удостоверения в удостоверении «IoT Hub — устройство» и добавление данных о связанном устройстве в реестр устройств IoT Hub.
  • Защищённое хранение отпечатка сертификата Х.509 в реестре устройства IoT Hub.

Корневой сертификат на устройстве

В процессе установки защищённого соединения TLS со службой IoT Hub устройство IoT выполняет проверку подлинности службы с помощью корневого сертификата, который входит в пакет SDK устройства. Сертификат для пакета SDK клиента С находится в папке «ccerts» в корне репозитория. Хотя эти корневые сертификаты выдаются на длительное время, срок их действия всё равно может истечь или они могут быть отозваны. Если сертификат невозможно обновить на устройстве, то последующее подключение устройства к IoT Hub (или другой облачной службе) может также быть недоступным. Эти риски можно уменьшить благодаря эффективным инструментам для обновления корневых сертификатов после развертывания устройства IoT.

Защита соединения

Защита интернет-соединения между устройством IoT и службой IoT Hub обеспечивается посредством стандарта TLS. Azure IoT поддерживает протоколы TLS 1.2, TLS 1.1 и TLS 1.0. Протокол TLS 1.0 поддерживается только в целях обратной совместимости. Рекомендуется использовать TLS 1.2, поскольку эта версия протокола обеспечивает максимальный уровень безопасности.

В Azure IoT Suite поддерживаются следующие комплекты шифров.

Комплект шифров
Длина
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp384r1 (eq. 7680 bits RSA) FS 256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp256r1 (eq. 3072 bits RSA) FS 128
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp384r1 (eq. 7680 bits RSA) FS 256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp256r1 (eq. 3072 bits RSA) FS 128
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) 256
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) 128
TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) 256
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c) 128
TLS_RSA_WITH_AES_256_CBC_SHA (0x35) 256
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 128
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) 112

Обеспечение безопасности в облаке

Azure IoT Hub позволяет определять политики контроля доступа для каждого отдельного ключа безопасности. В такой политике используется следующий набор разрешений, с помощью которых можно настроить доступ к каждой из конечных точек IoT Hub. Разрешения ограничивают доступ к службе IoT Hub в зависимости от требуемых функций.

  • RegistryRead. Предоставляет разрешение для чтения реестра удостоверений устройства.
  • RegistryReadWrite. Предоставляет доступ для чтения и записи к реестру удостоверений устройства.
  • ServiceConnect. Предоставляет доступ к конечным точкам обмена данными и мониторинга, которые взаимодействуют с облачной службой. Например, это разрешение позволяет серверным облачным службам принимать сообщения, отправленные устройством в облако, отправлять сообщения с устройства в облако, а также получать соответствующие подтверждения доставки.
  • DeviceConnect. Предоставляет доступ к конечным точкам обмена данными, которые взаимодействуют с устройством. Например, это разрешение дает возможность отправлять сообщения с устройства в облако и принимать сообщения, отправленные из облака на устройство. Это разрешение используется на устройствах.

Получить разрешения DeviceConnect для IoT Hub с помощью токенов безопасности можно двумя способами: используя ключ удостоверения устройства или общий ключ политики доступа. Кроме того, важно учесть, что все функции, доступные на устройствах, по умолчанию предоставляются на конечных точках с префиксом /devices/{deviceId}.

Компоненты службы могут создавать токены безопасности только с помощью общих политик доступа, которые предоставляют соответствующие разрешения.

Управление пользователями в службе Azure IoT Hub и других службах в рамках решения осуществляется с помощью Azure Active Directory.

Данные, принятые службой IoT Hub, могут использоваться различными службами (например, Azure Stream Analytics, хранилище больших двоичных объектов и так далее). Эти службы предоставляют доступ для управления.

  • Azure DocumentDB. Масштабируемая, полностью индексируемая служба баз данных, которая используется для хранения полуструктурированных данных. Она управляет метаданными устройств (атрибутами, конфигурацией и параметрами безопасности) при подготовке их к работе. DocumentDB обеспечивает высокую производительность и пропускную способность при обработке данных, а также индексацию без учета схемы и улучшенный интерфейс для создания SQL-запросов.
  • Azure Stream Analytics. Благодаря потоковой обработке в облаке в режиме реального времени можно быстро разрабатывать и развертывать недорогие аналитические решения, чтобы в реальном времени анализировать данные, поступающие от устройств, датчиков, элементов инфраструктуры и приложений. Данные, полученные из этой полностью управляемой службы, можно масштабировать без ограничений, сохраняя высокую пропускную способность, устойчивость и низкую задержку.
  • Службы приложений Azure. Облачная платформа для разработки мощных веб- и мобильных приложений, способных подключаться к данным как в облаке, так и локально. Разработка привлекательных мобильных приложений для платформ iOS, Android и Windows. Встроенные функции подключения к десяткам облачных служб и корпоративных приложений обеспечивают возможность интеграции с приложениями SaaS и корпоративным ПО. Благодаря возможности написания кода на любом предпочтительном языке и интерфейсе IDE (.NET, NodeJS, PHP, Python или Java) можно быстро создавать веб-приложения и API.
  • Приложения логики. Функция приложений логики в службе приложений Azure позволяет интегрировать решение IoT в существующие бизнес-системы и эффективно автоматизировать рабочие процессы. Разработчики могут использовать приложения логики для создания рабочих процессов, которые запускаются по триггеру и выполняют последовательность действий — правила и операции, использующие эффективные соединители для интеграции с существующими бизнес-процессами компании. Приложения логики также предоставляют встроенные функции подключения к экосистеме SaaS, облачной среде и локальным приложениям.
  • Хранилище больших двоичных объектов. Надёжное и экономичное облачное хранилище для данных, передаваемых устройствами в облако.

Заключение

В этой статье представлен обзор уровня реализации в процессе проектирования и развертывания инфраструктуры IoT, использующей службу Azure IoT. Настройка безопасности каждого конкретного компонента имеет ключевое значение для безопасности всей инфраструктуры IoT. Средства проектирования, доступные в Azure IoT, предоставляют определенную гибкость и возможность выбора. Однако в отношении любого из выбранных вариантов могут действовать собственные требования к безопасности. Рекомендуется оценить каждый из доступных вариантов с помощью процедуры оценки рисков и затрат. Напоминаем, что бесплатно попробовать Microsoft Azure можно здесь.

Бизнес.IoT: открывая интернет вещей

30 марта 2017 года пройдёт онлайн-конференции Microsoft «Бизнес.IoT: открывая интернет вещей». В программе будет два параллельных трека (бизнес и технологический) с лучшими практиками и рекомендациями от ведущих экспертов в области интернета вещей, машинного обучения и предиктивной аналитики.

Среди спикеров будут присутствовать: Михаил Черномордиков (Microsoft), Сергей Осипов (MAYKOR-GMCS), Дмитрий Бергельсон (GuaranaCam), Анна Кулашова (Microsoft), Дмитрий Марченко (Microsoft), Андрей Мелузов (ГК «КОРУС Консалтинг») и Василий Есипов (КПМГ).

Чтобы принять участие, необходимо зарегистрироваться здесь.

Сообщества по IoT

Хотим также поделиться с вами списком сообществ по IoT для технических специалистов:
Мероприятия: Meetup.com. Здесь можно найти встречи, которые проводит русское сообщество IoT.
Социальные сети: VK, Facebook, канал в Telegram, чат в Telegram.

Автор: Microsoft

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js