企业架构设计原则之品质均衡性(三)
十一、安全性
安全是系统重要的内置特性之一。现如今信息技术对日常工作、生活、娱乐以及社会治理的渗透水平已经非常之高,可以说每个人每天每时每刻不再与信息技术所构建的产品打交道。我们的个人敏感信息记录在各个产品的数据库中,我们的购物记录、观影记录等也都被记录。如果这些信息不加以保护,一旦被滥用,我们每个人将直接暴露在危险之中而不自知,这样的威胁是无法接受的。
因此,系统需要自觉地承担起保护信息安全的职责,具体来看,企业需要在至少以下几个方面加强管控确保数据安全可靠地存储。
(1)数据不泄露
无论是敏感信息还是留在各大系统中的个人记录,系统建设者都必须确保数据不泄露。具体措施可以结合技术手段和管理手段进行防护。
首先是技术手段,对于敏感信息需要加密存储,避免直接明文存储。因此明文存储隐患巨大,一旦泄露会导致用户敏感信息直接呈现在非法分子手中。而采用密文存储,即使不法分子通过非法途径拿到了数据,在不知道密钥的情况下要想解密难度将大大增大,甚至在时间和经济成本的制约下不大可能解密,从而保护用户信息的隐秘状态。
其次,敏感信息的展示也要采用掩码形式,避免直接明文展示。对于敏感信息的导出和跨系统传输也尽可能采用掩码和密文的形式。
其次,对于敏感信息的传输过程中也要加密,确保即使非法分子在网络中进行拦截,拿到的也是密文,对此他们也只能望洋兴叹,一筹莫展。
其次,从管理角度来看,需要确保秘钥的绝对隐秘性。一是密钥强度(或者复杂度)足够大,不容易被轻易猜到或穷举;二是密钥的掌握人员本身不能接触代码或数据,避免多重信息集中大一个角色手中失去制约性而存在泄密风险;三是密钥要区分环境,不同环境的密钥要严谨相同。
其次,对于数据库和日志权限分配需要尽可能地严格。最大授权范围尽可能小时间尽可能短的基本原则。
其次,系统访问和操作要留痕,确保核心操作有迹可循。一方面可以杜绝别有心思的人员铤而走险,因为有操作留痕,可以打消这种念头,防范事故的发生;另一方面即使还是发生了,也可以通过痕迹快速识别出操作人员和具体的操作内容,便于快速善后处理。
其次,产品设计中也要考虑加入多因素校验机制,譬如密码和验证码双重校验,避免单一校验机制容易被绕开。
最后,可信计算也是当前热门话题。如何确保数据在密动态情况下进行计算,确保在计算过程中也能够保证信息安全。
总之,数据不泄露是一个比较复杂的问题,急需从产品设计→数据展示→传输→计算→存储等多个层次入手,也要结合技术手段和管理手段多管齐下,更需思想意识层面的持续宣贯。
(2)数据不丢失
数据丢失是另一个必须杜绝的重大安全问题。试想想,等你临近退休之际,将毕生省吃俭用存下来的 50 万元存入某银行,某一天孩子准备结婚急需用钱的时候,你去到银行要求取钱,结果银行服务人员告诉你,没有找到你的存款记录,彼时的你是不是瞬间感觉头晕目眩站立不稳呢?或许这个问题有点极端,但事实上系统中的数据丢失所产生的危害程度确实非同小可,一家如日中天的公司很可能瞬间破产,甚至被告上法庭,牢狱之灾也未可知。
为了保证数据不丢失,存储备份自然是常规手段,必须安排妥当。此外,现在很多存储系统或者中间件本身都具备了数据分片的能力,可以将一份数据分成多份,并分布到不同的服务器上进行存储,以抵抗硬件故障。
其次,要对应用程序中涉及数据删除的逻辑慎之又慎,尽可能地避免物理删除取而代之的应用逻辑删除。即使业务逻辑要求必须物理删除,切记要保存操作记录,以备查询。
此外,数据访问权限也要严格控制,避免拥有删除权限的人有意或无意中删除了。故意删除的情况比较容易理解,现在很多员工工作压力大,容易导致情绪波动,一旦失控,很可能会失去理智选择极端报复手段,「删库跑路」可不仅仅是玩笑,真真实实是存在的。无意删除也是很可能发生的,人很容易出现失误,尤其是精力不集中的时候,或者其他意外手一滑就容易出现不可预料的动作,而这类动作很可能到来灾难性后果。因此,必须加以限制,假设人可能会删除数据为前提进行管理和设计。此外,对于服务的命令也可以做一些防护,譬如对于删除命名重命名(将 rm 改为 iwanttorm)通过增加复杂度来避免手误。
此外,代码也要定期进行检查,避免被恶意植入漏洞。譬如一个定时任务在预定的某个时间触发,会导致删除一些数据并没有记录。也有可能偷偷开放了一个对外接口,可以轻松调用从而触发删除动作。防人之心不可无,对于高度重要的系统,这样的安全扫描是必不可少的。并且需要将安全扫描工具纳入到研发流程之中,对每一个版本进行安全检测通过之后才允许上线。日常的服务器漏洞检查和扫描更是必不可少的。总之,安全无小事,切不可大意或侥幸。
最后,对于一些组件的漏洞进行攻击从而导致数据泄露或删除的案例也时有发生。在条件允许的情况下,采购专业齐全的安全防护产品也是很有必要的,譬如防火墙,应用防火墙,安全扫描工具等。
(3)数据不被越权访问
数据隔离也是安全的重要方面之一。数据隔离的重要表现之一就是只有有权限的用户才能访问对应的数据。譬如用户张三默认情况下只能访问张三自己的数据,如果看到了李四的数据,通常是不合理的,当然有些业务设计上允许这类情况的发生除外(如内容生产平台里边常见的订阅和关注)。防止数据越权的手段之一就是数据权限范围校验,超出权限的行为一律禁止。
在 SaaS 型产品中,数据越权问题尤其容易发生。因此也必须随意留意,并且可以做成通用逻辑,因为 SaaS 型产品一旦一个租户看到其他租户的信息,可能产生不良后果。如果还能够操作,那潜在的后果更加严重。
(4)系统能抗住攻击不宕机
恶意攻击是一个伴随着互联网兴起就一直存在的经典问题,也是老生常谈的问题。作为系统设计者无法绕开这个问题,直面是唯一的出路。
抗住攻击不宕机的手段之一就是流量限制。当某个用户或 IP 短时间内请求次数超过一定阈值则直接中断,必要时直接添加到防火墙黑名单进行最短路径拦截。
当然,鉴于互联网恶意攻击的频率越来越高、攻击手段越来越多样,瞬时攻击强度也可能越来越强,许多网络安全厂商顺势而起,相对应地提供了许多防护产品。如果公司业务非常重要,一旦中断影响后果很严重,不妨适量采购一些安全产品,效果还是可以的。毕竟术业有专攻,专业的人做专业的事,一定程度上也符合架构思维中分而治之的思想。
(5)数据收集要合规
数据收集的问题在移动互联网之下被放大了很多倍。很多应用只要已启动就会默默地在后台收集各种信息。近些年随着监管政策的出台,要求数据收集必须明确提出并且要得到用户的授权,否则就是违规。
因此无论是产品方案设计还是架构设计,这一点都必要重点考虑。很多产品为了尽可能掌握用户真实事情情况从而开展体验分析和运营效果优化,都会采集大量的行为日志,很多还需要附带一些地域信息、网络环境信息和设备信息。其中就包括一些敏感信息。因此,需要重点考虑安全合规问题,否则被下架整改不仅仅耽误业务开展,负面消息对企业经营也是巨大的冲击。
最后强调一点,安全是一个很大的话题,涉及的内容非常丰富,对于从事系统设计的架构师而言,有必要全面地了解一下,以便于预备在前,至于具体的落地方案,可以根据企业实际情况,性价比合适的情况采购也是不错的选择。
版权声明: 本文为 InfoQ 作者【凌晞】的原创文章。
原文链接:【http://xie.infoq.cn/article/e5b00b77be7d3a210d3f3c443】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论