В этой серии статей мы представляем технологию, лежащую в основе распределенного облака iEx.ec . В предыдущей статье мы обсудили Архитектуру iEx.ec . В этой статье мы рассмотрим наши соображения безопасности. Предполагается, что читатель уже знаком с архитектурой и основными принципами системы, как описано в предыдущих статьях.
Вступление
iEx.ec обеспечивает безопасность на разных уровнях. В этой статье мы подробно расскажем о безопасности в взаимодействии клиент-планировщик-рабочий. В этом контексте службы безопасности и протоколы могут быть введены следующим образом:
- Коммуникация
- Аутентификация
- Авторизация
- Права доступа
- Ограничение
- Данные
В сети iEx.ec рабочие управляются аналогично пулам шахтеров как в классической сети блокчейн. Таким образом, несколько планировщиков iEx.ec могут управлять разными подсетями работников, причем каждый планировщик сам подключается к блокчейн Ethereum. Каждый пул iEx.ec управляется набором клиентов, который может выполнять административную работу, такую как представление задачи и управление пользователями.
Испытательная сеть iEx.ec с декабря 2016 года, с момента установки программного обеспечения Ganglia для мониторинга кластеров. Чтобы выполнить проверку масштабируемости и надежности, мы используем одного рабочего на ядро (а не ЦП). Мы успешно использовали более 3600 сотрудников для одного планировщика с использованием приложения DSP. Благодаря Ganglia сеть iEx.ec можно отслеживать в реальном времени на http://xw.iex.ec/ganglia
Связь
Поскольку конфиденциальные данные могут передаваться по сети, промежуточное ПО XWHEP систематически обеспечивает конфиденциальность связи с использованием протокола TLS. Это обеспечивает безопасность связи с использованием шифрования и путем идентификации коммуникационных объектов.Аутентификация планировщика осуществляется с помощью пары электронных ключей: закрытый ключ планировщика надежно хранится на стороне сервера, а открытый ключ планировщика, который может быть свободно распространен, заключен внутри пакетов установки клиента и рабочего. Использование электронной пары ключей разрешает сертификацию идентификатора планировщика: децентрализованные компоненты XWHEP устанавливают сеанс с планировщиком только в том случае, если сервер доказывает, что ему принадлежит закрытый ключ, соответствующий открытому ключу. С другой стороны, планировщик не может принимать соединение, не получая его собственный открытый ключ.Шифрование связи обеспечивается с помощью электронного ключа, определяемого протоколом TLS.
Аутентификация
Подключение к планировщику недостаточно для выполнения команды на платформе. Каждый клиент и работник должен предоставить действительные учетные данные, чтобы планировщик мог безопасно идентифицировать, кто подключается. На сервере принимаются разные типы учетных данных:
- login/password: логин / пароль - это пара ключей, которая однозначно определяет идентификатор.
- X509 certificate: Сертификат X509 - это стандарт IETF, удостоверяющий личность владельца сертификата. В этой статье не входит подробное описание сертификатов. Промежуточное программное обеспечение аутентифицирует инициатор связи, представляющий сертификат X509, путем проверки центра сертификации (CA), который подписал сертификат. Планировщик может управлять собственным списком доверенных сертификатов CA.
- OpenId и OAuth: промежуточное программное обеспечение которое может делегировать процесс аутентификации известным и доверенным распределенным серверам идентификации, таким как, например, ваша учетная запись google. При успешной аутентификации промежуточное программное обеспечение проверяет, разрешено ли пользователю использовать развертывание. Это самая высокая ответственность за управление списком доверенных серверов, а также пользователями, которым разрешена аутентификация на платформе с использованием их удаленной идентификации. Используя этот механизм аутентификации, есть два варианта: 1 — автоматически принимать новых пользователей, которые могут сразу начать работать, или 2 — использовать внутренний процесс проверки, чтобы получить нового зарегистрированного пользователя легко, но не автоматически. Последнее поведение по умолчанию является безопасным.
Авторизация
Проверка подлинности на стороне сервера недостаточна для выполнения команды на платформе. Каждый аутентифицированный объект имеет уровень использования, называемый «права пользователя», который определяет авторизацию. Авторизация разрешает или запрещает выполнение запрошенного действия.Разрешения определяются как перечисления от наименьшего к большинству привилегированных. Авторизация super_user позволяет получить полный доступ ко всем объектам. В IEx.ec мы вызываем «administrator» идентификатор, связанный с авторизацией super_user. Авторизация standard_user позволяет делать такие действия, как insert_job, insert_data и т.д., но не — insert_user.Общий случай выглядит следующим образом: права пользователя R позволяет действие А, только если:0 < A <= RЕдинственный конкретный случай: worker_user. Представляя учетные данные, связанные с правами этого пользователя, каждый работник может:
- никогда ничего не перечислять (list_app, list_data и т. д.)
- никогда ничего не вставлять (insert_app, insert_data и т. д.)
- никогда ничего не удалять (delete_app, delete_data и т. д.)
- спросить о незавершенной работе
- отправить сигнал сердцебиения
- получить приложение, предоставив уникальный идентификатор приложения (UID)
- загружать данные, предоставляя данные UID
- загрузить результаты для заданий, которые он вычислил. Это строго проверяется сервером. Следует понимать, что загрузка результата тогда чем-то отличается от «простой» insert_data.
Права доступа
В iEx.ec каждый объект имеет владельца. По умолчанию владелец имеет полный доступ к своим объектам. Любой пользователь может иметь доступ к объекту, которому он не принадлежит, если это разрешает доступ к этому объекту. Например, любой пользователь, принадлежащий к группе пользователей, может иметь доступ к объекту, принадлежащему члену той же группы пользователей, если этот объект разрешает групповой доступ.Разрешить выполнение команды на сервере недостаточно для выполнения этой команды на конкретном объекте. Все объекты (приложения, данные, задания и т.д. , даже пользовательские объекты) имеют связанные права доступа, реализованные права доступа к файловой системе Linux. Права доступа разрешают или запрещают доступ к объекту, с которым они связаны.IEx.ec назначает права доступа «Чтение», «Запись» и «Выполнение» отдельно для:
- владелеца объекта
- членов группы, которой принадлежит владелец (если таковой имеется)
- других
Права доступа к объекту могут быть изменены его владельцем или администратором iEx.ec, но никогда не возможно увеличить права доступа, кроме администратора.Существует одно исключение, когда права доступа полностью исключены, так что доступ всегда разрешен: администратору iEx.ec всегда разрешен доступ (чтение, запись и выполнение) любого объекта. Это исключение позволяет изменять права доступа любым способом (даже увеличивая).Права доступа определяются следующим образом:Ur Uw Ue Gr Gw Ge Or Ow OeГде:Ur = Пользователь (владелец) права доступа для чтения
Uw = Права доступа пользователя (владельца)
Ue = Пользователь (владелец) выполняет права доступа, если это применимо
Gr = права доступа к группе чтение
Gw = права доступа к группе запись
Ge = Группа выполняет права доступа, если это применимо
Or = Другие права доступа для чтения
Ow = Другие права на запись
Oe = Другие права доступа для выполнения, если это применимоПримеры в восьмеричных обозначениях:755 определяет
- полный доступ для владельца;
- читать и выполнять обращения к группе пользователей, если таковые имеются;
- читать и выполнять обращения к другим.750 определяет
- полный доступ для владельца;
- читать и выполнять обращения к группе пользователей, если таковые имеются;
- нет доступа к другим.700 определяет
- полный доступ для владельца;
- нет доступа к группе пользователей, если таковая имеется;
- нет доступа к другим.
Ограничение
Поскольку XWHEP присваивает каждому удостоверению подлинность и права доступа, XWHEP эффективно ограничивает все объекты, которыми он управляет. Внутри XWHEP комбинированная настройка разрешений и прав доступа называется ограничением. Все приложения, все данные, все задания ограничены, а также все пользователи, все клиенты и все работники.
Ограничения нацелены на ограничение доступа таким образом, чтобы распределенным объектам (клиентам и работникам) были разрешены или запрещены доступ (чтение, запись, выполнение) к ограниченным объектам. Промежуточное программное обеспечение XWHEP помогает определить как можно больше ограничений, как комбинации авторизации и прав доступа. Основные “Публичные”, “Групповые” и “Частные” ограничения показаны на следующем рисунке «Конфиденциальность»
Фигура «Конфиденциальность» показывает на примере парадигму ограничения свободы, применяемую к приложениям. Мы можем видеть три приложения:
- Публичное приложение вставляется только администратором. Доступ к нему возможен всеми пользователями: любой пользователь может отправить задание для этого приложения. В основном его можно запустить на любом работнике.
- Групповое приложение вставляется группой администратора. Доступ к нему возможен всеми пользователями группы: любой пользователь группы может отправить задание на это приложение. Его можно использовать только для работников группы.
- Частное приложение может быть вставлено любым пользователем. Доступ к нему может получить только его владелец: владелец может отправить задание для этого приложения и только владельцу. Оно может управляться только частным работником.
С другой стороны, на этом рисунке показана еще одна интересная парадигма: ограничения рабочего (то есть добровольные ресурсы):
- Общественный работник может загружать и запускать только публичные приложения.
- Групповой рабочий может загружать и запускать только групповое приложение.
- Частный работник может запускать только частные приложение.
Данные
Данные могут распространяться по сети, от клиента к серверу, от сервера до рабочих и обратно. Безопасность передачи данных обеспечивается защитой связи, подробно описанной ранее в предыдущем разделе «Связь».
Конфиденциальность
Промежуточное программное обеспечение обеспечивающее конфиденциальность данных в соответствии с механизмами авторизации и прав доступа, описанными выше, определяя следующие ограничения:
- личные данные отправляются только частным клиентам и работникам
- групповые данные отправляются только групповым клиентам и работникам
- общедоступные данные доступны всем
XWHEP не предоставляет абсолютно никаких гарантий целостности и конфиденциальности, как только объект отправляется распределенному объекту. Пользователи несут ответственность за надлежащее использование механизмов ограничения доступа для обеспечения конфиденциальности и ограниченного доступа к конфиденциальным данным.
Среднее программное обеспечение определяет конкретный случай для сертификатов X509. Сертификаты X509 являются автоматически частными данными. Это гарантирует, что очень важные данные никогда не могут быть загружены кем угодно, кроме владельца. Среднее программное обеспечение написано так, чтобы работники никогда не могли получить доступ к сертификатам. Пользователь несет ответственность за то, чтобы сертификат X509 был зарегистрирован на платформе как таковой и не обходил поведение по умолчанию, зарегистрировав сертификат X509 другим типом данных (например, только «текст»).
Целостность данных
Среднее ПО обеспечивает целостность данных, проверяя размер данных и контрольную сумму MD5 для каждого доступа. Администратор iEx.ec несет ответственность за обеспечение целостности данных, хранящихся на стороне сервера.
Стойкость
В XWHEP промежуточное программное обеспечение не предлагает ничего на этом поле. Обеспечение сохраняемости данных является обязанностью конечных пользователей. Администратор может удалить любые данные с сервера без какого-либо официального уведомления владельца данных. Администратор несет ответственность за то, чтобы избежать удаления любых данных, которые могут привести к проблемам, связанным с зарегистрированными приложениями и отправленными заданиями.Доказательство вклада или проверка правильности вычисления вне сети блокчейн? Как это будет работать?
Целью iEx.ec является разработать новый протокол под названием PoCo, обеспечивающий консенсус для внесетевых (off-chain) вычислений, то есть обеспечить правильную передачу данных и выполнение вычислений без ошибок. Короче говоря, он будет связывать механизмы проверки результатов (большинство голосов, выборочная проверка) с репутацией и системой вознаграждения, чтобы у людей были стимулы вести себя правильно и избегать повторений.
Но нужно понимать, что потребуется время, чтобы разработать что-то надежное и безопасное, со стимулами, которые действительно помогают развивать сеть. Тем не менее, он уже имеет репликацию задач, поэтому абсолютно тривиально реализовать мажоритарное голосование, которое является базовым алгоритмом для выполнения сертификации результатов в BOINC.
Вывод
В этой статье представлены функции безопасности платформы iExec с подробным описанием нескольких параметров конфигурации xwhep промежуточного программного обеспечения. В следующей статье мы расскажем вам как развертывать приложения.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Автор: Oleg Lodygensky из iExec
Дата публикации: 15 февраля 2017 года
Оригинал статьи на английском языке: iEx.ec security
Приглашаем вас:
- Присоединиться к Telegram : https://t.me/iexec_russian
- Подписаться на наш Twitter : https://twitter.com/iExec_ru
iExec в социальных сетях:
Website • Blog • Slack • Telegram • Reddit • Twitter • Facebook • LinkedIn• Youtube • Github • Kakao • Instagram • Steemit • Katacoda • Docs
— — — — — — — — — — — — — — — — — — — — — — — — — — — — —