Инженеры из Google представили глобальную файловую систему Upspin
Группа инженеров из компании Google представила проект Upspin, в рамках которого разработан экспериментальный фреймворк для организации безопасного совместного доступа к файлам. Upspin выполняет роль глобальной ФС, но не является файловой системой в классическом понимании. Upspin определяет набор протоколов, интерфейсов и реализаций программных компонентов, позволяющих связать в единое пространство имен различные данные, такие как ФС и сервисы хранения. Код эталонной реализации Upspin написан на языке Go и распространяется под лицензией BSD. Проект развивается сотрудниками Google, но не является официальным продуктом компании.
Upspin позволяет унифицировать доступ к файлам, независимо от того, где они находятся, предоставляя гибкие механизмы для управления доступом и возможность получить файл из любой точки глобальной сети. Upspin пытается решить проблему с текущей фрагментированностью решений для совместного доступа к файлам, которая приводит к необходимости выполнения пользователем множества излишних действий, таких как выполнение промежуточных загрузок, транзитных сохранений и переупаковок. Например, чтобы загрузить файл из одного облачного хранилища в другое, требуется предварительно сохранить файл на локальный диск.
Upspin предлагает использовать для идентификации файла схему "[email protected]/dir/file", состоящую из email пользователя и виртуального пути. Зная глобальный идентификатор файла, любой пользователь, при предоставлении ему доступа, может обратиться к этому файлу из любого локального приложения, как к обычному файлу в своей ФС (Upspin предоставляет FUSE-модуль для организации доступа в виде локальной ФС). Кроме файлов и директорий Upspin позволяет организовать доступ к динамически меняющейся информации, такой как данные от датчиков или результаты запросов к сетевым сервисам.
Управление доступом производится путем создания в экспортируемой директории специального файла с именем Access, содержащего список полномочий, предоставленных другим пользователям. Например, добавив в файл правило "read: [email protected], [email protected]", пользователи [email protected] и [email protected] получат возможность чтения файлов в текущей директории и поддиректориях. Кроме чтения, можно предоставить доступ к записи, просмотру содержимого каталога, удалению, созданию файлов и т. п. Возможно создание групповых политик, использование шаблонов (например, "read: all" и "*: all") и индивидуальное определение правил доступа к отдельным файлам.
Ключевой целью разработки является обеспечение наивысшего уровня безопасности. Производительности уделяется второстепенная роль. В частности, в Upspin применяются современные методы идентификации пользователей по открытым ключам. Для хранения и обнаружения открытых ключей планируется задействовать технологию Key Transparency. Все данные передаются в зашифрованном виде с обязательным использованием end-to-end-шифрования, при котором ключи фигурируют только на конечных системах владельца и получателя. Подобный подход позволяет непосредственно хранить файлы в любом облачном хранилище, не опасаясь, что данные попадут в чужие руки в результате компрометации хранилища или диверсии персонала. При этом в Upspin не обеспечивается "forward secrecy", т. е. потеря ключа владельцем, означает возможность доступа к перехваченным файлам.