row-level security là gì?
Row-level security (RLS) là tính năng cơ sở dữ liệu quyết định, từng dòng một, người dùng nào được đọc hoặc thay đổi bản ghi nào, để một khách hàng chỉ thấy đơn hàng của chính mình ngay cả khi app yêu cầu nhiều hơn.
Nếu không có nó, quy tắc “người dùng chỉ thấy dữ liệu của chính họ” nằm trong mã của app. Nếu một màn hình hoặc một API quên kiểm tra, dữ liệu riêng tư có thể bị rò rỉ.
Với row-level security, quy tắc nằm trong chính cơ sở dữ liệu. Bạn viết một chính sách như “một dòng trong orders chỉ hiển thị khi customer_id của nó khớp với người dùng đang đăng nhập”, và cơ sở dữ liệu áp dụng nó cho mọi truy vấn.
Postgres hỗ trợ row-level security, và một số dịch vụ backend phụ thuộc nhiều vào nó vì app của họ kết nối trực tiếp đến cơ sở dữ liệu từ trình duyệt. Trong các thiết lập đó, một bảng không có chính sách có thể bị bất kỳ ai đọc.
RLS là một lớp bảo vệ, không phải lớp duy nhất. App vẫn cần đăng nhập đúng cách, kiểm tra trên máy chủ và xử lý cẩn thận quyền truy cập của quản trị viên.
Ví dụ
- Khách hàng trong một cổng chỉ thấy tài liệu của chính họ
- Mỗi nhóm trong một công cụ chỉ thấy các dự án của nhóm mình
Câu hỏi thường gặp
Tôi có cần row-level security không?
Nếu app của bạn lưu dữ liệu riêng tư cho nhiều người dùng và có phần nào đó truy vấn cơ sở dữ liệu trực tiếp từ trình duyệt, thì có. Nếu mọi truy cập đều đi qua một backend có kiểm tra quyền, RLS là một lớp an toàn bổ sung.
Row-level security có giống với vai trò không?
Không. Vai trò mô tả người dùng thuộc loại nào, chẳng hạn quản trị viên hoặc thành viên. Row-level security dùng các thông tin như mã người dùng hoặc vai trò để quyết định họ được truy cập những dòng cụ thể nào.
Xem thêm
Mythex · Pricing · Xây dựng mọi thứ với AI · Mẫu website và ứng dụng · So sánh Mythex · Thuật ngữ xây dựng ứng dụng bằng AI · Công cụ miễn phí để xây dựng ứng dụng bằng AI · English