Cách cấp quyền truy cập cơ sở dữ liệu an toàn cho các Tác nhân AI

Việc cấp quyền truy cập cơ sở dữ liệu production cho một tác nhân AI là một rủi ro cực lớn. Một người dùng chỉ đọc (read-only) là chưa đủ. Một tác nhân không thể đánh giá được ý định hoặc độ nhạy cảm của dữ liệu. Nếu bạn cấp quyền ghi, một cuộc tấn công prompt injection có thể biến một tác nhân hữu ích thành một tác nhân mang tính hủy diệt.

Bạn cần hai lớp bảo vệ để giữ an toàn cho dữ liệu của mình.

Lớp 1: Kiểm soát Cơ sở dữ liệu Tĩnh Đây là các thiết lập cơ bản bên trong công cụ cơ sở dữ liệu của bạn. Hãy sử dụng chúng trước tiên:

  • Vai trò đặc quyền tối thiểu (Least-privilege roles): Tạo một vai trò cụ thể cho tác nhân. Đừng bao giờ sử dụng tài khoản admin.
  • Bản sao chỉ đọc (Read replicas): Chuyển các tác nhân phân tích sang một bản sao để chúng không làm chậm hệ thống production.
  • Bảo mật cấp hàng (Row-level security): Sử dụng các chính sách để giới hạn những dữ liệu mà tác nhân có thể thấy.
  • Thời gian chờ câu lệnh (Statement timeouts): Ngăn chặn các truy vấn chạy quá mức làm treo máy chủ của bạn.
  • Danh sách cho phép (Allowlists): Giới hạn các kết nối tới các máy chủ (hosts) cụ thể.

Lớp 2: Lớp kiểm soát Runtime (Runtime Control Plane) Các kiểm soát tĩnh chỉ kiểm tra danh tính. Chúng không thể ngăn chặn một tác nhân trích xuất dữ liệu trái phép hoặc thực hiện một chỉ dẫn độc hại. Bạn cần một lớp kiểm soát nằm giữa tác nhân và cơ sở dữ liệu.

Lớp này phải thực hiện bốn việc:

  • Phân loại (Classify): Gán nhãn mọi truy vấn là đọc, ghi, hoặc thay đổi schema.
  • Thực thi mặc định từ chối (Enforce default-deny): Chặn mọi thứ trừ khi bạn cho phép một cách rõ ràng.
  • Kiểm soát các hành động rủi ro (Gate risky actions): Yêu cầu con người phê duyệt các lệnh xóa hàng loạt hoặc thay đổi schema.
  • Ghi lại mọi thứ (Record everything): Lưu giữ một nhật ký không thể thay đổi (immutable log) về mọi hành động và mọi sự phê duyệt.

Tại sao điều này lại quan trọng: Nếu bạn đặt các quy tắc vào trong prompt, tác nhân có thể phớt lờ chúng. Một lớp kiểm soát nằm ngoài ngữ cảnh của tác nhân. Nó nhìn thấy truy vấn thực tế, chứ không phải kế hoạch của tác nhân. Điều này bảo vệ bạn khỏi prompt injection.

Sử dụng danh sách kiểm tra này để truy cập an toàn:

  • Vai trò riêng biệt cho mỗi tác nhân.
  • Sử dụng read replicas để khám phá dữ liệu.
  • Triển khai bảo mật cấp hàng (row-level security).
  • Thiết lập thời gian chờ câu lệnh (statement timeouts).
  • Điều hướng toàn bộ lưu lượng qua một lớp kiểm soát (control plane).
  • Sử dụng chính sách mặc định từ chối (default-deny).
  • Yêu cầu sự phê duyệt của con người cho các tác vụ rủi ro cao.
  • Duy trì nhật ký kiểm tra không thể thay đổi (immutable audit log).

Các kiểm soát tĩnh thực hiện nhiệm vụ của chúng. Lớp kiểm soát thực hiện phần còn lại. Bạn cần cả hai.

Source: https://dev.to/maxime_dalessandro_28171d/how-to-give-an-ai-agent-safe-access-to-your-production-database-1ami

Optional learning community: https://t.me/GyaanSetuAi