Подписанные коммиты¶
Когда вы добавляете цифровую подпись к своему коммиту, вы обеспечиваете дополнительную гарантию того, что коммит был создан именно вами, а не кем-то, кто выдаёт себя за вас. Цифровая подпись — это криптографический результат, используемый для проверки подлинности.
Важно понимать разницу между подписанными и верифицированными коммитами:
- Подписанные коммиты имеют прикреплённую криптографическую подпись, которая подтверждает целостность и подлинность коммита. Подпись создаётся с помощью закрытого ключа.
- Верифицированные коммиты имеют подписи, которые AppSec.Code может проверить по известному открытому ключу, хранящемуся в профиле пользователя AppSec.Code.
Если AppSec.Code может подтвердить личность коммиттера с помощью открытого ключа, коммит отмечается как Verified (Верифицирован) в интерфейсе AppSec.Code.
Поля «коммиттер» и «автор» в Git различаются. Автор пишет коммит, а коммиттер применяет его. Подписание коммита подтверждает только личность коммиттера.
AppSec.Code проверяет подписи на коммитах и тегах. Поддерживаются следующие методы:
- SSH-ключ: коммиты и теги.
- GPG-ключ: только коммиты.
- Сертификат X.509: коммиты и теги.
Проверка коммитов¶
Чтобы просмотреть коммиты для мерж-реквеста или всего проекта и убедиться, что они подписаны:
- На верхней панели выберите Поиск или перейдите к вашему проекту.
-
Для просмотра коммитов:
- Для проекта: выберите Code > Commits.
- Для мерж-реквеста: в левой боковой панели выберите Code > Merge requests, затем выберите нужный мерж-реквест и нажмите Commits.
-
Найдите коммит, который хотите проверить. В зависимости от статуса верификации подписи, подписанные коммиты отображают значок 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-подпись. |