Как закрыть доступ к старым commit для разработчиков на ветке master?
разрабатывается веб-приложение, используем github.
Как разрабатываем:
разработчики тянут master, создают ветку с фичей, пушат ветку, в последствии я сливаю ветку в master.
Ранее в коде была зашита конфиденциальная информация (раскиданная по всему коду), которую перенесли в переменное окружение, чтобы у разработчиков не было к ней доступа.
Однако, разработчики до сих пор могут добраться до этих данных просто переключившись на коммит, в котором конфиденциальная информация ещё была зашита в коде.
Как не удалив историю коммитов в master предоставлять доступ разработчикам к актуальной версии приложения без доступа к коммитам содержащим конф. данные в коде?
То, что закоммичено, и тем более отправлено в GitHub, уже не является конфиденциальным. Вам в любом случае нужно перевыпустить токены и поменять пароли.
Максимум, что можно сделать, это создать новый репозиторий в котором история коммитов начинается с момента внедрения переменных окружения.
Как не удалив историю коммитов в master предоставлять доступ разработчикам к актуальной версии приложения без доступа к коммитам содержащим конф. данные в коде?
Раз уже данные скомпрометированы, то их нужно изменить (старые отозвать, новые выпустить).
А историю можно переписать, чтобы убрать ненужное.
Доступ к истории проекта закрывать нельзя. Это противоречит идеологии версионного контроля. В старых версиях кроме sensitive info могут быть знания по предметной области. Нам в разработке с одним банком очень помог анализ истории. По крайней мере мы поняли некоторые причины дефектов мультипоточки.
То что пароли и токены коммитились - это epic fail, но лучше их обновить чем поступать как тупо. Вы-же не хотите походить на пришельцев-бюрократов расы "вогонов" (из романа Дугласа Адамса) которые уничтожили планету Земля только потому что им надо было шоссе построить в космосе.