序言
一直以来,公有云安全是横亘在广大用户面前的一道鸿沟。云安全(Cloud Security)是指用于控制云计算的安全性、合规性和其他使用风险的过程、机制和服务。公有云提供商们都强调安全是其最高优先级工作,动辄就发布上百页的云上安全最佳实践白皮书,举办几百几千人安全大会,发布几十甚至上百个安全服务。但与此同时,用户们对云上安全的担心一直挥之不去。在福布斯(Forbes)2019年的一份报告中,66%的IT从业人员认为安全是他们使用公有云服务最大的担心。Gartner预测到2020年,至少50%的企业用户会在不知情或误操作地将一些IAAS存储服务、网络、应用或API直接暴露到互联网上,而到2023年,至少99%的云上安全问题都是用户的错误引起的。
正文
那到底是什么造成了这条鸿沟呢?笔者认为原因主要有三:一是用户不知道自己该为云中安全承担什么责任,二是用户不知道云中安全服务的用途和用法,三是用户不知道要为自己的应用选择哪些安全服务。只有对症下药,从明确自己的责任开始,在了解云中的安全服务后,再选择合适的安全服务,才能跨越鸿沟,开启云中安全之旅。
第一步:明晰职责 – 搞清楚你要为云中安全承担的责任
要实施成功的云安全,第一要务是分清云提供商和作为用户的你的责任。公有云中的安全性和本地数据中心中的安全性有所不同。在传统数据中心安全模型中,你要为全部的安全性负责,包括机房、物理网络、物理服务器、虚拟机、应用等等。当负载被迁移到了公有云上后,一部分安全责任由公有云提供商承担了,但企业安全团队依然需要承担部分安全责任。此时,安全模型变成了安全责任共担模型,也就是说你和公有云提供商一起来为你在他们云中的应用的安全负责。
Amazon Web Service(AWS)是全球最大公有云提供商。其安全责任共担模型(Shared Responsibility Model)明确指出,AWS负责提供安全的基础设施和服务,而客户负责保护操作系统、平台和数据。
图1:AWS安全责任共担模型(基础设施服务)
在AWS安全共担模型中,AWS负责保障云“的”安全性,这是AWS的第一责任。以可用区(Availability Zone,AZ)为例,这是AWS云基础设施的一部分,AWS负责为数百万活跃客户提供安全的可用区。AWS云的每个可用区由两个或以上的互相隔离的数据中心构成,数据中心之间有足够的隔离距离,每个数据中心有独立的电力供应,数据中心采用冗余高速网络互连等等。
图2:AWS可用区设计
AWS有一整套安全制度来保障每个数据中心的安全平稳运行。比如每个数据中心内部都采用视频监控,结合AWS的Kinesis Video Stream、S3以及人工智能等服务,来对视频做实时传输、存储和分析,实时发现可能存在的问题。
图3:AWS对其机房实时视频监控
而你,作为AWS 云的一用户,则需为云“中”的安全性负责,这包括以下五个部分:
身份和访问控制:负责云中的身份和访问管理,包括身份认证和授权机制、单点登录(SSO)、多因子认证(MFA)、访问密钥、证书、密码等。
基础设施保护:负责对网络、虚拟机实例和容器实例等基础设施进行安全保护。在网络方面,比如使用VPC来创建一个私有的、安全的和可扩展的网络环境,创建网络分层,在每一层上进行安全控制,自动地进行网络检测和防护,开启网络访问日志等;在主机方面,比如使用主机安全工具来扫描虚拟机和应用的安全状态,使用代码扫描工具来发现代码中的安全漏洞,对操作系统进行自动补丁升级和加固,使用安全通道访问虚拟机,使用安全的配置工具对虚拟机进行配置等。
数据保护:负责你数据的安全,包括数据分类、加密、访问控制等,因为数据是云用户的资产,云供应商对其没有访问权限。
安全检测:负责采用各种安全服务和工具,不管是云供应商提供的还是第三方的抑或是自己开发的,检测潜在的安全风险和安全问题。
事件响应:负责在出现安全问题后做出响应,消除安全风险,恢复数据和业务。
第二步:了解工具 – 搞清楚云服务商提供了哪些安全服务
AWS首席信息安全官史蒂芬·施密特曾经说过:“客户常常跟我们说,帮他们保持安全最好的方式,就是交给他们更智能的工具,让他们可以更容易地搞定安全。”为了帮助用户实现上述五大安全责任,到目前为止,AWS提供超过200种身份认证、安全及合规服务。下表中列出了AWS主要安全服务。
表1:AWS主要安全服务
AWS所有这些安全服务,构成了一个多层次的完整保护机制,为你在AWS云中的应用保驾护航。
图4:AWS分层安全保护机制
除了安全服务外,AWS还在AWS Architecture Center(AWS架构中心)网站上提供了最佳参考架构方案、工具、培训和实验,涵盖敏捷性、安全性、可靠性、高性能和成本等多个方面。而且,在AWS Marketplace中,还有几百家安全合作伙伴,在应用安全、数据保护、合规、主机安全、身份和访问控制、日志和威胁检测等提供众多工具和方案。
了解每种安全服务的用途、使用场景、工作流程乃至计费方式等非常重要。下面就深入介绍下Security Hub和GuardDuty这两种安全服务。
(一)Amazon GuardDuty 服务
在AWS环境中,对网络活动和账户行为进行持续监控非常重要。启用CloudTrail后,AWS账户内几乎所有API调用活动都会记录下来,但从海量日志中发现可疑活动会非常困难。VPC流日志服务负责记录的VPC内的网络活动也是如此。为了解决这些困难,AWS发布了Amazon GuardDuty服务,它通过分析多个日志数据源(包括VPC流日志、AWS CloudTrail事件日志和DNS查询日志),持续监测AWS账号、VPC网络和负载的运行情况,使用威胁情报源和机器学习来标识AWS 环境中可疑的和未经授权的恶意活动,而且还可利用Amazon CloudWatch事件和AWS Lambda来执行自动化的通知和修复操作。
图5:Amazon GuardDuty产品架构
Amazon GuardDuty会使用由AWS安全团队负责维护和不断改进的算法来进行日志检测。主要检测类别包括非法探测、实例盗用和账号盗用等,而且还在持续增加中。
图6:不断增加中的GuardDuty能发现的安全风险类型数
然后,它将分析结果按照三个级别 (低、中和高) 之一呈现出来,并附有详细的证据和修复建议。
图7:Amazon GuardDuty截图
这些结果可作为事件输入到 Amazon CloudWatch之中,再使用AWS Lambda 函数来自动通知甚至修复特定类型的问题。在下图所示的例子中,GuardDuty收集日志里的数据进行分析并将结果存放在S3中,同时通过CloudWatch Events采集特定的安全事件或风险等级事件。对于中等风险,通过AWS SNS服务邮件通知管理员,对于高风险则通过AWS Connect结合AWS Lambda电话通知管理员。
图8:基于 Amazon GuardDuty 威胁级别的自动化通知
(二)AWS Security Hub
实现云上安全的一大挑战是可视性(Visibility)。你可能会用到多种安全工具,每种工具都会提供安全保护并产生大量数据,这使得你得每天在这些工具之间来回切换,处理数百甚至数千个安全警报。
为了解决此问题,AWS发布了Security Hub服务,它可让你在一个可视化平台上就能查看AWS账户中的所有安全警报与合规性状态。它对来自多个AWS服务(如Amazon GuardDuty、Amazon Inspector 和 Amazon Macie),以及AWS合作伙伴(比如Splunk, Qualys, Crowdstrike, Alert Logic等)的解决方案的安全警报或检测结果进行聚合、组织和设置优先级,然后在具有可操作图形和表格的集成控制面板上对所有检测结果进行直观汇总。
图9:AWS Security Hub产品架构
GuardDuty从VPC流日志、AWS CloudTrail事件日志和DNS日志中发现AWS账户、VPC网络和负载中的安全问题,Macie则利用人工智能算法从被监控的S3存储桶中发现安全问题,Inspector从EC2实例中发现操作系统和应用的安全问题。所有安全问题都汇总到Security Hub后,它处理数据并进行关联性分析,以确定最终检测结果的优先级,然后在集成的控制面板上将所有安全检测结果汇总起来,展示出当前的安全性与合规性状态。
图10:AWS Security Hub产品界面截图
类似GuardDuty,Security Hub也支持通过CloudWatch Events与Lambda以及Step Functions集成。首先你在Security Hub配置数据来源以及响应方式,然后安全检测结果条目会被以事件(Event)形式发送到CloudWatch中,CloudWatch中的规则(Rule)被触发,然后事件信息会被推送到各种通知和事件管理或处理系统中。
图11:AWS Security Hub自动响应示例
第三步:合理选择 – 搞清楚要选择哪些安全服务为你所用
要搞清楚需为你在AWS上的应用选择哪些安全服务,还是得从你所选择的云功能服务入手。下图显示了针对一个典型三层Web应用部署架构所选择的主要安全服务。
图12:一典型Web应用部署架构中用到的安全服务
默认启用AWS IAM、CloudTrail、Config、VPC Flow Logs、VPC DNS Logs 等服务或功能。IAM负责创建子账户以及分配对账户和资源的访问权限;CloudTrail会记录你AWS账号内几乎所有API调用;Config会记录你账户内所有的配置变化;VPC Flow Logs则会记录VPC内的所有网络流日志;VPC DNS Logs会记录VPC内所有DNS查询日志。所有这些日志都是进行后续安全检测的主要数据来源。
Amazon EC2是一基础设施类服务,提供虚拟机服务。你需将EC2实例创建在VPC中以实现网络隔离,利用安全组控制网络访问,使用IAM控制用户、应用或服务对它的访问权限,使用SSH或AWS Systems Manager Session Manager安全地远程访问它,使用AWS Systems Manager Run Command对EC2实例进行配置,使用AWS Inspector对EC2实例和应用进行安全检查,手工或使用AWS Systems Manager Patch Manager自动地进行补丁升级和更新,使用EBS云盘加密功能来保护其静态数据安全等,使用Amazon EC2 Auto Scaling 来提升其高可用性等。
Amazon S3是一托管类服务,提供对象存储服务。AWS负责保证其11个9的数据可靠性和4个9的服务可用性,以及操作系统及软件补丁升级、防火墙配置及灾难恢复等。你可使用SSL/TLS访问它,采用客户端数据加密,启用服务器端数据加密,按需配置访问权限,启用MFA Delete功能以防止存储桶误删,开启访问日志和监控,启用对象版本,对特定对象加锁以防止对象误删,使用CCR(跨区域访问)来满足某些合规要求;还可启用AWS Macie服务,它会使用人工智能算法对S3存储桶中的数据进行分析,发现潜在的安全风险,保护敏感数据。
Amazon RDS是一托管类服务,提供关系数据库服务。它向用户提供多个安全功能,包括支持在VPC中创建实例、DB安全组、权限控制、SSL连接、实例和快照加密、自动备份和快照、多可用区部署、操作系统和数据库软件自动补丁升级、日志、监控及事件通知等,可根据需要使用这些功能。
Amazon ElastiCache是一托管服务,提供内存型缓存服务。它也提供了一系列安全功能,包括支持在VPC中创建实例、支持通过Cache安全组控制网络访问权限、IAM策略、SSL连接、数据加密、多可用区部署、操作系统和软件自动补丁升级、故障探测和恢复、支持多实例、备份和恢复、自动快照、日志、监控及事件通知等。
AWS Elastic Load Balancing是一基础设施类型服务,负责接收客户端请求并将其分发给后端EC2实例。它需被创建在VPC中,建议将其分布在多个可用区中以保障可靠性,使用安全(HTTPS/TLS)监听器以保障客户端和其之间的通信安全,配置安全组以只接收特定客户端的请求,使用AWS Certificate Manager来管理其服务器证书,选择合适的负载均衡器安全策略和监听器安全策略等。
在网络边界,AWS Shield基础版或高级版可以为ELB、CloudFront发布、Route 53托管区域等提供基础性和高级DDoS防护;启用AWS WAF,用于监控和控制对Web应用的非法访问;需要的话还可以启用AWS Firewall Manager服务,用于跨账户统一管理AWS WAF访问规则、AWS Shield Advanced防护规则和VPC安全组等安全规则。
启用GuardDuty,将数据源配置为Macie、VPC Flow Logs和DNS Logs,它会负责对VPC内的网络活动和账户行为进行持续监控;再启用Security Hub来作为你的AWS云上统一安全与合规中心,将其数据源配置为GuardDuty、Macie和Inspector,它会让你在一个控制面板上就能查看你AWS账户中的所有安全警报与合规性状态。
还可以启用Trusted Advisor服务,它可根据AWS部署架构最佳实践,分析你的应用部署架构,从成本、性能、安全、容错、容量等方面给出评估结果和改进建议,指导你进一步完善这个部署架构。
小结
需要指出的是,完整的云上安全管理流程包括识别(Identity)、保护(Protect)、检测(Detect)、响应(Respond)、恢复(Recover)等五大环节。因此,文中介绍的这三步 - 明晰责任、了解工具、合理选择,只是云上安全旅程的前几步而已,但走好这几步,你就能顺利开启你的云上安全之旅了。
图13:AWS完整安全管理流程
现在就出发,开启你的云上安全之旅吧!
感谢您的阅读,欢迎关注我的微信公众号: