大型 IT 公司如何防止运维偷窥和篡改数据
发布日期:2021-07-01 03:57:29 浏览次数:2 分类:技术文章

本文共 1571 字,大约阅读时间需要 5 分钟。

640?wx_fmt=jpeg

问题:像 BAT 这类公司,以及各种银行,金融行业的 IT 运维,他们有着服务器的最高权限,那么这种行业如何对运维的操作权限进行审计和监管?

以下为知乎用户@张成的回答:

曾经在AppAnnie做过一段时间运维,分享一下AppAnnie的做法。

先说一些一些背景信息:AppAnnie有两个相关的团队,一个是运维,一个是安全。从线上操作来说,运维和安全的权限是一样的。研发团队大多数人都没有访问生产环境主机的权限,只有极个别Leader有权访问,但是每次访问都需要安全组授权,一般只有在处理紧急问题时才会允许。

接下来讲一些具体的措施或者操作方法。

1、每个人(运维&安全)都使用个人账号登陆服务器,不允许使用root登陆。线上的所有命令都会被记录到系统日志中,包括通过sudo执行的命令,SUDO_USER也会被记录下来,因此主机上执行的所有命令,都可以找到是谁在什么时间做的。

所有主机上安装了ossec,监控命令日志,对于所有可能的敏感操作(如sudo、rm、对某些路径的访问等等),都会立刻发邮件到安全组+运维组的列表里。因此,运维和安全组里的任何人执行的命令,都是时刻接受两个组所有人的监督的。除非你能找到漏洞绕过这个命令日志监控,否则很难偷偷的做一些事情。

2、数据库的主机有着更严格的安全策略。上面的防火墙设置了按会话流量切断连接的的规则,一个SSH会话的流量超过100K之后就会强制断开,因此,就算你想select *,然后手动从终端上复制数据出来,能得到的数据量都非常有限(更何况你执行的所有命令都有集体监督)。

3、研发人员有时候确实需要访问一些生产环境数据的,需要向安全组申请。安全组同意后,由运维组写脚本dump数据,这个脚本中会在dump数据时,将敏感信息隐藏掉(比如替换成无意义的随机字符),这个脚本给安全组审查同意后,再去生产环境执行。最后把dump出来的数据拷贝回来。(拷贝时,会在防火墙上开一个临时规则。)

总结的说,有这几点:

1、制度上最小权限原则。虽然你有root(sudo)权限,但你不允许执行未经许可的命令,而且除非必要,不允许查看敏感数据。比如前面讲的导出数据库中的数据时,运维其实也是看不到生产环境中的敏感数据的。

2、相互监督。我们当时运维+安全+CTO共6个人,6个人都会接收命令日志告警(但CTO没有生产环境的账号,他接收告警纯粹是监督)。如果要做坏事,除非这6个人都达成一致,一起干。如果真的到这个局面了,那基本上就是CEO被架空了,这帮人要携数据跑路了。

AppAnnie这样做的代价是,凡是与安全相关的流程都很冗长,一件事要拖很久。除了上述提到的事情,平时研发团队的代码里如果要用到加密,那么加密的算法、参数也都是要安全组审查的,没通过审查是不能上线的。代码里所有的数据库操作也都会有审查。

而当时的安全组其实就一个人(其他都是实习生,没有决定权,这个人曾经在某银行做安全),这个人经常在世界各地的多个办公室之间跑,因此常常一个审查要等上一周。但是公司层面愿意为了安全而妥协上线效率。

我觉得,企业文化中的安全意识非常重要。国内的绝大多数公司,并没有这样的安全意识,大家的安全仅仅是建立在对人的信任之上,这是很可怕的。而且,在安全和更高的运作效率上,国内大多数企业是倾向于后者的,大家嘴上都说安全很重要,但实际上在大家的内心中,安全与我有何干?又不算KPI的。

原文链接:https://www.zhihu.com/question/54559547/answer/166396284

- MORE | 往期精彩文章 -

如果你喜欢本文

请长按二维码关注民工哥技术之路

640?

转发朋友圈,是对我最大的支持。

640?

扫码加群交流

点击【阅读原文】公众号所有的精华都在这

在看的读者,请点这里↓

转载地址:https://mingongge.blog.csdn.net/article/details/89368727 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:利用 ELK 搭建 Docker 容器化应用日志中心
下一篇:浏览器缓存的这些知识点你都清楚吗?

发表评论

最新留言

很好
[***.229.124.182]2024年04月25日 04时10分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Linux安装Zookeeper(Centos7) 2019-05-03
ACM进阶计划(来自于南阳理工学院) 2019-05-03
Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解 2019-05-03
Scala学习第九天 Scala的内部类实战详解 2019-05-03
Scala学习第十天 Scala单例对象、伴生对象实战详解 2019-05-03
Scala学习第十一天 Scala中的apply实战详解 2019-05-03
Scala学习第七天 Scala类的属性和对象私有字段实战详解 2019-05-03
Scala学习第六天 Map、Tuple、Zip实战解析 2019-05-03
Scala学习第四天 Scala的For与Function进阶实战、Lazy的使用 2019-05-03
Scala学习第三天 Tuple、Array、May与文件操作入门实战 2019-05-03
Scala学习第二天 Scala函数定义、流程控制、异常处理 2019-05-03
Scala学习第五天 Scala数组操作实战详解 2019-05-03
基于key-value的存储系统Redis 2019-05-03
Scala学习第十二天 Scala中的继承:超类的构造、重写字段、重写方法代码实战 2019-05-03
Scala学习第十三天 抽象类、抽象字段、抽象方法 2019-05-03
Scala学习第十四天 Scala中作为接口的trait、在对象中混入trait代码实战 2019-05-03
Scala学习第十五天 Scala多重继承、多重继承构造器执行顺序及AOP实现 2019-05-03
Scala学习第十六天 包的定义、包对象、包的引用、包的隐式引用代码实战 2019-05-03
Scala学习第十七天 包、类、对象、成员、伴生类、伴生对象访问权限实战彻底详解 2019-05-03
Scala学习第十八天 文件的读取、写入、控制台输入操作代码实战 2019-05-03