Comments 19
Именно поэтому я подписываю ВСЕ свои коммиты без исключения.
Подпись не мешает злоумышленнику коммитить под вашим именем. А если вы сами злоумышленник, то подписывать вирус весьма глупо. В любом случае, подпись никак не защитит вас от коммитов вирусов от вашего имени.
Получается, что вы подписываете коммиты зря. Получается, что подпись нужна только, чтобы подтвердить свои авторские права над репозиторием. Но сами по себе авторские права бесполезны - нужно самостоятельно отслеживать их нарушение и идти в суд. Короче говоря, подписывать коммиты смысла особого нет, если только вы не собираетесь продавать код от своего имени.
Можно запретить пушить в репозитории коммиты без подписи.
Зачем? Можно ведь сразу пушить по белому списку.
Какую модель угроз вы рассматриваете?
amend коммита с утекшими через сторонний канал данными авторизации (например логин/пароль), но в отсутствии данных для аутентификации (ключа для подписи коммита) будет заметен по отсутствующей подписи.
Почему бы тогда не защитить данные авторизации наравне с данными аутентификации? Короче, почему бы не пушить по ключу? Зачем бороться с симптомами, когда можно нивелировать причину?
Если вы верите в существование абсолютной защиты, то у меня для вас плохие новости. Безопасность - это всегда борьба щита и меча. Если есть возможность использовать несколько факторов - используй, потому что это покроет большую поверхность возможных атак. А ещё складывать яйца в одну корзину всегда было более рискованным занятием.
Согласен, абсолютной защиты не бывает. Но на практике решающим фактором оказывается эргономика.
Аналогично можно привести пример: пользователь применяет специальную программу для хранения и автоматического дописывания десяти случайных цифр к вводимым паролям. Теоретически это даже повышает защиту, но по факту эффект слабый, а трудозатраты большие - нецелесообразно.
Ну One Time коды в дополнение к основной авторизации дают огромный буст безопасности, в отличии например от СМС для второго фактора. Но удобство у них, конечно, так себе.
С другой стороны подписывание коммитов настраевается один раз по абсолютно тупой инструкции и не требует от разработчика дальнейших телодвижений.
Короче говоря, подписывать коммиты смысла особого нет, если только вы не собираетесь продавать код от своего имени.
А возможность получить бэкдор в популярном opensource продукте после amend вашего коммита от вашего имени это достаточные последствия или ещё нет?
А что, бэкдор от чужого имени работает как-то иначе? Или что мне мешает отказаться от этого комммта, ссылаясь на отсутствие подписи?
Если модератор репозитория желает аутентифицировать всех участников, то он делает подпись обязательной для всех. Если же это частная инициатива, то она не имеете никакой силы, и не помешает другим участникам внести бэкдор
Бэкдор от чужого имени не вредит вашей репутации, если она у вас имеется. Если репутации нет, то плевать, конечно.
PS: Что-то вам карму заминусили. Плюсанул до нуля, чтоб у вас не было проблем с продолжением дискуссии.
Бэкдор от чужого имени не вредит вашей репутации, если она у вас имеется.
Но ведь злоумышленник может зафлудить коммиты от моего имени, и тогда администратору придется фильтровать коммиты "с галочкой". Мне кажется, не каждый участник будет совершать подобные сложные действия.
С другой стороны, тогда подписывать коммиты в других, незначительных репозиториях также остаётся бессмысленным.
PS: Что-то вам карму заминусили. Плюсанул до нуля, чтоб у вас не было проблем с продолжением дискуссии.
Спасибо, очень мило.
Не-не-не. Следить за подписями это не работа администратора репы - ему как раз всё равно на вашу репутацию. Ваши коммиты без подписи должны бросаться в глаза именно вам и вы сами должны проверить, что там внутри. Репутация разработчика - это забота самого разработчика.
Т.о. можно подвести итог моих разъяснений: подпись коммитов - это инструмент разработчика, позволяющий ему обнаружить злонамеренные действия, совершённые от его имени злоумышленником и своевременно начать процесс купирования последствий совместно с ментейнерами репозитория, не дожидаясь катастрофических последствий для пользователей и репутации самого разработчика.
С другой стороны подписывание коммитов настраевается один раз по абсолютно тупой инструкции и не требует от разработчика дальнейших телодвижений.
Да, но
Ваши коммиты без подписи должны бросаться в глаза именно вам и вы сами должны проверить, что там внутри.
приводит к необходимости ежедневно тратить время на проверку галочек. Разумеется, можно написать скрипт и поставить его в крон, но тогда можно сделать еще проще: сопоставить локальные коммиты с серверными.
Т.о. можно подвести итог моих разъяснений
Я согласен, инструмент существует и он весьма неплохой в некой своей узкоспециализированной области. Но обычным пользователям (как автору) он не интересен, потому что жутко неэффективен. А заставлять свои подчинённых подписывать коммиты - это из серии стикера на мониторе с длинным сложным паролем.
приводит к необходимости ежедневно тратить время на проверку галочек.
Ну идея не в том, чтобы проверять ежедневно все свои коммиты, а в том, чтобы иметь возможность "зацепиться" за аномально не подписанный коммит, когда проходишь мимо (например, анализируя историю коммитов, возможно в связи с совсем другой задачей). Это просто дополнительный маркер для того, чтобы обратить своё внимание.
А заставлять свои подчинённых подписывать коммиты - это из серии стикера на мониторе с длинным сложным паролем.
Аналогия со стикером на мониторе в корне не верна, т.к. стикер гарантированно снижает уровень безопасности, а подпись коммита гарантированно не снижает его.
Тем не менее заставлять, конечно же, глупо и бессмысленно. Это как заставлять человека учить что-то: от его учёбы как таковой окружающим ни холодно, ни жарко, а, если он не будет применять полученные знания, то всё в пустую.
Удобнее использовать SSH подпись, имхо. Поддерживается также всеми сервисами.
К сожалению, иногда приходиться кушать кактус, в котором больше 10 лет не могут реализовать ни какие подписи вообще: https://jira.atlassian.com/browse/BCLOUD-3166
Горячо приветствую популяризацию подписывания коммитов. У себя в команде из 20 человек мне удалось сагитировать целого одного, и теперь нас таких уже двое - это большой успех! Звучит как сарказм, но я серьёзно очень рад даже такому результату, потому что несмотря на исключительно подробные инструкции на внутренней вики и неоднократные упоминания тут и там, почти никто не проникся идеей более надёжной верификации авторства коммитов. А принуждать к этому в административном порядке с угрозой расстрела не хотелось бы.
Большое спасибо за статью. Очень жаль, что тема подписи коммитов недостаточно популярна, как и осознание потенциальных рисков при работе без подтверждения авторства. Также крайне не рекомендую создавать бессрочные ключи.
Подпись коммитов в git при помощи gpg