安全分析:开源RBAC产品的利与弊(上)

在企业层面,基于角色的访问控制(Role-based Access Control,RBAC)是一种常用的服务,也是目前公认的用户授权管理最佳实践。尽管RBAC实施最佳实践仍处于未成熟阶段,但是多数企业已经以某种形式部署了这一技术。现在,绝大多数已部署的RBAC服务都是基于商业化的现成产品,而只有少数内部开发的RBAC服务支持自定义功能。

与此同时,开源RBAC产品方兴未艾,并深受经验丰富的身份管理人员的青睐。然而,当企业希望在内部扩展RBAC服务时,问题随之而来:“商业化的RBAC产品是扩展RBAC服务的唯一选择吗?可以使用开源RBAC产品扩展RBAC服务吗?”要回答这一问题,企业必须清楚,开源RBAC产品与现有应用整合的难度如何,能否提供与商业化RBAC产品相同的安全性级别?

开源RBAC产品的优势

需要指出的是,放眼当今的商业RBAC市场,最畅销的RBAC产品并不是出自最大的公司。这是因为RBAC的潜在功能尚未完全实现,如果一个厂商可以更快地改进RBAC产品的功能,则它就可以获得超过其竞争对手的优势。正是由于这一原因,在商业RBAC市场上,一些小公司(例如Aveksa、BHOLD Company和SailPoint Technologies)反而战胜了作为其竞争对手的大公司(例如CA、IBM和已被甲骨文收购的Sun Microsystems等)。

这种“船小好调头”的灵活性在开源RBAC产品上也得到了很好的体现。与商业化的RBAC产品不同,RSBAC、USRBAC、django-rbac、grsecurity以及其他开源RBAC产品,均是由独立开发人员在活跃的用户社区的帮助下完成的。由于开源RBAC产品的开发人员不用考虑商业化厂商所需的开销,所以他们可以集中更多的精力来增强其产品的性能。另外,通常情况下,开源RBAC产品的开发人员在改进和提高其产品性能时,产品的发布审查流程既正式又快速,从而可以更加迅速地将创新应用到其产品中。还有一点需要指出的是,开源RBAC产品的开发人员之所以自己动手开发RBAC产品,往往是因为市场上的RBAC产品达不到其严格的功能和性能标准。在有些情况下(例如django-rbac),一些已经开始开发自己的开源RBAC产品的开发人员会放弃自己的工作,转而加入django-rbac的开发团队,以便为所有用户提供更好的开源RBAC产品。

开源RBAC产品区别于商业化的RBAC产品的第二个不同之处是,它们通常专注于特定的问题领域。举例来说,如果企业希望部署一种面向小规模的、专注于特定网络领域(例如Active Directory(活动目录)、Unix或LDAP(轻量目录访问协议))的RBAC授权管理机制,则对企业来说,更便宜、更合适的选择可能是开源RBAC产品,而不是旨在为大型企业提供RBAC服务且价格昂贵的商业RBAC产品。另外,由于开源RBAC产品一般专注于单一的问题领域,所以往往能够提供更深入的功能,而且具有更多的配置选项,以增强部署的灵活性。

开源RBAC产品区别于商业化的RBAC产品的第三个不同之处是,它们不关心市场占有率。开源RBAC产品的代码在全球范围内发布,并尽可能广泛地进行分发,因此产品中不包括意在锁定客户的专利功能。相反,开源RBAC产品的开发基于开放、免费的可用标准,例如美国国家标准与技术研究所(NIST)的RBAC标准。由于开源RBAC产品完全基于开放的标准,所以往往能够与更多的其他身份管理产品及其支持的应用进行互操作。