一套能體現 RBAC 的表結構設計

2022-02-13 04:39:25 字數 2690 閱讀 7710

3、總結

rbac(role-based access control)即基於角色的訪問控制,是一種許可權設計思想。在 rbac 中,許可權與角色相關聯,使用者通過成為適當角色的成員來獲得這些角色的許可權。相較傳統的訪問控制(自主訪問、強制訪問)來說,rbac 能更好的支援最小許可權、責任分離和資料抽象等原則,極大地簡化了許可權的管理。

在乙個組織中,角色是為了完成各種工作而創造,而使用者則根據他的責任和資格來被指派相應的角色,使用者可以很容易地從乙個角色被指派到另乙個角色。每個角色都擁有與之相匹配的許可權,角色可依據新的需求而賦予新的許可權,而許可權也可根據需要而從某角色中**。這樣的許可權設計,結構清晰、管理方便,也能囊括更廣泛的客觀情況。

rbac 的優點主要在於易用和高效。給使用者授權時只需要對角色授權,然後將相應的角色分配給使用者即可;從技術角度講,思路清晰且易於實現,且後期維護時只需要維護關係模型,顯得簡單而高效。

rbac 的缺點主要有兩個:乙個是在進行較為複雜的許可權校驗時需要不斷地遍歷和遞迴,會造成一定的效能影響。另乙個是缺少資料許可權模型,基於 rbac 來實現資料許可權校驗比較複雜和低效。

2.1、使用者表

create table t_user(

user_id number(10) primary key,

user_name varchar2(30),

gender number(1),

birthday date,

create_time date default sysdate

);comment on table t_user is '使用者表';

comment on column t_user.user_id is '使用者id';

comment on column t_user.user_name is '使用者姓名';

comment on column t_user.gender is '性別{1男/0女}';

comment on column t_user.birthday is '出生日期';

comment on column t_user.create_time '建立時間';

2.2、角色表
create table t_role(

role_id number(10) primary key,

role_name varchar2(30),

create_time date default sysdate

);comment on table t_role is '角色表';

comment on column t_role.role_id is '角色id';

comment on column t_role.role_name is '角色名稱';

comment on column t_role.create_time '建立時間';

2.3、許可權表
create table t_power(

power_id number(10) primary key,

power_name varchar2(30),

create_time date default sysdate

);comment on table t_power is '許可權表';

comment on column t_power.power_id is '許可權id';

comment on column t_power.power_name is '許可權名稱';

comment on column t_power.create_time '建立時間';

2.4、使用者角色(關係)表
create table t_user_role(

user_id number(10) not null,

role_id number(10) not null ,

create_time date default sysdate

);comment on table t_user_role is '使用者角色(關係)表';

comment on column t_user_role.user_id is '使用者id';

comment on column t_user_role.role_id is '角色id';

comment on column t_user_role.create_time '建立時間';

2.5、角色許可權(關係)表
create table t_role_power(

role_id number(10) not null,

power_id number(10) not null

);comment on table t_role_power is '角色許可權(關係)表';

comment on column t_role_power.role_id is '角色id';

comment on column t_role_power.power_id is '許可權id';

comment on column t_role_power.create_time '建立時間';

與我而言,本篇小文也就相當於是乙個功能模組表設計 sql 語句的備份。以前做專案也經常按類似的思路來設計系統許可權模組的表,但一直不知道 rbac 的存在,本篇是結合 rbac 思想把專案中的表設計抽取出來,將建表的 sql 語句貼在這兒,省的每次都要重新來過。

RBAC 的表結構設計

一套能體現 rbac 的表結構設計 1 rbac 概述 2 表結構設計 2.1 使用者表 2.2 角色表 2.3 許可權表 2.4 使用者角色 關係 表 2.5 角色許可權 關係 表 3 總結1 rbac 概述 rbac role based access control 即基於角色的訪問控制,是一...

許可權管理模組的表結構設計

許可權管理模組是後台管理系統中最基本的模組之一。設計的好壞,直接關係到系統模組安全呼叫的複雜度和拓展性,以及許可權控制的粒度。這裡我的設計涉及到6張表。基礎的表有 使用者表 角色表 模組表和資源表。關聯表有使用者角色關聯表 角色模組關聯表 角色模組資源三張表的關聯表。下面對錶進行一一介紹。使用者表 ...

個人部落格標籤和文章的表結構設計

標籤和文章是多對多的關係 class article models.model tag models.manytomanyfield tag,related name tag verbose name 標籤 class tag models.model 標籤 title models.charfie...