Tôi đang cố gắng làm theo mô hình kiểm soát truy cập cơ sở vai trò để hạn chế những gì người dùng có thể hoặc không thể làm trong hệ thống của tôi.
Cho đến nay tôi có các thực thể sau:
người dùng - Những người sẽ sử dụng hệ thống. Ở đây tôi có tên người dùng và mật khẩu. vai trò - Bộ sưu tập các vai trò mà người dùng có thể có. Những thứ như tài nguyên của người quản lý, quản trị viên, v.v. - Những thứ mà người dùng có thể thao tác. Giống như hợp đồng, người sử dụng, dự thảo hợp đồng, vv hoạt động - Những điều mà người dùng có thể làm với các nguồn tài nguyên. Thích tạo, đọc, cập nhật hoặc xóa.
Bây giờ, sự nghi ngờ của tôi tăng lên ở đây trong sơ đồ nơi tôi có một mối quan hệ như thế này:
các hoạt động (0 .. *) được thực thi theo tài nguyên (0 .. *) tạo ra bảng tôi gọi là quyền và sẽ lưu trữ hoạt động và tài nguyên .
Bảng quyền sẽ trông như thế này (một hàng của nó): ID: 1, hoạt động: tạo, tài nguyên: hợp đồng.
Có nghĩa là một sự cho phép để tạo ra một hợp đồng .
Tôi đã làm theo cách này vì tôi cảm thấy một số tài nguyên có thể không có tất cả các loại hoạt động. Chẳng hạn, để đăng ký hợp đồng , người dùng có thể tải lên các tệp , nhưng thao tác này không có sẵn để đăng ký nhà cung cấp .
Vì vậy, bây giờ khi quản trị viên sẽ cấp quyền cho một vai trò , anh ta sẽ không có danh sách tài nguyên với mỗi thao tác được đăng ký trong hệ thống.
Tôi nghĩ rằng mỗi tài nguyên có bộ sưu tập các hoạt động riêng có thể được thực thi theo anh ta.
Tôi có thể làm rõ nếu một cái gì đó không thể hiểu được.
Đây có phải là cách chính xác để thực hiện rbac?
BIÊN TẬP
Ý tôi là bằng cách có một bảng quyền có hoạt động và tài nguyên , tôi có thêm HAI bảng vì tôi muốn liên kết tài nguyên với các hoạt động . Tôi cũng có thể vừa thực hiện tài nguyên có quyền trong đó bảng quyền sẽ lưu trữ quyền.
Nhưng sau đó, điều sẽ xảy ra là một số quyền thậm chí không tồn tại đối với một số tài nguyên sẽ xuất hiện khi quản trị viên sẽ chỉ định chúng.
Vì vậy, tôi muốn biết từ quan điểm thiết kế cơ sở dữ liệu nếu quyền này của bảng có một hoạt động cột và tài nguyên khác là chính xác? Tôi sẽ gặp vấn đề nếu nó vẫn như thế này?