数据库设计 – 包含用户,角色和权限的数据库模型
我有一个带有用户表和角色表的数据库模型.我想控制最多10个不同元素的访问权限.可以将访问权限授予角色或单个用户.
CREATE TABLE users ( id serial NOT NULL PRIMARY KEY,username character varying UNIQUE,password character varying,first_name character varying,last_name character varying,... ); CREATE TABLE roles ( id serial NOT NULL PRIMARY KEY,name character varying NOT NULL,description character varying,... ); CREATE TABLE element_1 ( id serial NOT NULL PRIMARY KEY,... ); ... 现在我有两种不同的权利设计方式.一个表具有权限类型列或10个权限表 – 每个要控制访问权限的元素对应一个表. 每个元素的权限表与一个权限表的优缺点是什么? – 或者是更合适的方式吗? 解决方法首先,您计划实施哪种类型的安全模型?基于角色的访问控制(RBAC)或自主访问控制(DAC)?
see source 1)在RBAC中:您需要ElementType表来为角色分配权限(用户被分配给角色). RBAC定义:“这个角色/用户可以做什么”.管理员为角色分配权限和权限,将用户分配给角色以访问资源. 无论如何我建议这个数据模型: CREATE TABLE ElementType ( Id (PK) Name ... ) CREATE TABLE ElementBase ( Id (PK) Type (FK to ElementType) ... ) (一对一的关系) CREATE TABLE Element_A ( Id (PK,FK to ElementBase) ... ) CREATE TABLE Element_B ( Id (PK,FK to ElementBase) ... ) 1)RBAC(多对多关系) CREATE TABLE ElementType_To_Role_Rights ( RightId (PK) RoleId (FK to Role) ElementTypeId (FK to ElementType) ... ) 2)DAC(多对多关系) CREATE TABLE ElementBase_To_Actor_Rights ( RightId (PK) ElementBaseId (FK to ElementBase) ActorId (FK to Actor) ... ) CREATE TABLE Actor ( Id (PK) Name ) CREATE TABLE User ( Id (PK,FK to Actor) Password ... ) CREATE TABLE Role ( Id (PK,FK to Actor) ... ) (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |