Перейти к содержанию

Подписанные коммиты

Когда вы добавляете цифровую подпись к своему коммиту, вы обеспечиваете дополнительную гарантию того, что коммит был создан именно вами, а не кем-то, кто выдаёт себя за вас. Цифровая подпись — это криптографический результат, используемый для проверки подлинности.

Важно понимать разницу между подписанными и верифицированными коммитами:

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

Если AppSec.Code может подтвердить личность коммиттера с помощью открытого ключа, коммит отмечается как Verified (Верифицирован) в интерфейсе AppSec.Code.

Поля «коммиттер» и «автор» в Git различаются. Автор пишет коммит, а коммиттер применяет его. Подписание коммита подтверждает только личность коммиттера.

AppSec.Code проверяет подписи на коммитах и тегах. Поддерживаются следующие методы:

  • SSH-ключ: коммиты и теги.
  • GPG-ключ: только коммиты.
  • Сертификат X.509: коммиты и теги.

Проверка коммитов

Чтобы просмотреть коммиты для мерж-реквеста или всего проекта и убедиться, что они подписаны:

  1. На верхней панели выберите Поиск или перейдите к вашему проекту.
  2. Для просмотра коммитов:

    • Для проекта: выберите Code > Commits.
    • Для мерж-реквеста: в левой боковой панели выберите Code > Merge requests, затем выберите нужный мерж-реквест и нажмите Commits.
  3. Найдите коммит, который хотите проверить. В зависимости от статуса верификации подписи, подписанные коммиты отображают значок Verified (Верифицирован) или Unverified (Не верифицирован).

Неподписанные коммиты не отображают значок.

Чтобы просмотреть детали подписи коммита, нажмите на Verified или Unverified — отобразится отпечаток или идентификатор ключа.

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

Проверка коммитов, созданных через веб-интерфейс

AppSec.Code использует SSH для подписания коммитов, созданных через веб-интерфейс. Для локальной проверки таких коммитов получите публичный ключ AppSec.Code для подписания веб-коммитов через API веб-коммитов.

Принудительное использование подписанных коммитов с помощью push-правил

Вы можете требовать подписанные коммиты во всех ваших проектах с помощью push-правил. Push-правило «Отклонять неподписанные коммиты» (Reject unsigned commits) предотвращает отправку любых неподписанных коммитов в репозиторий, помогая организациям поддерживать целостность кода и соответствовать требованиям комплаенса.

Устранение неполадок

Исправление проблем с верификацией подписанных коммитов

Процесс верификации коммитов, подписанных GPG-ключами или сертификатами X.509, может завершиться неудачей по нескольким причинам:

Значение Описание Возможные исправления
UNVERIFIED Подпись коммита недействительна. Подпишите коммит действительной подписью.
SAME_USER_DIFFERENT_EMAIL GPG-ключ, использованный для подписания коммита, не содержит email коммиттера, но содержит другой действительный email для этого коммиттера. Измените коммит, чтобы использовать email, совпадающий с GPG-ключом, или обновите GPG-ключ, добавив нужный email.
OTHER_USER Подпись и GPG-ключ действительны, но ключ принадлежит другому пользователю, а не коммиттеру. Измените коммит, используя правильный email, или используйте GPG-ключ, связанный с вашим пользователем.
UNVERIFIED_KEY Ключ, связанный с GPG-подписью, не имеет верифицированного email, связанного с коммиттером. Добавьте и верифицируйте email в своём профиле AppSec.Code, обновите GPG-ключ, добавив email, или измените коммит, используя другой email коммиттера.
UNKNOWN_KEY GPG-ключ, связанный с подписью коммита, неизвестен AppSec.Code. Добавьте GPG-ключ в свой профиль AppSec.Code.
MULTIPLE_SIGNATURES Для коммита обнаружено несколько GPG- или X.509-подписей. Измените коммит, чтобы использовать только одну GPG- или X.509-подпись.