Привет, dev.to 👋

Хотел поделиться тем, над чем мы с коллегами работали последние 1,5 года и с открытым исходным кодом прошлая неделя. Хотел бы получить ваш отзыв.

Проект называется Constellation, и это дистрибутив K8s, такой как Rancher или OpenShift. Что делает Constellation особенным, так это то, что он предназначен для защиты целых кластеров K8s от облачной инфраструктуры (и облачных сотрудников) и держать все данные всегда зашифрованными — даже во время выполнения.

Концепция созвездия


Фонды

Ключевым компонентом являются конфиденциальные виртуальные машины (CVM) на базе AMD SEV, которые доступны в Лазурный а также опорная точка. CVM защищают рабочие нагрузки от скомпрометированного хоста и злонамеренных администраторов. Для этого CVM остаются зашифрованными во время выполнения в памяти, строго изолированы и имеют расширенные возможности удаленной аттестации. Это также часто называют конфиденциальные вычисления.

Intel и Arm объявили об аналогичных функциях для своих серверных процессоров, и мы планируем поддерживать их, как только они станут доступны.


Цели

Мы разработали Constellation с двумя целями:

  1. Он должен обеспечивать максимально возможную безопасность и, по сути, позволять безопасно запускать кластер K8s в потенциально скомпрометированной инфраструктуре. Даже сотрудники привилегированных облачных провайдеров не должны иметь доступа к данным в кластере.

  2. С точки зрения UX он должен работать как обычный K8.


Архитектура и функции

Constellation состоит из трех основных компонентов: интерфейса командной строки, пользовательского образа узла и набора контейнеров/сервисов.


CLI

Интерфейс командной строки позволяет легко настроить кластер Constellation в Azure или GCP (мы работаем над поддержкой большего количества облаков). Например:

$ constellation config generate azure
$ constellation create --control-plane-nodes 1 --worker-nodes 2 -y
$ constellation init
$ kubectl ...
Войти в полноэкранный режим

Выйти из полноэкранного режима

CLI автоматически создает узлы на основе CVM, используя образ узла Constellation. Образ узла основан на Fedora CoreOS и оптимизирован для удаленной аттестации CVM.


Аттестация/проверка кластера

Первый узел в кластере проверяется 🔎 напрямую интерфейсом командной строки. Все остальные проверяются существующими узлами. Таким образом, транзитивно пользователи знают, что только «хорошие» узлы с «хорошими» образами являются частью кластера.

Как узнать, что такое «хорошее» изображение узла? Подписываем все образы узлов (а также CLI) и публикуем соответствующие подписи на Журнал публичной прозрачности Sigstore.


Шифрование сети и облачного хранилища

После проверки узла он получает криптографические ключи для безопасного обмена данными с другими узлами по сети и для шифрования данных, записываемых в облачное хранилище. Все эти ключи управляются Constellation. Для сетевого шифрования Constellation использует Cilium.

Шифрование во время выполнения CVM, сетевое шифрование и шифрование хранилища вместе гарантируют, что все данные всегда будут зашифрованы.

Проверить 📄README для получения более полного списка функций и сравнения эталонных показателей.


Демо

фавикон
asciinema.org


Для чего это нужно?

Полное шифрование и изоляция кластера K8s помогает в следующем:

  • ⬆️ Повышение безопасности данных; предотвращение утечка данных
  • 🚛 Перенос важных рабочих нагрузок из локальной среды в облако
  • ⚖️ Соблюдение нормативных требований

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

Что вы думаете?