Инженеры из Google представили глобальную файловую систему Upspin

22.02.2017 10:25

Группа инженеров из компании Google представила проект Upspin, в рамках которого разработан экспериментальный фреймворк для организации безопасного совместного доступа к файлам. Upspin выполняет роль глобальной ФС, но не является файловой системой в классическом понимании. Upspin определяет набор протоколов, интерфейсов и реализаций программных компонентов, позволяющих связать в единое пространство имён различные данные, такие как ФС и сервисы хранения. Код эталонной реализации Upspin написан на языке Go и распространяется под лицензией BSD. Проект развивается сотрудниками Google, но не является официальным продуктом компании.

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

Upspin предлагает использовать для идентификации файла схему "ann@example.com/dir/file", состоящую из email пользователя и виртуального пути. Зная глобальный идентификатор файла, любой пользователь, при предоставлении ему доступа, может обратиться к этому файлу из любого локального приложения, как к обычному файлу в своей ФС. Кроме файлов и директорий Upspin позволяет организовать доступ к динамически меняющейся информации, такой как данные от датчиков или результаты запросов к сетевым сервисам. Для прикрепления пространства имён Upspin к локальной ФС предоставляется FUSE-модуль. Для доступа также можно использовать программу upspin c набором типовых команд, таких как "cp". Для подключения к глобальной ФС достаточно установить одну из реализаций Upspin, создать ключи для своего email и зарегистрировать их в хранилище ключей.

Управление доступом производится путём создания в экспортируемой директории специального файла с именем Access, содержащего список полномочий, предоставленных другим пользователям. Например, добавив в файл правило "read: joe@here.com, mae@there.com", пользователи joe@here.com и mae@there.com получат возможность чтения файлов в текущей директории и поддиректориях. Кроме чтения, можно предоставить доступ к записи, просмотру содержимого каталога, удалению, созданию файлов и т.п. Возможно создание групповых политик, использование шаблонов (например, "read: all" и "*: all") и индивидуальное определение правил доступа к отдельным файлам.

Ключевой целью разработки является обеспечение наивысшего уровня безопасности. Производительности уделяется второстепенная роль. В частности, в Upspin применяются современные методы идентификации пользователей по открытым ключам. Для хранения и обнаружения открытых ключей планируется задействовать технологию Key Transparency (пока доступен отлько один экспериментальный централизованный сервер ключей key.upspin.io). Все данные передаются в зашифрованном виде с обязательным использованием end-to-end-шифрования, при котором ключи фигурируют только на конечных системах владельца и получателя, и верификацией содержимого по цифровой подписи. Подобный подход позволяет не только развернуть свой собственный сервер Upspin, но и делегировать хранение файлов в любое облачное хранилище, не опасаясь, что данные попадут в чужие руки в результате компрометации хранилища или диверсии персонала. При этом в Upspin не обеспечивается "forward secrecy", т.е. потеря ключа владельцем, означает возможность доступа к перехваченным файлам.