
Câu trả lời ngắn: Hãy coi API key như một credential có thể tạo chi phí và quyền truy cập. Không đặt khóa trong trình duyệt, ứng dụng mobile, mã nguồn hoặc ticket công khai. Tạo khóa riêng theo người dùng hoặc môi trường, lưu bằng biến môi trường hay secret manager, giới hạn quyền và phạm vi mạng, theo dõi usage, đặt trần chi phí, xoay vòng định kỳ và thu hồi ngay khi nghi ngờ bị lộ.
Bài viết này áp dụng cho API của các nhà cung cấp AI nói chung. Tài liệu OpenAI, Google API Console và Anthropic được kiểm tra ngày 18/10/2026; tên menu và khả năng cụ thể có thể khác theo nhà cung cấp.
API key là gì và vì sao phải bảo vệ?
API key là chuỗi dùng để xác thực request đến một dịch vụ. Tùy nhà cung cấp, khóa có thể gắn với tài khoản, project, quota, billing hoặc quyền gọi model. Người có khóa có thể gửi request bằng hạn mức của bạn, làm tăng chi phí, làm cạn quota hoặc truy cập dữ liệu mà ứng dụng được phép truy cập.
API key không phải mật khẩu duy nhất trong mọi kiến trúc, nhưng cách xử lý nên tương tự secret: chỉ cấp cho nơi cần, không chia sẻ, không log ra màn hình, không commit vào Git và có quy trình thu hồi. OpenAI cũng khuyến nghị khóa riêng cho từng thành viên, ngày hết hạn, lưu trữ an toàn, theo dõi usage và kiểm soát mạng.

8 lớp bảo vệ API key cho đội ngũ nhỏ
1. Giữ khóa ở backend, không ở frontend
Trình duyệt và ứng dụng mobile của người dùng đều nằm ngoài vùng kiểm soát của bạn. Nếu nhúng khóa vào JavaScript, app package hoặc request phía client, người dùng có thể xem, sao chép hoặc tự gửi request. Thay vào đó, client gọi backend của bạn; backend xác thực người dùng, kiểm tra hạn mức rồi gọi API AI bằng secret được giữ ở server.
2. Dùng biến môi trường hoặc secret manager
Trong môi trường đơn giản, biến môi trường tốt hơn hard-code trong file mã nguồn. Với production, hãy dùng secret manager của cloud hoặc KMS có mã hóa, phân quyền và audit log. Nếu dùng file .env ở máy local, thêm file vào .gitignore và kiểm tra để nó không bị đóng gói vào artifact.

3. Không commit hoặc gửi khóa vào nơi công khai
Không đặt API key trong repository, issue, chat nhóm, ảnh chụp màn hình, log hoặc ticket hỗ trợ. Repository private không phải vùng an toàn tuyệt đối vì vẫn có thể bị chia sẻ nhầm hoặc bị xâm nhập. Bật secret scanning nếu nền tảng source control hỗ trợ và thêm bước quét vào CI/CD.
4. Tách khóa theo người, môi trường và mục đích
Không dùng một khóa duy nhất cho cả developer, staging và production. Khóa riêng giúp truy vết usage và thu hồi một luồng mà không làm ngừng toàn bộ hệ thống. Với team, mỗi thành viên nên có khóa riêng hoặc cơ chế service account phù hợp thay vì gửi chung một chuỗi qua chat.
5. Giới hạn quyền, API và phạm vi mạng
Chỉ bật các API mà khóa cần dùng. Nếu nhà cung cấp hỗ trợ, giới hạn theo IP, referrer, app hoặc project. Quyền càng hẹp thì thiệt hại tiềm ẩn càng nhỏ khi khóa bị lộ. Google API Console khuyến nghị kết hợp application restrictions với API restrictions; hãy kiểm tra khả năng tương ứng của nhà cung cấp AI bạn dùng.
6. Đặt hạn sử dụng và xoay vòng
Tạo khóa mới trước khi khóa cũ hết hạn, cập nhật ứng dụng, kiểm thử rồi thu hồi khóa cũ. Đừng chờ đến lúc có sự cố mới nghĩ về rotation. Chu kỳ cụ thể tùy rủi ro; với môi trường nhạy cảm, có thể dùng khóa sống ngắn hoặc workload identity nếu nhà cung cấp hỗ trợ.

