TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1343 1.54K
День 1086. #ЗаметкиНаПолях
Защитите Контейнеры с Помощью Подписи в GitHub Actions
Большинство контейнеров, доступных сегодня, уязвимы для атак цепочки поставок, потому что они могут быть опубликованы только с помощью простого ключа API. В случае утечки этого ключа злоумышленник может легко опубликовать законно выглядящий контейнер, который на самом деле содержит вредоносное ПО. Один из лучших способов защитить пользователей от таких атак — подписать образ во время создания.

GitHub является одним из основателей Open Software Security Foundation (OpenSSF), отраслевой группы, занимающейся созданием решений с открытым исходным кодом для защиты разработчиков от угроз безопасности. Один из проектов, спонсируемых OpenSSF, — это sigstore, который позволяет разработчикам безопасно создавать, распространять и проверять подписанные артефакты ПО.

Теперь поддержка sigstore интегрирована в стартовый рабочий процесс GitHub Actions для подписи образов контейнеров. Использование этого рабочего процесса даёт вашим пользователям уверенность в том, что образы контейнеров, полученные ими из их реестра контейнеров, являются надёжным кодом, созданным и опубликованным вами.

Для подписи контейнеров используется инструмент cosign. Он поддерживает несколько типов ключей подписи, а также добавление аннотаций вида ключ-значение к подписи.

Предположим, что у вас есть ключ, сгенерированный с помощью команды
cosign generate-key-pair
который вы сохранили в секретах репозитория GitHub Actions под именем SIGNING_SECRET. Подписать контейнер в рабочем процессе можно, выполнив что-то вроде:
...

jobs:
build:
steps:
# ... шаги сборки

- uses: sigstore/cosign-installer@main
- name: Write signing key to disk (only needed for `cosign sign --key`)
run: echo "${{ secrets.SIGNING_SECRET }}" > cosign.key

- name: Sign container image
run: |
cosign sign --key cosign.key \
-a "repo=${{ github.repository }}" \
-a "workflow=${{ github.workflow }}" \
-a "ref=${{ github.sha }}" \
ghcr.io/your-org/your-repo:some-tag
env:
COSIGN_PASSWORD: ""

Заметьте, что в подпись добавлены аннотации репозитория, рабочего процесса и ссылки на коммит. Вот и всё.

Затем проверить подпись после получения образа можно с помощью команды:
cosign verify --key cosign.pub ghcr.io/your-org/your-repo:some-tag

А используя инструменты fulcio и Rekor от sigstore вы можете подписывать свои образы контейнеров с помощью токена OIDC, предоставленного GitHub, без необходимости предоставления и поддержки собственного закрытого ключа.

Источник: https://github.blog/2021-12-06-safeguard-container-signing-capability-actions/
  • 👍 4
More from @netdeveloperdiary
  1. Oct 15, 2026Post #3374
  2. Oct 14, 2026Post #3373
  3. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  4. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  5. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →