RBAC 的表結構設計

2021-09-08 15:49:39 字數 3021 閱讀 4556

一套能體現 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...