Удаление конфиденциальных данных из репозитория AWS CodeCommit Git с помощью git-filter-repo

#git #amazon-web-services #aws-codecommit #git-filter-repo

#git #amazon-web-services #aws-codecommit #git-filter-repo

Вопрос:

Я обнаружил скрипт, в котором был пароль, и он был много лет назад передан для управления версиями в AWS CodeCommit. С тех пор был создан совершенно новый скрипт, который выполняет ту же работу без пароля, поэтому все, что мне нужно было сделать для «очистки», это сделать так, чтобы файл выглядел так, как будто его никогда не существовало, сохраняя при этом остальную историю репозиториев моей команды.

GitHub написал официальную документацию «Удаление конфиденциальных данных из репозитория», в которой разъясняется, какие данные вы не можете самостоятельно удалить из GitHub, но я не могу найти такую документацию в AWS CodeCommit.

Я решил попробовать использовать инструкции GitHub против CodeCommit в любом случае и посмотреть, как все прошло. Все прошло не слишком хорошо.

  1. Я полностью удалил c:my_repo их со своего жесткого диска и повторно клонировал из облака (заменив c:my_repo.gitconfig из резервной копии).
  2. MINGW64:/c/my_repo Я побежал. git filter-repo --invert-paths --path sub_folder/bad_script.java
  3. В проводнике Windows File Explorer я увидел, что файла больше нет c:my_reposub_folderbad_script.java .
  4. В SourceTree, в коммите, который sub_folder/bad_script.java был добавлен в репозиторий (назовите его 1234567890987654321 ), я увидел, что его больше нет в списке добавленных файлов. Отлично!
  5. В веб-консоли AWS CodeCommit я делал заметки о предыдущем состоянии — файл существовал, и в его теле был пароль по адресу:
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/refs/heads/main/--/sub_folder/bad_script.java?#
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/commit/1234567890987654321?region=my-region
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/1234567890987654321/--/sub_folder?region=my-region
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/0987654321234567890/--/sub_folder?region=my-region (коммит 987654321234567890 был более поздним, который не редактировал файл, но я нашел его таким образом, просмотрев дерево файлов этого коммита).
  6. Единственное, что я пропустил из инструкций GitHub, — это фиксация .gitignore файла перед отправкой, но я не думал, что это будет актуально, поскольку git-filter-repo удалил файл с моего жесткого диска.
  7. После исправления c:my_repo.gitconfig , чтобы снова указывать на AWS после того, как git-filter-repo удалил указатель MINGW64:/c/my_repo , я побежал git push origin --force --all .
  8. В веб-консоли AWS CodeCommit https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/refs/heads/main/--/sub_folder/bad_script.java?# пропал. Я получил PathDoesNotExistException заголовок с Could not find path sub_folder/bad_script.java; телом в виде большого красного сообщения об ошибке.
  9. Однако в веб-консоли AWSCodeCommit файл все еще существовал, и в его теле был пароль на оставшиеся три URL-адреса:
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/commit/1234567890987654321?region=my-region
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/1234567890987654321/--/sub_folder?region=my-region
    • https://console.aws.amazon.com/codesuite/codecommit/repositories/my_repo/browse/0987654321234567890/--/sub_folder?region=my-region
  10. Я снова полностью удалил c:my_repo свой жесткий диск и повторно клонировал его из облака (заменив c:my_repo.gitconfig из резервной копии), и файлы по-прежнему не отображаются в представлении истории SourceTree, поэтому я… думаете, это может быть просто проблемой AWS?

Кто-нибудь успешно удалил файл из истории CodeCommit? Есть ли шаги, которые мне нужно выполнить с сотрудниками AWS, например, GitHub, упомянутые в их документах для их сервиса? Есть ли что-то лучшее, что я могу сделать с моим подходом к очистке bad_script.java моей локальной копии репозитория — возможно, какой-то фатальный недостаток в шагах, которые я предпринял?