На днях стало известно о новом проекте Upspin, который разрабатывается группой инженеров из корпорации Google. Основная задача участников проекта — создание фреймворка для обеспечения безопасного совместного доступа к файлам. Upspin, если коротко, задает набор протоколов, интерфейсов и прочих программных компонент, что позволяет связать вместе различные данные, включая ФС и сервисы хранения. Написан фреймворк на язык Go. Распространяется он под лицензией BSD. Стоит отметить, что сам проект — не официальная разработка Google, а «хобби» сотрудников.
Вне зависимости от того, где находятся файлы, Upspin унифицирует доступ к ним, так что получить данные можно из практически любой точки глобальной сети. По словам разработчиков, их разработка является попыткой решить проблему с текущей фрагментированностью различных программных элементов для совместного доступа к файлам. В результате пользователю, который работает с разными платформами, необходимо тратить время на выполнение промежуточных загрузок, сохранений и переупакови файлов.
Чтобы лучше понять саму проблему, можно представить себе ситуацию, когда пользователь хочет поместить фотографию, которая загружена в Facebook, в другую социальную сеть, например, во «Вконтакте». В этом случае приходится загружать картинку сначала на ПК или телефон, а потом уже пересохранять в другой социальной сети. Чтобы передать файл другому пользователю или передать со смартфона на удаленный ПК, нужно загружать информацию в «облако» любого доступного файлового сервиса. Контроль над файлом у пользователя исчезает сразу после того, как данные попадают на сервера выбранного сервиса. Для сохранения безопасности данных их в этом случае приходится шифровать.
В системе три основных компонента:
- Сервер ключей, на котором хранятся открытые ключи всех пользователей системы. Частные ключи хранятся на стороне пользователей;
- Сервер хранения, где размещаются данные пользователя. Каждый из пользователей может запустить один или больше серверов хранения;
- Сервер директорий, который предоставляет информацию о типах данных на серверах хранения. Сервер директорий может быть запущен в одной связке с сервером хранения.
Для того, чтобы идентифицировать файл, разработчики Upspin предлагают использовать схему типа «ann@example.com/dir/file», которая состоит из электронной почты пользователя и виртуального пути. Если известен глобальный идентификатор файла, то любой пользователь, получив доступ, сможет обратиться к этому файлу из практически любого локального приложения. Это будет работать, как обращение к обычному файлу в собственной файловой системе или любого их совместимых с фреймворком онлайн-сервисов.
Достоинством проекта можно назвать еще и обеспечение доступа к динамически меняющейся информации, будь то данные с датчиков или же результаты запроса к сетевым сервисам. Для прикрепления глобального пространства имен к локальной файловой системе пользователь получает FUSE-модуль. Второй вариант — программа upspin с набором типовых команд вроде «ср». Для того, чтобы произвести подключение к глобальной ФС нужно просто установить одну из реализаций Upspin, создать ключи для email и зарегистрировать их в хранилище ключей.
Доступом можно управлять путем создания в экспортируемой директории особого файла, который называется Access, в котором перечисляются все полномочия, предоставленные другим пользователям. В итоге, добавив в файл правило типа «read: joe@here.com, mae@there.com», пользователи joe@here.com и mae@there.com могут читать файлы в текущих директории и поддиректории. Кроме того, фреймворк дает возможность предоставлять доступ к записи или же просмотру содержимого каталога, удалению, созданию файла. Можно создавать и отдельные групповые политики, используя шаблоны либо же индивидуальное определение правил доступа к различным файлам.
По словам разработчиков, одна из основных целей — обеспечение максимального уровня безопасности. Что касается производительности, то ей здесь отводится второстепенная роль. Для обеспечения безопасности данных пользователя используются методы идентификации пользователей по открытым ключам. Одна из них Key Transparency с централизованным сервером ключей key.upspin.io. Изначально применяется верификация содержимого по цифровой подписи, а все данные передаются в зашифрованном виде с использованием ширования типа end-to-end. Это позволяет многое, включая разворачивание собственного сервера Upspin, хранение файлов в любом облачном хранилище.
Автор: King Servers