创建安全体系结构的最佳方法是什么?

时间:2020-03-05 18:57:20  来源:igfitidea点击:

我正在设计门户的安全性体系结构。该站点具有页面,视频,图片,用户,数据库,文件系统对象等。控制对所有这些对象的访问的最佳方法是什么?我们将如何存储权限? 64位数据库变量是否足以存储权限?

例如。 Windows使用ACL和SID。我们是否有最新的解决方案?

解决方案

回答

我不喜欢将权限作为标志存储在一个变量中的想法。
我宁愿使角色对象与用户成多对多关系。

为了编辑特定对象的权限,我使用对象的方法或者外部函数,具体取决于如何概括安全策略。

对于中型门户网站,此方法非常有效。

回答

大多数常见的Web基础结构都具有内置的安全系统。例如,ASP.NET具有相当强大的安全子系统。安全性很难得到保证,因此几乎总是要使用经过定期测试的系统。

如果我们绝对必须编写自己的安全系统,那么我建议我们研究各种技术,例如ACL,作为用户的LDAP,组,模拟都是复杂的主题,需要进行研究以使其最符合实际需求。

回答

无论我们做什么,都请使其变得简单。易于制造,易于证明,易于审核。更容易适应。

首先,考虑一个组/用户系统。为每个对象定义一组权限,然后将其连接起来,就像该用户具有这些权限,该组具有这些权限等。

如果这还不够(请确保它确实还不够),请使用某种ACL系统,最好将其与现有解决方案集成在一起,并且最好尽可能简单。

回答

我计划遵循基于角色的访问控制安全设计模式(安全模式:集成安全和系统工程,第249页)。角色与ProtectionObject相关联。关联名称是IsAuthorised。有一个名为Right的关联类,它具有一个accessType成员和一个checkRights方法。角色与用户成多对多关联。关联名称为MemberOf。该结构可以表示角色,用户和权限检查。

我的主要问题是如何存储每个对象的权限。假设我们有页面,Web部件,文件系统对象。我可以将这些对象的权限存储在数据库中。此方法还可以控制系统对象和文件系统对象。对我来说,这是一个很大的问题,如何在内存中存储和缓存这些权限集,以及如何有效地检查访问权限。