1. 14:00 17/08/2026
Trong nhiều hệ thống, một trong những rủi ro dễ bị bỏ qua không nằm ở lỗ hổng phần mềm mà ở các “bí mật” bị lưu sai chỗ: khóa API, mật khẩu cơ sở dữ liệu, token truy cập, chứng chỉ hoặc tệp .env. Chỉ một lần đưa nhầm thông tin này lên kho mã, nhật ký build hay công cụ trao đổi nội bộ cũng có thể mở đường cho truy cập trái phép.
Tình huống thường gặp là lập trình viên tải tệp cấu hình lên Git để “chạy thử cho nhanh”. Sau đó tệp được xóa khỏi phiên bản mới, nhưng dữ liệu vẫn có thể còn trong lịch sử commit, bản sao cục bộ, bộ nhớ đệm của hệ thống CI/CD hoặc các bản fork. Một trường hợp khác là pipeline in toàn bộ biến môi trường khi kiểm tra lỗi, khiến token xuất hiện trong log mà nhiều người có quyền đọc.
Cách xây dựng quy trình an toàn hơn
1) Phân loại và lập danh mục bí mật
Xác định ứng dụng nào đang sử dụng khóa nào, ai là chủ sở hữu, thời hạn và mức độ ảnh hưởng nếu bị lộ. Không nên để một tài khoản dùng chung cho nhiều môi trường hoặc nhiều dịch vụ.
2) Đưa bí mật ra khỏi mã nguồn
Dùng secret manager hoặc kho bí mật tích hợp với nền tảng triển khai để cấp giá trị khi ứng dụng khởi chạy. Tệp cấu hình mẫu chỉ nên chứa tên biến, chẳng hạn DATABASE_URL hoặc PAYMENT_TOKEN, không chứa giá trị thật. Môi trường phát triển có thể dùng khóa riêng với quyền hạn tối thiểu.
3) Ưu tiên thông tin xác thực ngắn hạn
Token cho pipeline nên có phạm vi hẹp, thời gian sống ngắn và chỉ được cấp cho đúng công việc cần thực hiện. Tài khoản triển khai không nên có quyền quản trị toàn bộ hệ thống nếu chỉ cần cập nhật một dịch vụ.
4) Kiểm tra trước khi mã được hợp nhất
Thiết lập hook tại máy lập trình và công cụ quét bí mật trong quy trình CI. Khi phát hiện chuỗi đáng ngờ, pipeline nên chặn việc hợp nhất thay vì chỉ gửi cảnh báo. Đồng thời, cấu hình che giá trị bí mật trong log và tránh in biến môi trường khi chẩn đoán lỗi.
Nếu nghi ngờ bí mật đã bị lộ, đừng chỉ xóa dòng mã đó. Hãy thu hồi hoặc vô hiệu hóa khóa trước, kiểm tra nhật ký sử dụng, tạo khóa thay thế, cập nhật nơi phụ thuộc và ghi lại thời điểm, phạm vi xử lý. Xóa khỏi lịch sử Git chỉ là bước dọn dẹp; nó không thể thay thế việc thu hồi vì bản sao có thể đã tồn tại ở nơi khác.
Một danh sách kiểm tra thực dụng gồm: không lưu bí mật thật trong repository, phân quyền theo môi trường, che log, quét tự động, đặt hạn sử dụng, kiểm thử quy trình rotation và diễn tập tình huống lộ khóa. Mục tiêu không phải là tin rằng bí mật sẽ không bao giờ bị lộ, mà là giảm khả năng lộ và rút ngắn thời gian vô hiệu hóa khi sự cố xảy ra.