Как Grafeas обрабатывает метаданные и зачем они нужны вашей системе Kubernetes

Опубликовано: 2 Марта, 2023
Как Grafeas обрабатывает метаданные и зачем они нужны вашей системе Kubernetes

Любой, кто когда-либо загружал файл или посещал веб-страницу через Интернет, сталкивался с термином «загрузка метаданных». Обычно это занимает всего несколько секунд и может показаться довольно незначительным. Однако это совсем не незначительно, и метаданные часто сравнивают с каталогом в библиотеке или указателем книги. Проще говоря, если бы книга была блоком данных, метаданные — это индекс, который точно говорит вам, что это за блок данных, что он может делать, где его найти и как лучше всего его организовать. Качество и мониторинг долгое время были занозой в боку для тех, кто занимается администрированием контейнерных сред в цепочке поставок программного обеспечения, главным образом потому, что обычные инструменты просто не созданы для работы с контейнерами в больших масштабах. Существует длинный список вещей, которые могут пойти не так в отношении безопасности контейнеров, начиная от управления уязвимостями с помощью безопасности изображений и заканчивая загрузкой реестров из сомнительных источников. Все это в основном сводится к компромиссу между скоростью развертывания и безопасностью, причем первое идет вверх, а второе — вниз. С Grafeas, проектом с открытым исходным кодом, который определяет API метаданных для программных компонентов, вы можете меньше беспокоиться о компромиссе.

Обеспечение цепочки поставок

Изображение 347 Безопасность — это не то, что мы можем позволить себе потерять при любом компромиссе, связанном с созданием программного обеспечения, и предпринимаются усилия, чтобы упростить отслеживание и мониторинг контейнеров. Важно понимать, что масштаб и эфемерность, которые придают контейнерам скорость развертывания, действуют здесь как обоюдоострый меч и делают их «почти» невозможными для отслеживания. Именно здесь наш старый друг «метаданные» вмешивается и спасает положение, поскольку отслеживание метаданных — это просто один из способов эффективного отслеживания соответствующих контейнеров.

Причина этого в том, что хотя контейнеры приходят и уходят, когда им заблагорассудится, метаданные (которые представляют собой запись того, что именно произошло и как) публикуются и доступны для изучения. Метаданные поддерживают безопасность, интеграцию и оркестровку, и их довольно просто собрать. Если вы используете Docker, например, с Kubernetes поверх Docker и Rancher поверх Kubernetes, вы можете собрать метаданные со всех трех платформ, просто вытащив Docker API.

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

Сыворотка правды для контейнеров

Изображение 348
Проблема здесь в том, что без какого-то «стандартного формата метаданных» довольно сложно ответить на такие вопросы, как, развернут ли в настоящее время определенный программный компонент или не повлияет ли определенная уязвимость на ваш производственный код. Grafeas предназначен для предоставления единой схемы метаданных, которая позволяет виртуальным машинам, контейнерам, файлам JAR и другим программным артефактам описывать себя для сред, в которых они работают, и для пользователей, которые ими управляют.

Другими словами, Grafeas предоставляет центральный источник «истины» для организаций, пытающихся отслеживать метаданные из контейнеров. Он делает это, собирая все метаданные и делая их доступными через свой API метаданных, поэтому инструменты сборки, аудита и соответствия могут затем подключаться к ним и запрашивать их. Цель состоит в том, чтобы позволить другим процессам в этой среде взаимодействовать с программным обеспечением и вносить в него изменения согласованным и надежным способом.

Grafeas использует две концепции API, примечания и вхождения. Примечания — это в основном подробности о каком-то аспекте программного обеспечения, это может быть описание известной уязвимости, подробности о том, как она была построена, история ее развертывания и тому подобное. Вхождения — это экземпляры заметок или, другими словами, записи о том, когда произошел случай, а также подробности о том, где и как это «произошло». Сведения об известной программной уязвимости, например, могут содержать информацию о возникновении, описывающую, каким сканером уязвимостей она была обнаружена, когда она была обнаружена и была ли уже устранена уязвимость.

Вот идет судья

В рамках Grafeas Google также представила Kritis (что в переводе с греческого означает «судья») — систему авторизации развертывания для Kubernetes. Kritis позволяет нам использовать метаданные, хранящиеся в Grafeas, для создания и применения политик развертывания в реальном времени с помощью Kubernetes. Как и Grafeas, Kritis также использует два ключевых понятия: органы аттестации и политики.

«Аттестации» выполняются органами аттестации и служат для дальнейшей проверки подлинности политики развертывания, органы аттестации описываются как именованные объекты, которые могут аттестовать или «сертифицировать» развертывание. Затем политика назовет один или несколько центров аттестации, чьи аттестации необходимы для развертывания контейнера.

Пока программное обеспечение разрабатывается, тестируется и запускается, выполняется ряд проверок контейнеров и создаются аттестации. Эти аттестации составляют политики, которые можно применять с помощью Kritis в Kubernetes. Политики применения основаны на подтверждении свойств образа контейнера, которые хранятся в Grafeas.

Ключевой частью платформы Kritis является контроллер допуска Kubernetes, который проверяет наличие ожидаемых «аттестаций» и блокирует развертывание, если они отсутствуют.

Если, например, метаданные, извлеченные из Grafeas, не имеют аттестации, удостоверяющей соответствие образа, развертывание будет заблокировано.

Графиас за работой

Теперь, когда Графеас вырос из Google, другие, такие как JFrog, Red Hat, IBM, Black Duck, Twistlock, Aqua Security и CoreOS, присоединились к этой инициативе. Эта инициатива с открытым исходным кодом для определения единого способа аудита и управления современной цепочкой поставок программного обеспечения в значительной степени готова к производству и уже используется платформой электронной коммерции Shopify.

Shopify имеет 6000 сборок контейнеров в день и 330 000 изображений в своем основном реестре, поэтому отследить их все определенно было непросто. В недавнем сообщении в блоге компания объясняет, как интеграция Grafeas и Kubernetes в свой конвейер Kubernetes позволила ей автоматически сохранять информацию о сборке и уязвимостях для каждого контейнера. Кроме того, он также позволяет строго применять встроенную политику Shopify, которая гарантирует, что все кластеры Kubernetes запускают только образы, подписанные его создателем.

Google размещает свой альфа-интерфейс Grafeas API и надеется построить вокруг него экосистему. Поскольку он не связан с какой-либо конкретной платформой или технологией, он может работать где угодно и хранить метаданные, где бы они ни находились, даже в случаях использования гибридного облака. Он также интегрирует и агрегирует метаданные из существующих инструментов. Хостинговая альфа-реализация Kritis, называемая бинарной авторизацией (BinAuthz), доступна в Google Container Engine (GKE), и в ближайшее время планируется ее выпуск с открытым исходным кодом. Ключевыми понятиями BinAuthz являются «центр аттестации» и «политика», реализованные в виде ресурсов REST, управляемых через REST API.

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