相信大多数人都经历过一次或多次的离职,每次离职时都会涉及到一些权限的收回、账号的关闭等事项。
在公司资源全部在内网时,这个问题比较简单,容易处理,基本上把员工连接内网的权限收回,就可以掩盖很多漏洞了,即使个别系统中的账号没有关闭,也无伤大雅。
但是在公有云时代,很多事情变得不同了。
在权限管理不够严格和标准的公司里,可能会有多人共享同一账号的情况存在。即使有人离职了,因为怕麻烦等原因,可能也并不会修改此公共账号的密码。
当这些账号只在内网可用时,问题不算很大,而当这些账号是公网上的第三方服务账号时,就很麻烦了。恶意的员工可能会利用这种漏洞,篡改一些线上的数据,或者抓取一些机密信息等。
权限集中在一个或少数几个账号时,如果这些账号泄露了,就会造成极恶劣的安全隐患。
而且这个泄露的过程,并非是只有恶意员工才会泄露,一个正常的员工也可能会因为操作不当,中病毒等原因将一些重要的密码泄露出去。
如oh-my-zsh
这样的工具,安装命令是先下载一个远程的shell,然后本地执行。若oh-my-zsh
的维护人员中有恶意人员,或其被恶意人员攻击,或传输过程被劫持等,都有可能造成开发者的计算机中执行了恶意代码。
加上一般云服务有固定的鉴权存储位置,如AWS的~/.aws/credentials
或环境变量,恶意软件很容易获取到相应的公有云密钥。
其它各种软件包、镜像仓库等,如homebrew、npm、dockerhub等,都有可能存在类似的风险。
在私有云时代这种问题不明显,在于即使盗了相关账号,也很难使用。但是公有云就大大地不同了。
现在已经有一些第三方的解决方案,如将代码开源供审查,以及加密传输防劫持等。
但是这些都是不可控的因素,解决不了根本的问题。
要彻底控制这种问题的发生,或规模。就需要从企业内部角度,寻求更好的解决方案。
下面是几个思路:
- 启用SSO单点登录,除了极个别的核心员工以外,大部分人都不持有任何公有云的密钥信息,所有权限的获取都通过公司内账号代理,且尽量自动将密钥填充到需要的地方,不将它显示给员工。
- 权限动态化、碎片化。使用类似AWS IAM之类的技术,将用户可用权限限制在最小范围内,根据需求动态地添加和删除角色等。
- 密钥自动过期(临时密钥):每隔一段时间(如一天)将密钥自动过期,重新生成新的密钥。与SSO相结合,对正常用户无感知。对恶意用户来说,则使其持有的密钥尽快失效,且能在重要员工离职后手动触发密码变更流程,不影响正常业务。
- 账号按业务线隔离。