0Pricing
Cyber Security Academy · Урок

Подпись зависимостей и артефактов

Проверка происхождения с помощью SLSA и Sigstore

«Подпись зависимостей и артефактов» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.

Почему важно происхождение

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

Без сведений о происхождении злоумышленник, заменивший архив tarball в вашем реестре, неотличим от легитимного выпуска.

Дайджесты, а не теги

Основа целостности — адресация по содержимому. Криптографический хэш (дайджест) артефакта однозначно идентифицирует именно этот набор байтов. Изменяемые теги, такие как latest, можно перенаправить на другое содержимое, а дайджест — нельзя.

# pull by immutable digest, not a tag
docker pull my-app@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

# compute a file digest
sha256sum release-1.4.0.tar.gz

Основы цифровых подписей

Цифровая подпись использует закрытый ключ для подписания хэша артефакта; любой, у кого есть соответствующий открытый ключ, может проверить подпись. Это обеспечивает две гарантии:

  • Целостность — артефакт не изменялся после подписания
  • Подлинность — его подписал владелец закрытого ключа

Сложность не в математике, а в управлении ключами и распространении доверия: как проверяющий узнает, какому открытому ключу доверять?

Подписание без ключей с помощью Sigstore

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

Ключа с длительным сроком действия, который можно украсть, нет, а каждую подпись можно проверить публично.

Подписание с помощью Cosign

Cosign — инструмент Sigstore для подписания образов контейнеров и других артефактов. В режиме без ключей он использует токен OIDC конвейера, поэтому файл ключа не хранится на диске.

# keyless sign in CI (uses ambient OIDC identity)
COSIGN_EXPERIMENTAL=1 cosign sign my-registry/my-app@sha256:1d5283...

# verify, asserting the expected signer identity
cosign verify my-registry/my-app@sha256:1d5283... \
  --certificate-identity-regexp '.*@my-org\.com' \
  --certificate-oidc-issuer https://accounts.google.com

Журнал прозрачности

Sigstore записывает каждое событие подписания в Rekor — общедоступный журнал с защитой от незаметного изменения и режимом только добавления. Это эффективный инструмент выявления нарушений:

  • Вы можете доказать, когда что-либо было подписано
  • Злоумышленник, укравший идентификационные данные, не может подписать что-либо тайно — событие будет записано в общедоступный журнал
  • Аномальные подписи (неожиданная идентификация, необычное время) становятся обнаружимыми

Прозрачность превращает незаметную компрометацию в наблюдаемое свидетельство.

SLSA: уровни целостности сборки

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

  • L1 — сведения о происхождении существуют и задокументированы
  • L2 — подписанные сведения о происхождении от размещенной службы сборки
  • L3 — усиленные изолированные сборки; сведения о происхождении невозможно подделать даже сотруднику конвейера

SLSA — это план развития: выберите целевой уровень и устраните пробелы.

Аттестации происхождения сборки

Аттестация происхождения — это подписанное заявление с описанием процесса сборки артефакта: фиксация исходного кода, идентификация сборщика, параметры сборки и входные данные. Формат in-toto стандартизирует такие сведения.

# generate and attach SLSA provenance for an image
cosign attest --type slsaprovenance \
  --predicate provenance.json \
  my-registry/my-app@sha256:1d5283...

# verify provenance matches expected source repo
cosign verify-attestation --type slsaprovenance my-registry/my-app@sha256:1d5283...

Проверка подписей при допуске

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

  • Контроллеры политик проверяют подписи cosign до запуска пода
  • Отклоняют образы, подписанные неожиданными идентификационными данными
  • Требуют сведений о происхождении, указывающих на утвержденный репозиторий исходного кода

Это замыкает цепочку: ненадежные артефакты никогда не запускаются.

Подписание зависимостей на ранних этапах

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

  • Происхождение npm связывает опубликованный пакет с его фиксацией исходного кода и запуском CI
  • Базовые образы контейнеров всё чаще поставляются с подписями cosign
  • Реестры языковых пакетов проводят пробную проверку на основе Sigstore

Отдавайте предпочтение зависимостям с проверяемыми сведениями о происхождении и проверяйте их во время установки, если это поддерживается.

Проверка прежде всего

Практичная стратегия подписания многоуровневая и предусматривает проверку от начала до конца:

  • Закрепляйте входные данные по дайджесту
  • Подписывайте артефакты без ключей и прикрепляйте SBOM и аттестации происхождения
  • Записывайте всё в журнал прозрачности
  • Обеспечивайте проверку при развертывании с помощью политики допуска

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

Быстрая проверка: подписание без ключей

Объясните, почему подписание без ключей повышает безопасность цепочки поставок.

Повторение: подписание зависимостей и артефактов

Вы научились подтверждать происхождение и обеспечивать его проверку.

  • Закрепляйте артефакты по дайджесту, а не по изменяемым тегам
  • Цифровые подписи обеспечивают целостность и подлинность; сложность заключается в управлении ключами
  • Sigstore + cosign обеспечивают подписание без ключей с общедоступным журналом прозрачности Rekor
  • SLSA оценивает целостность сборки; аттестации происхождения фиксируют способ сборки артефактов
  • Политики допуска отклоняют неподписанные и ненадежные объекты во время развертывания

Далее: усиление защиты конвейера CI/CD, создающего эти артефакты.

Часто задаваемые вопросы

Урок «Подпись зависимостей и артефактов» бесплатный?

Да — полный текст урока «Подпись зависимостей и артефактов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.

Чему я научусь в уроке «Подпись зависимостей и артефактов»?

Проверка происхождения с помощью SLSA и Sigstore Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cyber Security Academy?

Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Подпись зависимостей и артефактов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cyber Security Academy?

Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Угрозы цепочке поставок
  2. Перечень компонентов программного обеспечения (SBOM)
  3. Подпись зависимостей и артефактов
  4. Защита конвейеров CI/CD
← Назад к Cyber Security Academy