Mộc Viên's Blog Mộc Viên's Blog
Cách Xóa Thông Tin Nhạy Cảm Khỏi Kho Lưu Trữ Git Hoàn Toàn

Cách Xóa Thông Tin Nhạy Cảm Khỏi Kho Lưu Trữ Git Hoàn Toàn

Ngày đăng:

Cách Xóa Thông Tin Nhạy Cảm Khỏi Kho Lưu Trữ Git Hoàn Toàn

Việc vô tình đẩy các thông tin nhạy cảm như khóa API, mật khẩu vào kho lưu trữ Git có thể gây ra rủi ro bảo mật nghiêm trọng. Ngay cả khi bạn đã xóa các tệp này trong các commit sau, chúng vẫn có thể được truy cập thông qua lịch sử commit. Do đó, việc loại bỏ hoàn toàn các thông tin nhạy cảm khỏi lịch sử của kho lưu trữ Git là rất quan trọng.

Sử dụng lệnh filter-branch để xóa thông tin nhạy cảm

Git cung cấp lệnh filter-branch cho phép bạn viết lại lịch sử commit của kho lưu trữ, giúp loại bỏ các tệp chứa thông tin nhạy cảm. Các bước thực hiện như sau:

1. Sử dụng lệnh filter-branch để xóa tệp nhạy cảm khỏi lịch sử commit:

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch <ĐƯỜNG_DẪN_ĐẾN_TỆP_NHẠY_CẢM>" \
  --prune-empty --tag-name-filter cat -- --all

Trong đó:

git filter-branch: Dùng để viết lại lịch sử commit của Git.

--force: Bỏ qua một số kiểm tra an toàn.

--index-filter: Chỉ định một bộ lọc để sửa đổi chỉ mục của mỗi commit. Trong trường hợp này, bộ lọc là "git rm --cached --ignore-unmatch <ĐƯỜNG_DẪN_ĐẾN_TỆP_NHẠY_CẢM>".

--prune-empty: Xóa bất kỳ commit trống nào được tạo ra do việc xóa tệp.

--tag-name-filter cat: Giữ nguyên các thẻ (tags) sau khi viết lại lịch sử.

– --all: Áp dụng cho tất cả các nhánh và thẻ trong kho lưu trữ.

Lưu ý: Lệnh này có thể gây thay đổi lớn đến lịch sử của kho lưu trữ, vì vậy hãy chắc chắn rằng bạn hiểu rõ tác động của nó trước khi thực hiện.

2. Thêm tệp chứa thông tin nhạy cảm vào .gitignore:

Sau khi xóa tệp khỏi lịch sử, hãy thêm tệp đó vào tệp .gitignore để ngăn chặn việc vô tình đẩy lại nó lên kho lưu trữ:

echo "<ĐƯỜNG_DẪN_ĐẾN_TỆP_NHẠY_CẢM>" >> .gitignore
git add .gitignore
git commit -m "Thêm tệp nhạy cảm vào .gitignore"

3. Đẩy các thay đổi lên kho lưu trữ từ xa:

Sau khi thực hiện các thay đổi cục bộ, bạn cần đẩy chúng lên kho lưu trữ từ xa bằng cách sử dụng tùy chọn --force để ghi đè lịch sử:

git push origin --force

4. Đẩy các thẻ (tags) đã được cập nhật:

Để đảm bảo rằng các thẻ cũng được cập nhật và không chứa thông tin nhạy cảm, hãy đẩy lại tất cả các thẻ:

git push origin --force --tags

Sử dụng công cụ BFG Repo-Cleaner

Ngoài lệnh filter-branch, bạn có thể sử dụng công cụ BFG Repo-Cleaner để xóa thông tin nhạy cảm khỏi kho lưu trữ Git một cách nhanh chóng và dễ dàng hơn. Công cụ này cho phép bạn xóa các tệp hoặc thay thế nội dung nhạy cảm trong tệp bằng văn bản khác. Bạn có thể tham khảo tài liệu và trang tải xuống của BFG Repo-Cleaner để biết cách sử dụng chi tiết.

Kết luận

Việc vô tình đẩy thông tin nhạy cảm lên kho lưu trữ Git có thể gây ra rủi ro bảo mật nghiêm trọng. Sử dụng lệnh filter-branch hoặc công cụ BFG Repo-Cleaner, bạn có thể viết lại lịch sử commit của kho lưu trữ và loại bỏ hoàn toàn các thông tin nhạy cảm. Sau khi thực hiện, hãy thêm các tệp nhạy cảm vào .gitignore để ngăn chặn việc vô tình đẩy chúng lên kho lưu trữ trong tương lai.


Gần đây