成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Neo4j: RBAC權(quán)限管理簡單圖模型(實現(xiàn)概述)

Backache / 2219人閱讀

摘要:建模權(quán)限管理系統(tǒng)對于操作角色和資源有條關(guān)系分別是如果對應(yīng)的操作權(quán)限不存在表示沒有權(quán)限這里為的資源有兩條操作權(quán)限記錄分別對應(yīng)這樣我們就可以定義具有某個角色的用戶在指定的資源上擁有什么權(quán)限這種判斷來達(dá)到控制用戶對資源的訪問節(jié)點關(guān)系創(chuàng)建創(chuàng)

建模RBAC權(quán)限管理系統(tǒng)


對于CRUD操作, 角色和資源有4條關(guān)系. 分別是CREATE,UPDATE,READ,DELETE. 如果對應(yīng)的操作權(quán)限不存在, 表示沒有權(quán)限.

這里ID為 c508b480-082e-11e8-9f0c-b8e8563f0d3a的資源有兩條操作權(quán)限記錄(分別對應(yīng)READ, CREATE). 這樣我們就可以定義具有某個角色的用戶在指定的資源上擁有什么權(quán)限這種判斷, 來達(dá)到控制用戶對資源的訪問.

Cypher 節(jié)點關(guān)系創(chuàng)建
// 創(chuàng)建角色(管理員,運維,普通用戶)
CREATE (:Role {name: "Operator"}),(:Role {name: "Admin"}),(:Role {name: "User"});

// 創(chuàng)建資源節(jié)點
CREATE (resource:Resource {path: "/", name: "根目錄"})
  RETURN resource;


// 普通用戶在資源 / 上有, READ, CREATE權(quán)限
MATCH (role:Role {name: "User"}), (resource:Resource {path: "/"})
  CREATE (role)-[op:READ {created_at: timestamp()}]->(resource);

MATCH (role:Role {name: "User"}), (resource:Resource {path: "/"})
  CREATE (role)-[op:CREATE {created_at: timestamp()}]->(resource);


// 查詢一個用戶在某個資源山的操作權(quán)限列表
MATCH (u:User {name: "測試用戶"})-[r:HAS_ROLE]->(role:Role {name: "User"})-[op]->(resource)
  WHERE u.roleId = role.uuid
  RETURN u.name,op.name, resource.path;
抽象表達(dá)

在實際的查詢需要把用戶(u), 角色(r), 資源(s)參數(shù)化. 我們用一個函數(shù)來表達(dá)

$$P = f(u, r, s)$$

P為具有某個角色(r)的用戶(u)在資源s上的權(quán)限集合.
Cypher 查詢語句
// 權(quán)限查詢
MATCH (u:User)
        -[:HAS_ROLE]->(r:Role {name: "User"})
        -[op]->(resource:Resource {path: "/"})
RETURN u.uuid as user_id,
       r.name as role_name,
       resource.path as resource_path,
       type(op) as operation;

在IDEA中的Neo4j插件, 支持單一語句執(zhí)行(在.cypher文件中可以保持多條Cypher查詢語句, 點擊一條語句會有綠色的框, 然后在點擊執(zhí)行按鈕會執(zhí)行這條被選中的Cypher語句).

在Neo4j Browser中的效果

參考資料

RBAC權(quán)限管理模型

RBAC for a B2B Saas platform

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17684.html

相關(guān)文章

  • RBAC權(quán)限模型的初步理解

    摘要:近來部門接到一個外包項目,是基于現(xiàn)有的系統(tǒng)做一個知識文檔庫,類似于百度網(wǎng)盤一樣的功能,只是在角色和權(quán)限上與網(wǎng)盤不同,這個項目我們部門稱為,,難點就在于文件的權(quán)限管理。 ??近來部門接到一個外包項目,是基于現(xiàn)有的系統(tǒng)做一個知識文檔庫,類似于百度網(wǎng)盤一樣的功能,只是在角色和權(quán)限上與網(wǎng)盤不同,這個項目我們部門稱為KM,Knowledge Manager ,難點就在于文件的權(quán)限管理。 ??以下...

    2shou 評論0 收藏0
  • MySQL —— 簡單聊一聊數(shù)據(jù)庫設(shè)計

    摘要:數(shù)據(jù)庫設(shè)計的三大范式確保每列的原子性如果每列都是不可再分的最小單元信息,則滿足第一范式,比如下圖中,地址是由國家和城市組成的,顯然可以繼續(xù)在拆分成兩個列,國家和城市,是不滿足第一范式的,需要將地址列差分成國家和城市兩個列。 showImg(https://segmentfault.com/img/remote/1460000018997429?w=1100&h=546); 閱讀原文 ...

    dingding199389 評論0 收藏0

發(fā)表評論

0條評論

Backache

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<