«Необходимо создать гибкую, высокопроизводительную, распределенную систему хранения пар ключ-данные, с эффективно выражающими смысл метками, обеспечивающими детальный контроль доступа к данным, — говорится в пояснительной записке к проекту. — За последние три года мы добились немалых успехов в работе над этим проектом и полагаем, что общедоступность и открытая разработка пойдут на пользу как самому проекту, так и всем, кто в нем заинтересован».
Accumulo создана по тому же принципу, что и Google BigTable, и представляет собой простое хранилище пар ключ/данные: запрос к системе с определенным ключом вернет соответствующие данные. Благодаря распределенной архитектуре Accumulo может работать на нескольких серверах одновременно, что делает ее пригодной к использованию в крупных системах.
Существует немало подобных хранилищ пар ключ/данные, основанных на NoSQL, например Cassandra и HBase. Отличительной особенностью Accumulo является возможность присвоить каждой ячейке данных определенную метку. В каждом ключе есть секция под названием «видимость колонки», где и хранятся метки. Они обеспечивают детальный контроль доступа к данным. Например, внешнему серверу можно дать доступ только к заданным ячейкам хранилища, снабженным соответствующими метками на основе свода правил.
«Метки доступа в Accumulo сами по себе не решают полностью проблему безопасности, — говорится в записке. — Это механизм для снабжения каждого фрагмента данных сведениями о правах, которые нужно иметь, чтобы увидеть его». Системы хранения с меточной моделью могли бы стать основой безопасных хранилищ данных для учреждений здравоохранения, государственных и прочих организаций со строгими требованиями к безопасности и защите личных данных, полагают разработчики.
Реализованный специалистами АНБ подход к безопасности на основе меток напоминает другое решение с открытым кодом, которое АНБ выпустила в 2000 году, — Security Enhanced Linux (SE Linux). С помощью SE Linux администраторы систем могут создавать наборы правил, с большой детальностью описывающие, какие действия на компьютере может выполнять каждая программа. Компания Red Hat интегрировала SE Linux в свой дистрибутив Red Hat Enterprise Linux.
В разработке Accumulo уже участвуют сотни человек – в основном сотрудники АНБ, утверждают в агентстве. Исходный код пакета насчитывает около 200 тыс. строк и написан главным образом на Java. Кроме исходных кодов, АНБ обещает разместить на сайте Apache примеры, документацию и учебные материалы.
В агентстве хотят расширить аудиторию как разработчиков, так и пользователей пакета.
Accumulo, как и другие новые проекты, авторы которых надеются на то, что ими займется фонд Apache, будет помещена в «инкубатор» Apache. В Accumulo используется ряд других программ Apache, а именно платформа распределенного хранения данных Hadoop, менеджер конфигурации распределенных приложений Zookeeper и инструментарий разработки сервисов Thrift.