业内新闻

2019DOIS 大会,玉符科技助企业迎接云安全挑战

编辑/作者:安安 2019-07-12 我要评论

作为国内唯一的国际性DevOps 技术峰会,DevOps 国际峰会(DevOps International Summit,缩写:DOIS)承载着精益与敏捷、持续交付/自动化测试、技术运营、高可用架构与微服务、De...

  作为国内唯一的国际性DevOps 技术峰会,DevOps 国际峰会(DevOps International Summit,缩写:DOIS)承载着精益与敏捷、持续交付/自动化测试、技术运营、高可用架构与微服务、DevSecOps、组织与文化,目前是国内唯一覆盖 DevOps 全领域的技术大会。

  今年的DOIS 大会邀请了全球顶级专家畅谈 DevOps 体系与方法、过程与实践、工具与技术。其中,玉符科技CTO陈伟嘉受邀参加题为“DevOps如何迎接不断蔓延的云安全挑战”的演讲。

  玉符科技CTO陈伟嘉

  据了解,陈伟嘉多年致力于面向未来的技术应用和实践,擅长于涵盖分布式系统、微服务架构、Web应用、机器学习。他在Facebook期间,曾利用大数据分析、智能语音识别技术,负责视频平台功能开发;在Splunk曾负责分布式集群的自动化调度和部署。

  陈伟嘉一直相信技术改变世界,关于DevOps,他结合玉符身份统一认证和管理服务,从实践出发围绕安全管理演化、代码安全、线上应用的安全进行了分享。

  他认为,安全性和易用性是鱼与熊掌不可兼得的两个方面,在新的技术趋势下,打破这两者的平衡,兼顾两者将成为推动DevOps全面发展的重要动力。

  会上,他表示,在面对不断蔓延的云安全挑战时,传统的服务和应用安全管控方式暴露出很多缺陷,作为DevOps甚至DevSecOps需要配合开发甚至全公司一起进行安全实践。

  此次大会重点围绕探索技术风向、洞悉行业发展、共创新一代软件工程等方面展开。陈伟嘉介绍,玉符科技作为领先的企业身份管理(IAM)云服务商,将利用集成认证技术,帮助企业更好地应对云时代下复杂、繁琐的身份认证和权限管理。

  他介绍,玉符科技将在新时代下,提供统一目录(UD),单点登录(SSO),账户生命周期管理(LCM)和安全审计(SA)产品及服务,为客户打造完整的企业身份信息管理体系,帮助企业降低成本、提升运维效率、增强业务协同性,进而提升企业身份的整体安全级别。

  如果从开发角度去理解安全,在开发人员眼中,企业内部效率和安全是一对矛盾体。在陈伟嘉看来,从效率和安全中间除了矛盾,还有一些突破口,可以从DevOps下手去解决。以下为陈伟嘉演讲的主要内容:

  安全管理的演化

  在小团队里,安全比较简单、暴力,开发负责代码安全,运维负责线上和应用的安全。这种管理方式,会把权限集中到某一些人身上,但是这些人缺乏专业的安全知识。更严重的是,这些人往往不知道自己担负的这些责任,只有到了出现“黑天鹅事件”之后,他们才会发现错误。

  在规模稍大的公司里,会有专门的信息安全团队,或者有自己的合规团队。这些团队会专门负责审查代码安全,评估线上安全,通过KPI驱动的方式,让开发、运维人员修复安全漏洞。

  现在很多大型互联网公司都采用这种方式,效率很低,这个过程会涉及很多沟通以及KPI的驱动,使得开发和运维人员显得非常被动。

  现在为什么强调DevSecOps的概念,也就是开发、安全、运维一体化,因为只有这样的团队或角色从三个维度一起去关注这些代码和线上应用的安全,才可能减少大量沟通,高效协作,解决代码安全问题,找到定位。而且,DevSecOps这个概念并不是只有大的企业才会存在。

  就代码扫描来说,DevOps可以利用各种自动化工具,帮助开发人员尽早地发现代码里的漏洞和其他问题。分两方面:

  1、漏洞的扫描。

  2、代码审查和版本的限制。

  对于代码审查而言,FindBugs、SonarQube、Google Search这些免费工具运行起来非常快,只需通过一个很表面的代码语义分析进行简单的扫描,就能扫出一些简单的漏洞。所以可以把他们集成到CI/CD流程中,在开发每次提交代码时进行初步检查,定位明显的漏洞。

  这样做的劣势是它的准确性很低,而且找不到深层次的Bug,但是在实践的过程中,在第一次扫描代码的时候,找到了很多漏洞。

  或者再进一步,利用一些商用软件,通过更深层次的逻辑流和代码的数据流,分析、查询更深层次的代码问题。

  不过,这些工具有很多缺点,譬如:

  1、和安全相关的软件都很贵。

  2、上手非常困难。需要很多安全的支持,或者是向代码注入安全问题,都需要有一些上下文才能用好这个软件,进而查找相对应业务逻辑的安全问题。

  3、运行起来很慢,所以一般不适用于在CI的过程中运行。

  从投入产出比和运维能力来看,很多公司并不希望运维开发太多地限制开发效率,而是在不同阶段使用不同的工具。玉符科技在早期只用了SonarQube来做代码的安全扫描,后期加入了CodeSonar进行更深层次的代码扫描。

  在开发过程中,除了代码审查和代码版本控制,还会引用各种各样的外部第三方开源的代码,但是要重视代码的安全性。对于代码的安全性,最好的实践方式是在CI/CD里加入一个白名单控制,只允许生产线上的制品在构建过程中引用那些已知、可信的包,否则,这些制品将会存在很严重的安全漏洞。

  因此,除了只允许引用可信版本之外,及时升级第三方的包也显得尤为重要。举个例子,在2017年发生的Fastjson漏洞事件,起因就是旧版本存在一个严重的安全漏洞,人们可以任意攻击那些服务器。当时国内很多家企业通宵升级,修复这个漏洞。所以,作为开发、运维,可能会更早发现这个问题,驱动开发,修复这个漏洞。

  所以,很多库都可能会有类似的问题,需要在自己的CI/CD里,对这些版本进行追踪,必要的时候修复第三方库的问题。从投入产出比里来看,整个代码的安全,在DevOps看来,推进起来都很困难。

  线上安全

  为保证线上安全,DevOps如何推进?

  第一,安全加密。三个途径:传输加密、数据加密、算法更新与密钥轮转。

   1、传输加密。

  在HTTP改造成HTTPS的时候,因为传输过程是加密的,就算中间的数据被窃取,也无法查看里面的信息明文。

  除了HTTPS,像SMTPS、LDAPS、RDP over SSL这些对应的加密协议,最好加一些限制,以推动企业内部的协议替换成有用证书加密的内容。

  这会大大降低开发过程中的压力,因为开发一直要关心代码传输过程中泄密的风险,如果可以强制要求所有的传输都走SSL通道,就不需要关心太多这样的问题,企业也可以帮助开发把系统做的更安全。

  2、数据加密。

  举一个例子,当关掉Swap的时候,是希望内存里的信息、数据不要存到硬盘上,因为在很多情况下,敏感信息暴露在内存里会更好一些,但是像服务器的硬盘,数据库等,最好是被加密过的。

  很多帮助数据加密上云的厂商,大部分也是采用这种一文一密(子钥匙)的机制,比起用一个通用密钥来加密,解密所有信息的方式更安全。

  它的工作流程大概是这样的:当你需要加密一个数据的时候,第一件事情是生成一个随机或者是临时生成一个子钥匙,然后通过这个子钥匙给一个数据加密,加完密以后把数据传到持久化层里去,再把子钥匙加密一次,放到持久化层。

  这种方式有一个好处,就是真的在被拖库的时候,黑客很难从数据库里再持久化信息,反推出Master Key也好,或者是原来加密的方式。所以,这样比起只用一个Key进行加、解密,安全性更高。

  有了这两个加密方式之后,其实还有很多安全漏洞存在。业界都知道,没有绝对安全的加密算法,因为所有的算法都基于一个理论,要破解一个数据需要花大概一百年或以上的算力,才能破解这个信息。

  比如,在2012年,破解一个SHA1的密码需要500万人民币的公有云计算资源,2015年出现了一个新的破解方式,费用降到几万块。从2015年开始,大家推荐不再用SHA1进行任何的加密、解密,因为它已经被证明是不安全的。

  在实践过程中,要注意淘汰一些已经过时的加密算法,否则整个系统还是会暴露在危险当中。

  3、密钥的轮转。

  这些用来加密的钥匙其实都是要定期轮转、淘汰,换一个靶心的,跟账号体系密码轮转是一样的道理。

  如果一个黑客破解一个密码只需要三十天,就需要让所有用户的密码大概二十九天轮转一次,这样的好处是,当有人在破解密码的时候,你永远赶在他破解出来之前换了一个新的钥匙,他的破解就完全作废了。这也是一个比较常见的实践。

  第二,权限分割管理。

  把一个权限分成几个互补的部分,如果有一部分被盗,或者泄漏了,也不至于丢失整个权限。

  这里分两个部分:

    1、代码的密钥信息解耦

  在Bilibili的代码泄漏的时候,里面存了一部分SMTP的密钥信息,其实就是程序员把密码写到程序里了,这样的做法非常不规范。而且,内部所有的程序员开发可以看到这样的密码,这样很不安全。

  比较规范的做法是这样的:基于现有的阿波罗开源的一些资源,做一个配置中心,让运维来管,把相应所有的凭证信息全部放到配置中心里,开发的程序在运行过程中只需要引用这些凭证信息就可以了,这样的话责任分得很清楚,也会相对安全很多。

  有三个最佳实践的原则:

  原则一:开发前一般情况下是不可以看到这些密钥信息的。

  原则二:不同环境(测试、预生产、生产)都应该有不同的密钥信息。

  原则三:这些信息最好是可以进行动态修改的,现存的很多开源框架都只有这样的功能。

   2、Master Key权限分割

  把权限拆分成多个,现在有一个很有名的算法叫密钥分享算法,可以把一个钥匙拆成N份,只需要其中的几份。比如五份,只要有其中任意三份就能让这个钥匙生效。

  这样的一个理论,就可以把生产上很重要的私钥拆成多份给不同的人,可以一部分给开发,一部分给运维,如果其中一个丢失了,都无所谓。但是它们在生效的时候,需要多个人在场,才能使这个密钥启动生效,这也是一个很常见的理论。

   应用的安全管理

  这是运维过程中很容易出问题一部分。

  1、强制权限管理

  在运维的环境里不应该出现没有任何账号体系或者是权限控制的系统。实际过程中好多公司都直接暴露在内网,所有人都可以访问。

  大部分公司对于监控和系统的管理都存在一些漏洞,有人希望把大电视直接连到服务器上,直接看到这些日志,所以大电视本身没有人去操作和登录,不需要账号体系。但是事实上因为这些漏洞,导致很多人可以到某公司内网就可以查到该公司的很多机密信息。

  当然还有一些私有制品、镜像库,也是重灾区。

  2、统一身份的数据管理

  除了改造这个系统之外,更多的是加一个类似于统一官网的网,对这些系统进行保护。

  还有一个需要强调的是有了权限控制的系统,随着服务和系统越来越多,也要考虑这些系统的权限,怎么在员工调岗或者离职的时候,及时地进行变更。通过人力的方式不太可能,最好是通过自动化的工具或者系统,统一地进行权限变更,在离职或是有任何调整的时候,及时地对权限进行增删改查。

  3、审计

  如果有条件的公司,其实都会买大型的安全审计系统,有这个系统就可以审计每个员工在公司内部到底操作了什么行为,所有行为都可以被监测到。如果没有条件、没有预算的话,可以考虑只用统一认证系统或者是统一身份系统做这样一个审计,完全可以审计到每个人什么时间点用什么设备,访问了什么信息,这样就可以大大增加审计的信息量。

  4、多因素认证

  在系统里能增加一个额外的保护机制,让企业的系统特别是一些敏感的HR系统被访问的时候,可以触发一个统一的动态码或者是一次性密码的方式,相当于多了一层保护。

  在触发这样的保护机制的时候,很容易遭用户烦,因为他们认为这样的机制大大降低了使用的体验和习惯、效率。有一些好的工具,可以让用户在特定条件下(例如在家里办公的时候,或者是用非常用设备的时候)才会触发这样的保护机制,这样的话可以在兼顾易用性和安全性上做得更好。

  这也是玉符科技一直以来专注的领域,也是玉符多个行业专家和一线互联网研发致力于帮企业去解决的一个问题,帮助其在效率和安全中找到突破口。

文章来源:IT168

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。4、对于网友投稿的文章请仔细核对其真实性,如遇要求汇款转账情况,请格外谨慎。

相关文章
  • 严把网络安全关|CIS 2020天威诚信精彩亮相

    严把网络安全关|CIS 2020天威诚信精彩亮相

  • 鼎和保险公司荣获CIS2020中国网络安全创新年度金

    鼎和保险公司荣获CIS2020中国网络安全创新年度金

  • 通付盾荣登《2020中国网络安全产业100强》榜单

    通付盾荣登《2020中国网络安全产业100强》榜单

  • 腾讯安全与奇安信达成战略合作

    腾讯安全与奇安信达成战略合作