如何在資料庫中進行RBAC許可權應用

2022-06-05 06:18:06 字數 2063 閱讀 6987

上週我們發了一篇關於「刪庫跑路」引發了大家對於資料安全的思考,而許可權管理又跟資料安全密不可分。許可權管理作為資料系統的重要組成部分,通過控制賬號的可支配能力,防止因使用者操作不當導致的資料洩露、資料篡改等問題,同時,對敏感資料按檢視角色進行隔離,避免不相關的人看到不應該了解的資料,達到風險管控的效果。

這篇文章,我們就來講講cloudquery的許可權管理功能。

cloudquery 如何設計資料許可權管理

當前我們使用的最為普及的許可權模型是rbac(role-based access control,基於角色的訪問控制),cloudquery 的許可權管理功能同樣是基於rbac許可權模型。簡單來講,就是乙個使用者擁有若干角色,每個角色擁有若干許可權。這樣,就構成了「使用者-角色-許可權」的授權模型。在該模型中,使用者與角色之間,角色和許可權之間,一般是多對多的關係。

而在rbac模型之前,被廣泛應用的是dac(discretionary access control)自主訪問控制。dac模型不具有「角色」這一概念,在系統中,管理員直接將許可權授予使用者,而擁有該許可權的使用者又可將許可權分配給其他使用者。在該模型中,只有使用者到許可權的多對多關係。dac模型強調靈活性,所以適用於個人或幾個人的小團隊,因為其對許可權控制比較分散,當使用者超過一定人數會極大增加管理員的重複工作量,且容易出錯,不便於管理。

rbac則彌補了dac的缺陷,在使用者和許可權之間引入「角色」的概念後,每個使用者關聯乙個或多個角色,每個角色關聯乙個或多個許可權,角色可根據實際業務需求靈活建立,省去了每新增乙個使用者就要關聯一遍所有許可權的麻煩,更加適用於複雜組織架構的許可權管理。並且rbac模型也可模擬出dac模型的效果。

下面,我們就具體來講講cloudquery的許可權管理功能以及如何進行許可權授予。

基礎概念:

系統管理員

系統管理員可以對組織架構下所有使用者進行系統許可權的授權。

step 1:系統管理員建立角色

step 2:將單一或多個許可權授予乙個角色

step 3:將角色繫結至使用者

owner

owner是擁有「新增連線」許可權的人,可以分配所有連線下的所有資料操作許可權至普通使用者。

step 1:owner 建立資料操作許可權

step 2:建立許可權集。可將單個或多個資料操作許可權儲存至乙個許可權集。這裡需要注意的是,在建立連線成功後,許可權集中天然生成了初始化許可權集。

step 3:建立角色

step 4:將許可權授予角色。在資料操作許可權的角色管理中,可以直接將單個或多個操作許可權授予角色,也可將許可權集授予角色。

可簡單化為公式:m許可權+n許可權集=角色許可權(m和n至少有乙個不等於0)

step 5:將角色繫結至使用者

普通使用者

系統管理員和owner會根據企業內實際業務情況,授予不同部門的員工相應的系統許可權和資料操作許可權。普通使用者只能在自己的許可權範圍內對系統進行操作。

例如:給張三賦予「運營分析專員」角色,「運營分析專員」具有公司某個mysql連線中「銷售資料庫」中所有表的「查詢表」許可權。此時,張三則可進入系統進行該庫下所有表的查詢操作,但除此之外,張三不可在「銷售庫」中進行建立表或刪除表等其他動作,更無法檢視除「銷售資料庫」以外的其他資料庫。

總結

通過本文,可以更加系統地了解目前cloudquery的許可權模組功能。dba可以針對性地進行資料庫操作授權,同時為了減少授權工作量還可以搭配許可權集、角色等等定義。為了讓我們的資料更安全,為了讓各種資料操作者行為更加規範,一起來體驗一下全新的cloudquery許可權管控功能吧。

如何在資料庫中使用索引

一 給資訊表建立索引 資訊表為 建立索引 create index 索引名 on 表名 列名.mysql create index idx lname pinyin on employee lname pinyin 顯示索引資訊 show index from 表名 mysql show index...

如何在資料庫動態建表

動態建表首先需要了解statement類 statement 物件用 connection 的方法createstatement 建立,例如 建立連線物件 connection connection dbutil.getconnection 建立statement物件 statement state...

流程的發起許可權如何在資料庫中批量新增?

有朋友問如何在資料庫後台批量新增流程的發起許可權人員呢?如圖 我的想法是,插入後重啟h3服務。如下 insert into dbo.ot workflowacl objectid workflowcode createinstance userid administrator createdtime...