近年来,随着网络安全事件的频发,花了很多时间思考应用安全的问题。过去,常常在项目规格文档中最后考虑安全问题。"安全很简单...只要在需要保护的地方加上几个If/Then语句,就完成了,对吧?" 然后,2013年冬天,在美国一家大型零售商购物时,他们的系统被入侵,三个月后,当在一家不错的餐厅试图支付晚餐费用时,信用卡被关闭了。这让感到痛苦...应用程序的安全性突然变成了一个真正伤害问题。
当回想起过去10年编写的所有.NET应用程序时,相信有很多功能可以改进它们的授权策略。也许编写的自定义身份验证提供程序可以更加硬化。想过去过于扮演安全专家的角色,如果今天有机会维护这些应用程序,会认真考虑如何在它们中实现更好的安全性。在进行了一些研究并查看了微软为保护其框架发布的新技术之后,认为找到了一个第三方解决方案,它在绿地和棕地应用程序中都做得很好。
在过去的两周里,一直在审查Novalys Visual Guard,并在这个包中发现了一些真正有趣的东西,这将让网络管理员站起来并注意到。让从基础开始:Visual Guard允许为组织配置一个安全的存储库,包括Microsoft SQL Server、Oracle数据库和文件共享等多种介质。在这个存储库中,可以连接Active Directory或任何数量的第三方OAuth提供商供用户使用。太棒了!然而,存储用户凭据只是冰山一角。
用户身份验证是打开应用程序访问权限的大门。这是登录页面、登录屏幕,以及在某人使用一个受保护应用程序时持续保存这些凭据的时间。注意那里的复数:应用程序。Visual Guard允许配置一个可以管理多个应用程序的共享用户基础的安全存储库。有了Visual Guard控制台,可以清楚地看到哪些应用程序被管理以及每个应用程序内部的权限。让再说一遍:应用程序的权限是在应用程序之外管理的。
比应用程序之外管理权限更好的是,可以配置多个服务器来管理应用程序中的认证和授权权限。这给了可扩展性,根据阅读的手册,甚至可以配置Visual Guard,允许使用基于Web的控制台管理用户和权限。在部署Visual Guard服务器方面有很多灵活性,只是刚刚开始。
基于Web的控制台可以自定义其外观和布局,甚至可以集成到应用程序中,使其与内容无缝配合。然后,可以从世界上任何地方,使用任何可以连接到网站的设备,审查和管理安全性。
杀手级功能是与应用程序的集成。这是真正看到多年前编写的长寿应用程序的应用。可以在现有的Web应用程序上添加Visual Guard,而无需重新编译!由于ASP.NET Web表单项目的提供程序模型,只要登录页面使用web.config中定义的安全提供程序,应该能够将身份验证提供程序替换为Visual Guard。之后,添加一个HttpModule就可以保护应用程序的其余部分。Visual Guard通过拦截正常事件并允许指定在这些事件中采取的操作来保护应用程序。
另一个有趣的功能是Visual Guard可以帮助处理多租户。在过去,架构并编写了几个大型多租户应用程序,数据访问和安全性的故事总是很难描述,并且需要成千上万行代码来管理。Visual Guard内置了从组到子组的权限继承。这个层次结构在SQL数据库中管理是一个噩梦,现在可以依赖Visual Guard来应用这个层次结构和数据过滤。
最后,总是有一个责任问题。谁在应用程序中执行了什么安全操作,以及什么时间?过去,编写了巨大的数据库表和日志机制来提供这种安全内容的可审计性。Visual Guard提供了一个审计报告,输出应用程序中所有安全检查的记录。在手工制作了几个这样的服务之后,很高兴看到不需要再这样做了。根据Novalys的文档,Visual Guard符合HIPPA和SOX标准...这是可以留给专注于这项任务的专业人士的另一个头痛问题。