为了安全感,我们安装了一道形同虚设的闸机
Hacker News 摘要原标题:We installed a single turnstile to feel secure
在一间大公司收购作者所在的企业后,安全成为了公司的首要任务。公司占据了三栋至少 13 层高的大楼。为了加强安全,公司在每个入口、每部电梯,甚至八层高的停车场入口都安装了工牌阅读器。
初始的安全措施与混乱
停车场系统首先启用。员工停车需要扫描工牌,这导致大门前开始排起长队。随后,办公楼内部的门禁也被激活。作者经常把工牌忘在办公桌上,结果被困在楼梯间。有时候作者吃完午饭爬楼梯回到 11 层,却发现自己被锁在门外。由于楼里人很多,总有其他员工会帮作者开门,尽管公司发过邮件明确要求严禁给他人开门。
隐藏的真实安全隐患
作为一名软件工程师,作者深知安全并非附加功能,而应是架构的基础。当时作者正在处理一个管理 Jira 任务的应用程序。由于前任开发者为了赶时间,没有保存 API 返回的验证令牌(token),导致每次调用接口都要重新验证。更糟糕的是,开发者将用户名和密码直接存储在浏览器的 cookies 中,仅仅做了一层 base64 编码。
闸机的安装与测试
公司开始在大楼底层安装外观极具未来感的闸机。作者预见到这会带来巨大的麻烦,因为每栋楼有 13 层,每层都挤满了员工,数百人每天都要挤在一起刷卡进入。
在正式启用前,公司安排了一个测试日。闸机保持开启状态,但员工必须刷卡,等待绿灯闪烁并听到蜂鸣声后再进入。测试当天,大家还觉得很有趣,甚至在第一台机器发出响声时鼓掌庆祝。
灾难性的正式启用
正式启用的第一天,混乱爆发了:
1. 交通堵塞:作者在停车场入口排队等了 10 分钟。下车后发现,等候进入大楼的长队已经排到了停车场这一层。
2. 漫长的等待:为了进入大厅,作者排了 30 分钟的队。他给经理发短信请假说会缺席每日站会,结果发现经理也正站在队伍的前排向他招手。
3. 电梯混乱:通过闸机后,更大的混乱在电梯口等着。电梯内的工牌阅读器也启用了,几十个人挤在狭窄的电梯里,每个人都要刷卡才能去自己权限所属的楼层。由于电梯太挤,很多人根本够不到读卡器,导致电梯门开了又关,甚至有人不得不坐回一楼重新尝试。
从停车场到 11 层的办公室,作者花了一个多小时。第二天,作者尝试打 Uber 上班,结果发现几百人都有同样的想法,大量的网约车把大楼入口堵得水泄不通。
形式主义与现实的差距
由于系统完全无法支撑正常办公,第三天公司关闭了闸机和电梯读卡器。
讽刺的是,虽然公司在大费周章地搞这些看得见的安全措施,却没有人关心储存在 cookies 里的 Jira 凭据。作者请求安装 Redis 服务来安全地存储验证令牌,却遭到了重重阻力。他不得不写大量的证明文件,向供应商申请企业支持,折腾了一个月才悄无声息地修复了这个真正的安全漏洞。
不久后,公司发了一封欢庆邮件,宣布大厅新安装了三台闸机。电梯里的读卡器虽然没再启用,但依然挂在那里。
总结:安全表演
作者认为,这就是典型的安全表演(Security Theater)。闸机是可见的、昂贵的,虽然干扰了大家的工作,但管理层可以借此宣称他们正在严肃对待安全。
真正的安全往往是不可见的,它体现在代码审查、合理的身份验证和正确的令牌存储中。真正的安全没有剪彩仪式,也不会出现在全公司的庆祝邮件里。只有当事情做对时,才没有人会注意到它的存在。
原文:https://idiallo.com/blog/installed-single-turnstile-for-security-theater