Обзор подписания и проверки OCI-артефактов

Образы контейнеров и другие артефакты Open Container Initiative (OCI) являются ключевыми компонентами современных облачных приложений. Эти артефакты могут включать спецификации на программное обеспечение (SBOM), чарты Helm, пакеты конфигураций и модели искусственного интеллекта. Они проходят через цепочку поставок программного обеспечения от создания до развертывания. Они создаются издателями, хранятся в реестрах и используются в конвейерах непрерывной интеграции и непрерывной доставке (CI/CD) или рабочих средах.

Без гарантий злоумышленники могут:

  • Изменение артефактов во время их хранения или передачи.
  • Замените доверенные изображения или диаграммы на вредоносные.
  • Вставьте непроверенные базовые образы или зависимости в сборки.

Добавление гарантий помогает обеспечить следующее:

  • Целостность: используемый артефакт точно такой же, как и тот, который был опубликован.
  • Подлинность: артефакт действительно был получен от ожидаемого издателя.

Вместе целостность и подлинность критически важны для защиты цепочки поставок и предотвращения атак.

Подписывание и проверка

Эти процессы помогают обеспечить целостность и подлинность:

  • Подпись: создает криптографические подписи, которые привязывают удостоверение издателя к дескриптору артефакта, включая дайджест. Артефакты OCI, такие как образы контейнеров, можно подписывать после их создания.
  • Проверка: Проверка, является ли подпись допустимой, личность издателя является доверенной, и артефакт не изменен. Подписи можно проверить перед использованием артефактов.

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

Нотариальный проект и нотация

Нотарийный проект — это проект с открытым исходным кодом, который предоставляет подписывание и проверку артефактов OCI.

Нотация — это инструмент нотаричного проекта для подписывания и проверки артефактов OCI. Нотация интегрируется с несколькими поставщиками ключей, включая:

  • Azure Key Vault: пользователи управляют собственным жизненным циклом сертификатов, включая выдачу, смену и истечение срока действия. Этот выбор обеспечивает надежный контроль и гибкость для организаций, которые хотят поддерживать прямое управление своими сертификатами.
  • Подписывание артефактов: обеспечивает управление сертификатами без прикосновения и автоматическую выдачу краткосрочных сертификатов. Эти функции упрощают процесс подписывания при сохранении надежных гарантий безопасности.

Организации могут выбрать Key Vault для полного управления или применить подписывание артефактов для упрощенного интерфейса.

Сценарии подписывания и проверки

Издатель изображений подписывает изображения в конвейерах CI/CD, таких как GitHub Actions

Издатель образа контейнера создает образ и подписывает его как часть рабочего процесса GitHub Actions перед отправкой в реестр контейнеров Azure. Этот процесс:

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

Потребитель изображений проверяет образы во время развертывания в AKS

При развертывании рабочих нагрузок в Azure Kubernetes Service (AKS) политика кластера может обеспечивать, что только подписанные и проверенные образы разрешены к исполнению. Этот процесс:

  • Помогает предотвратить развертывание несанкционированных или измененных образов.
  • Помогает обеспечивать, что нагрузки выполнения исходят от доверенных издателей.

Потребитель образов проверяет базовые образы в конвейере CI/CD.

Перед созданием образа приложения разработчики могут настроить конвейеры (например, GitHub Actions) для проверки подписей базовых образов. Этот процесс:

  • Помогает защитить сборки от наследования уязвимостей или вредоносного кода.
  • Применяет использование только доверенных вышестоящих компонентов в сборках приложений.

Потребитель проверяет другие артефакты OCI

Помимо образов контейнеров, потребители могут проверить эти артефакты, хранящиеся в реестре OCI:

  • SBOMs: проверьте подписанный SBOM образа перед его использованием для анализа безопасности.
  • Диаграммы Helm: проверьте диаграммы перед установкой их в кластерах Kubernetes.
  • Пакеты конфигурации или модели ИИ: убедитесь, что эти пакеты или модели получены от предполагаемого издателя перед интеграцией их в системы.

В этом обзоре описывается важность подписывания и проверки образов контейнеров и других артефактов OCI. Каждый из следующих сценариев имеет собственное специальное руководство.

Подписывание с помощью Key Vault

Подписывание с помощью командной строки Notation (CLI):

Вход в рабочий процесс GitHub:

Подписывание с помощью подписи артефакта

Подписывание с помощью Notation CLI:

Вход в рабочий процесс GitHub:

Проверка

Проверка в рабочем процессе GitHub:

Проверка в AKS: