一套能體現 rbac 的表結構設計
1、rbac 概述
2、表結構設計
2.1、使用者表
2.2、角色表
2.3、許可權表
2.4、使用者角色(關係)表
2.5、角色許可權(關係)表
3、總結
1、rbac 概述
rbac(role-based access control)即基於角色的訪問控制,是一種許可權設計思想。在 rbac 中,許可權與角色相關聯,使用者通過成為適當角色的成員來獲得這些角色的許可權。相較傳統的訪問控制(自主訪問、強制訪問)來說,rbac 能更好的支援最小許可權、責任分離和資料抽象等原則,極大地簡化了許可權的管理。
在乙個組織中,角色是為了完成各種工作而創造,而使用者則根據他的責任和資格來被指派相應的角色,使用者可以很容易地從乙個角色被指派到另乙個角色。每個角色都擁有與之相匹配的許可權,角色可依據新的需求而賦予新的許可權,而許可權也可根據需要而從某角色中**。這樣的許可權設計,結構清晰、管理方便,也能囊括更廣泛的客觀情況。
rbac 的優點主要在於易用和高效。給使用者授權時只需要對角色授權,然後將相應的角色分配給使用者即可;從技術角度講,思路清晰且易於實現,且後期維護時只需要維護關係模型,顯得簡單而高效。
rbac 的缺點主要有兩個:乙個是在進行較為複雜的許可權校驗時需要不斷地遍歷和遞迴,會造成一定的效能影響。另乙個是缺少資料許可權模型,基於 rbac 來實現資料許可權校驗比較複雜和低效。
role-based access controls
an introduction to role-based access control
role based access control (rbac) and role based security
了解基於角色的訪問控制
2、表結構設計
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 『建立時間』;
3、總結
與我而言,本篇小文也就相當於是乙個功能模組表設計 sql 語句的備份。以前做專案也經常按類似的思路來設計系統許可權模組的表,但一直不知道 rbac 的存在,本篇是結合 rbac 思想把專案中的表設計抽取出來,將建表的 sql 語句貼在這兒,省的每次都要重新來過
結構設計 資料表設計 常用表結構設計
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。位址一般包括 省 市 縣 區 詳細位址 我們當然可以儲存乙個字段 使用分隔符 json 等儲存 介紹字段介紹 字段介紹 idbigint id parentid parentidlist chi...
Hbase表結構設計
一 主體思路 先確定查詢場景,再確定表結構。二 主鍵設計 主鍵設計需要考慮兩個問題 1.選擇哪些作為主鍵?2.當主鍵大於1個時,如何排列。2.1 邏輯上用於表示行的唯一性的列必須作為主鍵 2.2 單個查詢場景中一定出現的列可以考慮加入主鍵列,用於優化查詢效能 2.3 在多個查詢場景都出現的主鍵列要排...
HBase表結構設計
列簇設計 版本設計 資料壓縮 rowkey設計原則 在hbase有很多張表,這些表需要按照業務劃分開,為方便管理這些表,不同業務就有不同的命名空間,類似hive中的資料庫,不同的資料庫用來儲存不同型別的表。注 建立命名空間 create namespace momo chat 檢視命名空間列表 li...