AGDLP
AGDLP是account, global, domain local, permission的缩写,简单说明了微软针对在原生模式Active Directory(AD)中使用嵌套群组(nested group)实现以角色为基础的存取控制(RBAC)时,相关的建议:使用者和电脑帐号(accounts)依其在企业中的角色,划分为对应全域(global)群组的成员,全域群组是网域区域群组(domain local groups)的成员,网域区域群组说明资源存取许可(permissions)或是使用者权限设定。AGUDLP(对应account, global, universal, domain local, permission)和 AGLP(对应account, global, local, permission)也是Active Directory和Windows Server网域中类似的RBAC实现方式。
细节
以角色为基础的存取控制(RBAC)简化了重复性帐号管理流程,也有助于资安稽核[1]。系统管理者不会直接针对个别使用者指定存取权限。系统管理者会依其在企业中的角色来指定存取权限,因此在创建、修改或删除使用者权限时,可以不用去维护一份可能很大(而且常常变更的)资源许可及使用者权限设定。以角色为基础的存取控制(RBAC)和传统的存取控制串列不同,RBAC的许可不是列出细节的各档案存取方式,而是在特定应用或是系统内有意义的操作。将角色和许可储存在集中式的数据库或目录服务中,简化了确定和控制各角色成员以及各角色存取许可的流程[2]。稽核可以在一个地方分析存取许可的指定方式,不用去了解特定存取层级下,针对各资源的实现细节。
单一AD网域中的RBAC
微软实现RBAC的方式利用了Active Directory中不同的安全群组[3][4]:
- 全域安全群组(Global security groups)
- 全域范围的网域安全群组代表在企业中的角色,或是在此网域中的功能。这些群组可以包括个别帐号,同一网域内的其他全域群组,也可以用在网域森林中的资源里。这些群组可以经常变更,不会有全局目录复制的问题。
- 网域区域安全群组(Domain local security groups)
- 网域区域范围的网域安全群组说明细节的存取权限或是使用者权限。只有同一个网域的系统可以用到这些群组。网域安全群组可以包括帐号、全域群组、以及任何网域的万用群组(universal groups),也可以包括同一个网域的其他网域区域群组。
表示企业中功能的全域安全群组应该只有使用者或电脑帐号。表示资源存取许可或是其他使用者权限的网域区域群组,其中应该只有全域安全群组,没有个别帐号。不应该对帐号或是企业角色直接设定存取许可或是使用者权限,这样才能简化存取权限的分析。
Active Directary森林中的RBAC
Active Directary森林是指多个网域的环境,各个网域可能是透过广域网或虚拟私人网路连接,会有称为全域目录伺服器(global catalog server)的网域控制器会快取目录对象物件以及属性型态,以减少跨网域缓慢的目录查询[5]。全域目录伺服器快取的物件包括了万用群组(universal group),不包括全域群组(global group),使得万用群组的成员查询比全域群组的查询要快很多。不过万用群组的任何修改都会触发全域的目录复制(而且可能成本很高),在万用群组的修改需要Active Directary森林层级的的安全权限,这在大部份的大型企业不太适用。因为这二个限制,让万用安全群组没有完全取代全域安全群组来表示在成员在企业中的角色。在此环境下,用万用安全群组来表示在公司内的角色,但又维持各网域个别的全域安全群组,就简称为AGUDLP。
在非AD网域下的RBAC
在Windows NT 4.0或较早版本的网域只有全域(网域等级)及区域(非网域层级)的群组,在网域等级不支援嵌套群组[6]。缩写AGLP是指这种在较早期网域的RBAC实现:全域(Global)群组表示企业角色,而区域(local)群组(在网域成员资料库中)说明各使用者的权限。
例子
假设一个共享资料夹, \\nyc-ex-svr-01\groups\bizdev; 是公司行销部门的业务发展组,在Active Directory中是在(已有的)全域安全群组“业务开发团队成员”以下,有要求这整个群组都要可以读写共享资料夹,管理者若依AGDLP,其存取控制方式如下:
- 在Active Directory建立新的网域全域安全群组,名称为“允许修改\\nyc-ex-svr-01\groups\bizdev”。
- 在bizdev资料夹中,对这个网域全域群组给予NTFS "change"的权限集(read, write, execute/modify, delete)(注意,安全描述符和共享许可是不同的)。
- 让全域群组“业务开发团队成员”成为网域区域安全群组“允许修改\\nyc-ex-svr-01\groups\bizdev”的成员。
为了要突显使用RBAC控管权限的好处,若业务发展组需要bizdev额外的权限,系统管理者只需要编辑单一的存取控制项(access control entry),不用编辑其中每一个成员的存取控制项。
参考资料
- ^ Ferraiolo, D.F.; Kuhn, D.R. Role Based Access Control (PDF). 15th National Computer Security Conference: 554–563. October 1992 [2021-10-20]. (原始内容 (PDF)存档于2011-06-05).
- ^ Sandhu, R.; Coyne, E.J.; Feinstein, H.L.; Youman, C.E. Role-Based Access Control Models (PDF). IEEE Computer. August 1996, 29 (2): 38–47 [2021-10-20]. CiteSeerX 10.1.1.50.7649 . doi:10.1109/2.485845. (原始内容 (PDF)存档于2011-06-05).
- ^ Microsoft Corporation. Group Scopes: Active Directory. Microsoft Technet. 2007-03-16 [2009-04-28]. (原始内容存档于14 March 2009).
- ^ Melber, Derek. How to Nest Users and Groups for Permissions. WindowsSecurity.com. 2006-05-18 [2009-04-28]. (原始内容存档于2013-01-17).
- ^ Microsoft Corporation. Understanding the Global Catalog: Active Directory. Microsoft Technet. 2005-01-21 [2005-10-21]. (原始内容存档于2016-03-05).
- ^ Stanek, William R. Understanding User and Group Accounts. Microsoft Technet. [2009-04-28]. (原始内容存档于27 April 2009).