运用Ruby纤程进行异步I/O:NeverBlock和Revactor
Ruby 1.9的纤程(Fibers)和非阻塞I/O越来越收到关注了。我们对来自NeverBlock项目的Mohammad A. Ali和来自Revactor项目的Tone Arcieri进行了访谈。
作者 Michael Bushe译者 郭晓刚 发布于 2008年3月3日 下午8时42分
法国兴业银行(Société Générale)的Jerome Kerviel犯下的49亿欧元(72亿美元)欺诈案令全球都开始讨论,像这样一家受尊敬的金融机构,他们的系统是如何被绕过的。
金融机构和其他商业组织必须遵守法律规章,比如MiFID和SOX,才能降低金融风险并得出精确的会计报告。企业内部也存在风险管理的内在动力:诈骗和盗窃都会减少利润,甚至导致经营失败。因此企业在社会工程和技术工程上都进行了巨大的投资,以实现能降低风险的内部控制。
正如Bruce Schneier立即指出的,防欺诈保护的强度主要是由人的因素决定的,而不是技术因素。在警察报告中,Kerviel声称Société Générale视而不见,因为他所做的交易非常有利可图。如果他说的是真的,那么任何软件系统都无能为力。对Jerome Kerviel的调查可以看出社会因素与技术因素之间的相互影响。
InfoQ询问了Jim Sheehy的看法,他是一名CISSP,在一个大型的州政府部门担任IT安全经理。
不要低估老一套的、非技术的控制,它们在金融机构中一直行之有效:职责分离、强迫雇员休假、双重控制系统等等。
有些风险控制软件可以跟踪习惯,比如监测人们何时登录进哪一台工作站,还有他们何时在假期登录进系统。这样的软件应该能发现Kerviel用其他用户的账号登录,也应该能对Kerviel在2007年只休了4天假的情况发出警告。其他方案还有通过搜索邮件和检测击键来发现可疑的关键字和不寻常的活动,比如修改一封转发过来的邮件。Kerviel被怀疑伪造指令请求邮件,以搪塞对他的交易的疑问。
当然500亿欧元不会由于几封小小的伪造邮件就不知所终。所有金融机构都有帐目核对的程序,每个帐户中的资产都要由另一个来源确认。Robert Annett说,即使只是开发一个在线商店,你也应该保证收到的付款要和发出去的货物对得上。
Kerviel被怀疑通过访问数据库,调整了数据库中的数值来掩盖他的交易,从而绕过了内部的账目检查。交易系统总会有应用程序审核以及数据库审核表。除非Kerviel拥有数据库管理员权限,不然他的活动会被记录下来。谁都没注意到吗?
Sheehy说:
在系统的每个层次上都进行审核是必要的,但这只是起步。必须有人去分析这些审核数据,数据才能起到作用,这是大多数组织都没做到的。Oracle Fine-Grained Audit日志可不是什么好看的东西,OS日志也一样。事件关联系统(event correlation systems)尝试去分析不同来源的审核数据,并将之互相联系起来。虽然事件关联系统试图填补这个角色空白,但它们经常只是制造出更多的误报。这是一个很难解决的问题。
确实,风险管理行业虽然很活跃,但还很不成熟。现在可以找到许多综合方案,有BPS、Memento、Actimize,还有SaS、Reuters提出的方案。
但这些方案本身也是问题的一部分。当企业安装了欺诈检测系统之后,可能变得自满。有人认为,由于自从霸菱银行因8.27亿欧元(14亿美元)诈骗而倒闭以来,诈骗检测系统在10年间已经日趋完善,可能使得欧洲金融业的员工太过信任自动化了。不能让系统代替人来进行安全方面的思考,这是很重要的。大多数“白帽”安全顾问都同意,在任何业务中,总是存在盗窃的机会。因此对于系统和应用的安全,必须时时保持警惕和创新。
那么,一名软件架构是可以做什么去检测和防止欺诈呢?
Sheehy说:
我认为一名软件架构师能做的最重要的事情,是小心地思考应用程序的业务角色,将它们紧紧地映射进一个基于角色的访问控制系统。只凭借技术屏障,比如防火墙、第7层内容过滤、入侵检测之类是不够的——开发者必须在生命期的最初阶段就把安全构建到应用程序的逻辑中去。
可惜问题还不止于此。软件正变得更加复杂和松散耦合。Annett还指出,随着SOA的发展,系统的入口越来越多,因此安全风险也越来越大。另一方面,SOA中资源的去中心化使我们更难实现一个完整的规划。
架构师还可以采取以下一些步骤来提高他们组织的安全性:
也许架构师自己单枪匹马没法挫败几百万美元的欺诈,但架构师可以帮助企业保持利润、信誉和声望。
查看英文原文:Can Architects Stop Financial Ruin and Market Meltdowns?Ruby 1.9的纤程(Fibers)和非阻塞I/O越来越收到关注了。我们对来自NeverBlock项目的Mohammad A. Ali和来自Revactor项目的Tone Arcieri进行了访谈。
InfoQ中文站有幸与Google中国的产品经理杨巍先生在一起探讨了OpenSocial的相关话题,包括OpenSocial的初衷、构成要素、实现方式、以及要实现它的技术储备等等。
Ryan Cooper对Amr Elssamadisy的新书发表了评价,并认为书中提供了一种为实施敏捷量身定做的框架。本书并没有给出一种人人可用的敏捷方法,而是为读者提供一些模式和工具,用以找出哪些敏捷实践可以最有效地达到该组织机构的特定目标。
这个由业界主要专家们参加的座谈会探究了在使应用程序具备尽可能好的伸缩性及性能的过程中所面临的挑战和思考过程。
本视频主要对OpenSocial进行了分析,并对实现的方式进行了介绍。其中包括:OpenSocial的开发经验、Container Provider的技术准备、平台的构成要素、具体的规范、以及对未来的展望。
Memcached在大型网站被应用得越来越广泛,但是Java客户端并不多,本文作者基于现有的开源客户端进行了封装优化,并翔实记录了这一过程。
在他们文章的第二部分,作者探讨了动态业务应用的架构并介绍了资源容器的概念。他们示范了如何在JEE之上构建这个架构,以及它如何影响实现生产力。
ClickOnce让WinForms应用程序的部署轻而易举。David Cooksey演示了如何在ASP.NET中编写一个HttpHandler来实现对ClickOnce部署的版本细分。
没有回复
回复