безопасно хранить ключ развертывания (только для чтения) GitHub в частном репо - PullRequest
1 голос
/ 18 марта 2020

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

Хранение закрытых ключей в git - это плохая практика почти для всех время и фактический материал ключа могут быть перемещены в переменные среды, которые будут отображаться в AWS user-data / et c во время развертывания / обновления.

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

1 Ответ

1 голос
/ 19 марта 2020

Как правило, хранение учетных данных в хранилище небезопасно. Если кто-то получил снимок вашего хранилища (например, вы оставили каталог .git веб-сайта, доступный по HTTP, или кто-то получил тарбол), то злоумышленник может восстановить ключ. Теперь вместо только исторических версий хранилища злоумышленник может получить любые более новые версии на неопределенное будущее.

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

Кроме того, GitHub имеет сканирование учетных данных. Я не знаю, вычисляет ли он ключи S SH publi c из закрытых ключей, но вы можете обнаружить, что ваш ключ развертывания автоматически аннулируется и заносится в черный список, когда вы помещаете его в хранилище. Даже если этого не произойдет сейчас, GitHub может добавить поддержку для этого позже, и будущий pu sh может отозвать ключ.

Правильный способ сделать это, если вам нужно было сохранить эти учетные данные в хранилище, это хранить их в какой-то зашифрованной форме. Вы можете использовать gpg, чтобы зашифровать их с помощью ключевой фразы, и есть также некоторые специфичные для проекта c секретные методы хранения, например, для хранилищ, использующих Chef. Вы также можете использовать такое решение, как Vault, если оно лучше соответствует вашим потребностям.

...