<b>3.10 流程与“反流程”</b>
<b></b>
<b>1. 人的问题</b>
在传统安全领域一直是强调流程的,但是互联网行业有一点反流程,甚至像facebook这样的公司还表示除非万不得已否则不会新建一条流程来解决问题。那安全建设到底要不要流程。首先有流程肯定能解决问题,但流程化是不是最佳实践则不确定。
于是先解决第一个问题:有没有可能没有流程,什么情况下可能很少或接近于没有流程。假如公司的人很少,从工位上站起来就能看到全公司的人,要发布版本吼一嗓子全员都能听到,这种情况下确实不需要什么流程,不只是安全流程,其他的流程也没必要。
如果组织比较大,单纯一个发布行为会涉及很多跨部门的人,甚至地域上都是分布式的团队,参与活动的人员行为即便是都挂在公司内部的im工具上一致性也无法保证,那这个时候为了尽可能规避人犯错,就会制定一些流程。随着组织越来越大,流程会越来越多,并且流程大都不是“进取和开放”型的,而是“错误规避”型的,整个组织的流程都会表现为在某个方向上高度优化,从而进入基因决定理论的影响范畴,流程的制作者为了保护既有权益,大多会僵化执行流程,开始走向自己的反面。作为安全负责人,必须周期性地审视安全和it治理的流程是不是太冗余了,是否可以精简一下,或者在公司业务扩张、新建业务线的时候考虑一下原有的流程是否适用于新的领域。如果安全负责人对这些问题比较漠视,要么对业务不敏感,要么自身提前进入不受激励的保乌纱帽状态了。
<b>2. 机器的问题</b>
流程是用来解决人容易犯错的问题,而不是用来解决机器犯错的问题,如果把流程用于解决机器犯错的问题那就会闹出笑话来。比如程序发布前,需要有一个安全检查的环节,如果不约定流程,很容易漏掉,这是在解决人步骤错误的问题。但是10000台机器打同一个补丁,有9990台都打上了没问题,剩下10台补丁有问题,这种问题应该通过技术手段解决,而不是通过流程来解决,如何让系统和程序返回人所期望的结果是技术需要解决的问题,跟流程没关系,当然有人说跟程序的执行流程(routine)有关系,是的此流程非彼流程。通过人为的流程来解决,人的工作会越来越多,忙于救火之中不堪重负,通过技术途径解决,组织的自动化程度会越来越高,生产力会越来越强,两条路最终会使团队走向两极分化,选哪一极就看团队的基因了。在前面的例子中为了衡量流程的执行结果,我们通常会引入一些技术的自动化手段来检测,例如被动式扫描,有些开发和运维漏掉安全审计环节直接上线了,也能把这些程序的url找到抓下来扫,当然它并不能替代流程本身的作用。