您好,登錄后才能下訂單哦!
資料地址:http://down.51cto.com/data/2459472
rbac規范 解決不規范和不確定的問題
3.術語
{
組件 component 四個RBAC特征集之一(核心RBAC 層次RBAC 靜態職責分離關系 動態職責分離關系)
對象 object 需要進行訪問控制的系統資源
操作 operation 一個程序的可執行映像,被調用時為用戶執行的某些功能 GET
權限 permission 對受RBAC保護的一個或多個對象執行某個操作的許可
角色 role 組織語境中的一個工作職能
用戶 user 進行資源或服務訪問的實施主體
會話 session 用戶到其激活的角色集合的一個映射
職責分離 separation of duty 限制用戶獲取存在利益沖突的權限集的約束
}
4.縮略語
{
1.RBAC 基于角色的訪問控制
2.SSD
3.DSD
4.USERS
5.ROLES
6.OBJS
7.OPS
8.SESSIONS
9.PRMS
10.ACL 訪問控制列表
}
5.一致性
核心RBAC是必選組件 ,角色層次、靜態約束、動態約束是可選組件
6.RBAC參考模型
每個模型組件的定義:一些基本的元素集、一些基于上述基本元素集的RBAC關系、一些映射函數(給定某個元素集的實例元素下得到另一個元素集的某些實例元素)
{
1.核心RBAC
{
五個基本數據元素:users roles objs ops prms 權限分給角色 角色分給用戶
用戶會話集 會話是 從用戶到該用戶的角色集的某個激活角色子集的映射
一個會話只能關聯一個用戶
一個用戶可以同時擁有多個會話
會話保存該用戶激活的角色子集,包含該用戶激活的角色的可用權限,權限包含相關的操作 權限包含相關對象
規范
1.users、roles、ops、objs。
2.用戶/角色多對多映射
3.給出分配給角色r的用戶
4.權限集
5.權限/角色多對多映射
6.給出分配給角色r的權限
7.權限到操作的映射
8.權限到對象的映射
9.會話集
10.會話s到對應用戶的映射
11.會話s到其激活的角色集的映射
12.會話s到其擁有權限集的映射
}
2.層次RBAC
{
角色層次有效的反應組織內權威和責任的結構
r1繼承r2,則r1擁有r2全部權限和自己的權限
某些分布式RBAC實現中,角色層次集中管理,權限/角色分配非集中管理
兩種角色層次類型:通用角色層次、受限角色層次(一個角色可以擁有一個或者多個直接祖先,但只能有一個直接后代,一個樹)
通用角色層次擴展的規范:
1.繼承的角色之間的偏序關系 r1>=r2 r1擁有r2的所有權限且r1的用戶將是r2的用戶
2.角色層次存在的情況下,角色到該角色授權用戶的映射
3.角色層次下角色到授權權限的映射
}
3.帶約束的RBAC
{
靜態職責分離關系
無角色層次的靜態職責分離
(rs,n) 用戶不能同時被rs中的n個或多個角色分配
有角色層次的靜態職責分離
(rs,n) 基于角色的授權用戶,而不是直接分配了該角色的用戶進行重新定義
動態職責分離關系
}
}
7.RBAC系統和管理功能規范
功能規范描述
創建和維護RBAC元素集和RBAC關系的管理操作
進行管理查詢的管理查看函數
創建和維護用戶會話的RBAC屬性和進行訪問控制決策的系統函數
{
核心RBAC
{
管理函數
1.AddUser 當新建的用戶尚不存在時,該命令可用 ,命令執行后 users更新
2.DeleteUser 當且僅當被刪除的用戶在users中可用,
被執行后 users數據集 ua數據集 assigned_users函數被更新
一個正處在會話中的用戶被刪除,不做定義,可以強制也可以等待會話結束
3.AddRole 當且僅當要創建的角色不存在可用
被執行后 roles數據集、assigned_users assigned_permissions函數被更新
4.DeleteRole 當且僅當被刪除的角色存在時可用
被執行后 會話中的被集火的角色如何處理未定義
roles數據集、assigned_users assigned_permissions函數被更新
5.AssignUser 給用戶分配角色 當且僅當用戶屬于users 角色屬于roles可用
被執行后 UA數據集、assigned_users被更新
6.DeassignUser 用戶移除角色 當且僅當用戶屬于users 角色屬于roles 且user已經被分配給該role可用
被執行后 UA數據集、assigned_users被更新
7.GrantPermission 給角色分配對一個對象執行某個操作的權限 當且僅當操作、對象代表一個權限且角色在roles中。實際實現中可能實現為授予對應該角色的組相應的權限,即修改對象的ACL
被執行后 PA數據集 assigned_permissions函數被更新
8.RevokePermission 撤銷分配給角色的權限集中的某個權限 當且僅當操作代表一個權限且已經分配給該角色 實際實現可能會修改對象的ACL表
被執行后 PA數據集 assigned_permissions函數被更新
系統函數
1.CreateSession
}
層次RBAC
{
}
靜態職責分離關系
{
}
動態職責分離關系
{
}
}
第六章 從元素集、關系、管理查詢的角度吧RBAC參考模型定義為四個模型組件
附件1
從管理操作、會話管理、管理查看的功能規范的角度討論抽象的模型
1.核心RBAC功能規范
{
三類功能規范函數
1.管理函數
核心RBAC基本元素:users、roles、ops、objs。
ops和objs由部署RBAC的底層系統定義,
管理員可以創建、刪除users、roles的成員, 并創建角色、操作與對象之間的聯系
AddUser DeleteUser user
AddRole DeleteRole role
AssignUser DeassignUser UA user-role
GrantPermission RevokePermission PA perm-role
2.支持系統函數
會話管理、訪問控制決策
CreateSession 創建會話并給會話指定一組缺省激活角色
AddActiveRole 向會話的激活角色集中添加一個角色
DropActiveRole 從會話的激活角色集中刪除一個角色
CheckAccess 判斷會話主體是否可以對某個對象執行某個操作
3.查看函數
PA UA實例被建立后,應該可以從用戶和角色的角度去查看他們的內容
可選函數O
UserPermission O 返回用戶的可用權限
SessionRoles O 返回會話的激活角色集
SessionPermissions O 返回會話可用的權限
RoleOperationsOnObject O 返回給定角色針對給定對象可以執行的操作
UserOperationsOnObject O 返回給定用戶針對給定對象可以執行的操作
強制函數M
AssignedUsers M 返回分配了給定角色的用戶
AssignedRoles M 返回分配給了給定用戶的角色
}
2.層次RBAC功能規范
{
1.層次管理函數
包含核心RBAC的所有管理函數,且DeassignUser的語義需要重新定義(只可以刪除直接授權的角色 還是可以刪除任何被授權的角色沒有給出規定)
層次RBAC需要額外的管理函數:
創建和刪除現存角色間的直接繼承關系、、把一個新創建的角色加入現存的角色層次中
AddInHeritance 在現存的兩個角色之間創建直接繼承關系
DeleteInheritance 刪除兩個現存的角色之間的直接繼承關系 隱含繼承關系是否打破沒有給出要求,自行定義
AddAsendant 創建新角色,并把它指定為一個現存角色的直接祖先
AddDescendant 創建一個角色,并把它指定為一個現存角色的直接后代
---支持通用角色層次(允許多重繼承)和首先角色層次(一個樹,每個角色只有一個直接后代)
2.支持系統函數
CreateSession AddActiveRole 因為角色層次的存在需要重新定義
CreateSession 創建的激活角色集包含直接給用戶分配的角色和這些角色繼承的角色
AddActiveRole 用戶可以激活 直接分配的角色和繼承的角色。繼承的角色是自動激活還是必須顯示的激活不做明確要求
3.查看函數
包含核心RBAC且增加如下函數
AuthorizedUser 返回分配了給定角色或該角色繼承的角色的用戶(給定角色的授權用戶)
AuthorizedRoles 返回給定用戶北直街分配的角色和繼承這些角色的角色(給定用戶的授權角色)
可選函數
RolePermissions 返回給定角色直接或繼承來的權限
UserPermissions 返回給定用戶直接分給的角色或繼承自其他角色獲得的權限
RoleOperationsOnObject 返回給定角色擁有的針對給定對象執行的操作(直接或繼承來的)
UserOperationsOnObject 返回給定用戶可以執行的針對給定對象的操作(通過直接分配的角色或這些角色繼承的角色)
}
3.靜態職責分離關系功能規范
{
1.管理函數
SSD限制用戶同事可以分配的角色,AssignUser應該不違背任何SSD約束
一個SSD關系有三元組組成: SSD_Set_Name role_set SSD_Card
SSD_Set_Name 指定了要限制用戶/角色分配以貫徹利益沖突策略的事務或商業過程的名稱
role_set 是 SSD_Set_Name 對應的角色集
SSD_Card 給出了閾值
非角色層次SSD RBAC管理函數
CreateSSDSet 創建一個命名的SSD關系
DeleteSSDSet 刪除一個現存的SSD關系
AddSSDRoleMember 添加一個角色到給定SSD角色集
DeleteSSDRoleMember 從一個給定的SSD角色集刪除一個角色
SertSSDCardinality 為給定的SSD角色集設置閾值
--角色層次SSD只需要針對角色層次的組合約束和SSD約束都應該滿足
2.支持系統函數
和核心RBAC一直
3.查看函數
核心RBAC和如下函數:
SSDRoleSets 返回SSD RBAC中的命名SSD關系
SSDRoleSetRoles 返回與給定命名角色集關聯的角色
SSDRoleSetCardinality 返回與命名的給定角色集關聯的閾值
}
4.動態職責分離關系功能規范
{
1.管理功能
CreateDSDSet
DeleteDSDSet
AddDSDRoleMember
DeleteDSDRoleMember
SetDSDCardinality
2.支持系統函數
CreateSession AddActiveRole DropActiveRole不能違反DSD約束
3.查看函數
DSDRoleSets
DSDRoleSetRoles
DSDRoleSetCardinality
}
4.功能規范包
RBAC是一項提供諸多訪問控制管理特征的技術
第六章定義的一個功能組件族:核心RBAC 層次RBAC 靜態職責分離關系 動態職責分離關系
每個功能組件包含三部分:創建和維護RBAC元素集和關系的管理操作、管理查看函數、系統級別的用戶會話管理和訪問控制策略的函數
{
(高級查看是可選的 )
(必選)核心RBAC -> (可選)角色層次RBAC(受限/通用二選一) -> (可選)SSD關系(遵循依賴 有/無角色層次與上一選擇對應) -> (可選)DSD關系 -> 需求包
}
-----------------------------------------------------
組件原理
1.核心RBAC
{
用戶/角色 多對多
角色/權限 多對多
}
2.層次RBAC
{
角色層次是數學上的偏序關系
角色可以擁有重合的權限
}
3.靜態職責分離關系
對用戶/角色分配進行約束 實施利益沖突策略
(role_set,n)的對,用戶不能被分配屬于role_set角色集的n個或更多個角色
常對可能違反高層組織職責分離策略的管理操作施加限制
4.動態職責分離關系
和SSD不同的是上下文
DSD通過限制永不會話中可以被激活的角色來限制用戶權限的可用性
一個用戶被分配兩個獨立的角色,但是這兩個角色不可以同時行使權限
--------------------------
Z語言:
基本單位:模式:說明部分+謂詞部分
說明部分:定義一些狀態或模式變量
謂詞部分:定義一般的謂詞公式
-------------------------------------
https://casbin.org/docs/zh-CN/rbac
1.插件
{
1.策略存儲插件
https://github.com/search?q=org%3Acasbin+adapter&unscoped_q=adapter
file gorm xorm mongodb redis protobuf redis json awss3
2.策略同步插件
https://github.com/casbin/etcd-watcher
https://github.com/billcobbler/casbin-redis-watcher
redis etcd
3.角色管理插件
...
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。