Может ли IoT-устройство на Google Cloud Platform каким-либо образом загрузить файл в облако? В данном случае это не совсем публикация данных телеметрии. Может быть полезен прямой доступ к ведру. Либо это, либо доступ к моему приложению на основе AppEngine, но если я загружу его в свое приложение (которое на следующем шаге поместит файл в корзину), как я могу аутентифицировать устройство, чтобы убедиться, что устройство, которое его отправляет для меня это действительно устройство, за которое оно претендует?





Насколько большой файл? Что за устройство?
Одним из больших преимуществ использования Cloud IoT Core является то, что он обрабатывает часть безопасности, поэтому вам не нужно думать об этой части. Вы можете отправлять любые данные в кодировке Base64, поэтому отправка файла должна быть в порядке. Проблема в квоте по размеру. Только 256 КБ на сообщение, поэтому вам может потребоваться разбить файл на части перед отправкой и повторно собрать на другой стороне, если это большие файлы.
Другой способ - использовать IAM и учетные записи служб в качестве безопасности, а устройство напрямую взаимодействовать с одной из других служб, например с облачным хранилищем. Как вы говорите, это усложняет аутентификацию на устройстве, потому что оно использует токен-носитель (service_account.json). Тем не менее, служебная учетная запись может быть сильно ограничена в своих полномочиях (например, только для записи в конкретную корзину облачного хранилища), чтобы ограничить действия, которые она могла бы сделать в случае взлома.
Мне удалось решить проблему, передав подписанный URL-адрес на устройство через конфигурацию. https://cloud.google.com/storage/docs/access-control/signed-urls