7. Theo dõi usage, log và chi phí
Đặt cảnh báo usage và giới hạn chi tiêu theo project nếu có. Theo dõi request tăng bất thường, model hoặc endpoint lạ, lỗi xác thực và traffic từ IP không quen thuộc. Cảnh báo chỉ là tín hiệu; nếu nhà cung cấp có hard cap, hãy cân nhắc tác động khi hệ thống đạt giới hạn.
8. Có runbook xử lý khi khóa bị lộ
Runbook tối thiểu gồm: xác định khóa và phạm vi ảnh hưởng, thu hồi hoặc vô hiệu hóa, tạo khóa thay thế, cập nhật secret trong production, kiểm tra log và chi phí, quét repository, ghi nhận thời điểm sự cố, rồi xem lại quyền và pipeline. Không chỉ xóa chuỗi khỏi commit mới; lịch sử Git, log và bản build cũ cũng có thể còn chứa khóa.
Luồng kiến trúc nên dùng cho ứng dụng AI
- Client gửi request đến endpoint backend của doanh nghiệp.
- Backend xác thực người dùng, kiểm tra quota và lọc dữ liệu đầu vào.
- Backend đọc API key từ secret manager hoặc biến môi trường đã bảo vệ.
- Backend gọi nhà cung cấp AI, giới hạn timeout, model, token và retry.
- Backend loại bỏ dữ liệu nhạy cảm khỏi log rồi trả kết quả cần thiết cho client.
Cách này không làm ứng dụng tự động an toàn. Bạn vẫn cần xác thực, phân quyền, chống lạm dụng endpoint, kiểm soát prompt và dữ liệu gửi ra ngoài. Với workflow AI có quyền hành động, hãy đọc thêm bài AI Agent cho SME để thiết kế quyền hạn và human-in-the-loop.
Những dấu hiệu API key có thể đã bị lộ
- Usage tăng đột ngột ngoài giờ hoặc ngoài vùng triển khai.
- Hóa đơn, quota hoặc số request cao hơn dự báo.
- Khóa xuất hiện trong commit, log, bundle frontend, issue hoặc ảnh chụp.
- Request đến model, endpoint hoặc IP không thuộc workflow.
- Nhà cung cấp gửi cảnh báo secret scanning hoặc credential misuse.
Nếu có một dấu hiệu đáng tin, hãy xử lý như sự cố thật. Đừng chờ xác nhận tuyệt đối trong khi khóa vẫn còn hiệu lực.
FAQ
Có thể đặt API key trong biến JavaScript của frontend không?
Không nên. Biến môi trường trong quá trình build frontend vẫn có thể bị nhúng vào bundle mà người dùng tải xuống. API key cần nằm ở backend hoặc một lớp proxy có kiểm soát.
Đổi tên biến môi trường có làm khóa an toàn hơn không?
Không. Tên biến chỉ là cách tham chiếu; giá trị khóa vẫn phải được bảo vệ. An toàn đến từ vị trí lưu trữ, quyền truy cập, phạm vi sử dụng, rotation và giám sát.
Nếu đã commit API key thì chỉ cần xóa commit đó chứ?
Không. Hãy thu hồi hoặc xoay vòng khóa trước, sau đó làm sạch lịch sử repository, log và artifact theo quy trình của đội ngũ. Xóa dòng ở commit mới không làm khóa cũ mất hiệu lực.
Kết luận
Bảo vệ API key là bài toán vận hành chứ không chỉ là giấu một chuỗi trong code. Với đội ngũ nhỏ, thứ tự ưu tiên là giữ khóa ở backend, dùng secret manager hoặc biến môi trường, tách môi trường, giới hạn quyền, đặt cap chi phí, quét secret, theo dõi usage và luyện runbook thu hồi. Khi đưa AI vào quy trình doanh nghiệp, các lớp này nên được thiết kế ngay từ prototype thay vì chờ đến production.
Nguồn tham khảo
Đã kiểm tra ngày 18/10/2026: