Mở đầu
Khi xây dựng ứng dụng với Supabase, một trong những thách thức lớn nhất là đảm bảo mỗi thành viên trong team có quyền truy cập và thao tác phù hợp. Đặc biệt với các dự án lớn, việc quản lý role và permission không chỉ bảo vệ dữ liệu mà còn giúp quy trình làm việc trở nên trơn tru hơn. Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập và quản lý role và permission trong Supabase một cách hiệu quả, giúp team nhiều người làm việc an toàn và năng suất.
Các khái niệm cơ bản về Role và Permission
Trước khi đi vào chi tiết, cần hiểu rõ role và permission là gì trong Supabase:
– Role là nhóm quyền được gán cho người dùng hoặc nhóm người dùng, ví dụ: admin, editor, viewer.
– Permission là quyền cụ thể được gán cho role, như quyền SELECT, INSERT, UPDATE, DELETE trên bảng.
Supabase sử dụng PostgreSQL nên hỗ trợ đầy đủ các role và permission của PostgreSQL, đồng thời mở rộng thêm các policy để kiểm soát truy cập dữ liệu theo row.
Các loại Role trong Supabase
Supabase cung cấp một số role mặc định và cho phép tạo role tùy chỉnh:
– authenticated: role cho người dùng đã đăng nhập.
– anon: role cho người dùng chưa đăng nhập.
– service_role: role cho các hàm backend, có toàn quyền truy cập.
Ngoài ra, bạn có thể tạo role riêng như admin, editor, viewer để phù hợp với nhu cầu team.
Thiết lập Role cho team
Để thiết lập role cho team, bạn có thể dùng SQL hoặc dashboard của Supabase:
-- Tạo role mới
CREATE ROLE editor;
GRANT USAGE ON SCHEMA public TO editor;Sau đó gán role cho người dùng cụ thể:
-- Gán role cho người dùng
GRANT editor TO user1;