⚓ Как защитить репозиторий Git с помощью подписанных коммитов и меток |

⚓ Как защитить репозиторий Git с помощью подписанных коммитов и меток

Мануал

Репозитории Git хранят ценный исходный код и используются для создания приложений, работающих с конфиденциальными данными.

Если злоумышленнику удастся скомпрометировать учетную запись GitHub с уязвимым репозиторием, он сможет перенести вредоносные коммиты прямо на производство.

Подписанные коммиты помогают избежать этого.

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

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

После создания вы должны добавить ключ подписи как в свой профиль GitHub, так и в локальный клиент Git.

Подписанные коммиты обеспечивают дополнительный уровень безопасности, гарантируя, что коммит не был подделан, и, что более важно, что он исходит от доверенного источника, который владеет ключом GPG и имеет право доступа к аккаунту GitHub.

Чтобы отправить коммиты в репозиторий, который разрешает только подписанные коммиты, злоумышленник должен иметь возможность скомпрометировать закрытый ключ GPG жертвы, что обычно означает получение доступа ко всему компьютеру, а не только к учетной записи GitHub.

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

Настройка нового ключа GPG

Сначала вам нужно будет создать новый ключ GPG, используемый для подписи, а затем сообщить о нем вашему Git-клиенту и GitHub.

Для создания ключа вам понадобится команда gpg, установленная в вашей системе.

Она должна быть установлена по умолчанию, но если ее нет, вы можете получить ее из менеджера пакетов. Затем вы можете сгенерировать новый ключ:

gpg --full-generate-key

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

Если вы хотите, чтобы ваш адрес был приватным, вы можете использовать адрес “no-reply” для вашей учетной записи GitHub.

Затем перечислите ключи и экспортируйте блок открытых ключей для только что созданного идентификатора ключа:

gpg --list-secret-keys
gpg --armor --export [keyID]

Далее мы добавим его в учетную запись GitHub.

В настройках пользователя нажмите “SSH and GPG Keys,” и добавьте новый ключ GPG.

Здесь вы также можете включить режим Vigilant, который будет помечать коммиты на GitHub, не использующие эти ключи, как непроверенные.

Задайте имя и вставьте блок открытого ключа, который вы экспортировали с помощью gpg –export.

Далее нужно сообщить локальному Git-клиенту о вашем ключе.

Если вы используете Git-клиент с графическим интерфейсом, например GitKraken, вы сможете просто импортировать его, но в противном случае вам придется сделать это из командной строки.

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

Установите user.signingkey в идентификатор ключа GPG, который вы использовали для экспорта.

git config --global user.signingkey [keyID]

Затем вам надо указать Git’у подписывать все коммиты по умолчанию.

При желании это можно настроить для отдельных репозиториев:

git config --global commit.gpgsign true

В противном случае вы можете использовать флаг -S для подписания коммитов вручную.

Обеспечение выполнения подписанных коммитов с помощью защиты веток

Правила защиты веток накладывают ограничения и рекомендации на определенные ветви в вашем репозитории.

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

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

Создать новое правило защиты веток легко на вкладке “Branches” в настройках репозитория.

Далее установить фильтр на “*”, чтобы включить все ветки.

Затем выберите “Require signed commits”.

С этого момента все коммиты, перемещаемые во все ветки этого репозитория, должны содержать подписи GPG.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий