蚂蚁金服在过去十五年重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑。在 2019 杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向将来的金融技术创新和参会者分享。咱们将其中的优秀演讲整理成文并将陆续发布在“ 金融级分布式架构”公众号上,本文为其中一篇。nginx
在云原生发展趋势之下,金融行业想要应用云原生技术,安全问题是一个很是大的拦路虎,而云原生社区对安全问题的重视程度远远不够。蚂蚁金服在落地云原生的时候,解决安全问题是重中之重,通过探索与实践,咱们沉淀出了一套从底层硬件到软件、从系统到应用层的全链路金融级云原生安全架构。git
金融行业最重要的就是信任,咱们认为,安全所带来的信任,是一种无形的产品,支撑着全部金融业务。github
顺应互联网时代发展,金融行业与机构也发生了不少的变化,包括 App、小程序等更多的访问渠道,更快的业务变化,更多的第三方供应商。可是,无论怎么变化,金融行业有一点始终不变,那就是 Zero Fault,对错误的零容忍,也就是对稳定性和安全性的极高要求。编程
这里,我还想澄清你们对金融行业的一个错误见解,就是,你们都说金融机构有不少遗留系统,不少技术是十几年前的,就认为金融机构的技术是落后的。但其实,金融行业一直是科技含量很是高的。前段时间有一部电影上映,叫《蜂鸟计划》,根据真实事件改编,讲一帮作高频交易的人,为了下降从堪萨斯到纽约交易所的时间,建造了一条上千英里直通两地的光纤,想尽办法去争取那最后一毫秒。因此,金融行业并不仅有平庸保守的科技,它一样也在追逐最前沿最早进的技术,咱们的使命就是要用科技来进一步武装金融行业,为金融科技注入更多的活力。小程序
云原生架构其实表明一种新的生产力,金融行业确定是须要云原生的,它为咱们带来了节约成本和敏捷开发的能力,可是在它前面还须要加一个定语,就是安全的云原生架构,它里面不只仅包含以前的相对简单的安全方案,而是一个从端到端的全链路可信的安全解决方案。包括明晰代码全部权,作到可信启动,对镜像的制做和发布收口,配合帐号体系,明晰应用的全部权和访问权限;以及安全可独立部署的精细化隔离方案,将安全策略和实施集成在基础架构中,对软件开发和测试透明。安全
这里咱们着重分享蚂蚁金服正在实践的几项云原生安全技术,包括云原生网络安全 Service Mesh,安全容器,以及机密计算。服务器
当前,云原生里除了容器以外第二大技术其实就是 Service Mesh,从蚂蚁的实践来看,其实它对金融安全有很是高的帮助。它至少能够作到三点:网络
而且,这些工做对业务是透明的,不须要给业务开发增长负担,同时咱们还能够对流量进行实时的语义分析等等,作比传统的防火墙更多的事情。架构
蚂蚁金服在对 Service Mesh 的探索中,推出了本身用 Golang 打造的 SOFAMesh,而且已经对外开源,但愿和社区一块儿努力,让 Service Mesh 的理念和技术更加普及。负载均衡
SOFAMesh 是基于 Istio 改进和扩展而来的 Service Mesh 大规模落地实践方案。在继承 Istio 强大功能和丰富特性的基础上,为知足大规模部署下的性能要求以及应对落地实践中的实际状况,所作的改进包括采用 Golang 编写的 SOFAMosn 取代 Envoy,极大下降了 Mesh 自己的开发难度,并作了一些创新性工做,例如合并Mixer到数据平面以解决性能瓶颈,加强 Pilot 以实现更灵活的服务发现机制,增长对 SOFARPC、Dubbo 的支持,等等。
更多详情可查看 SOFAMesh 的 GitHub 主页:github.com/sofastack/s…
蚂蚁金服率先在生产环境中大规模落地 SOFAMesh,超过 10W+ 容器作到了 Mesh 化,平稳支撑了 618 大促,给咱们带来了多协议支持、UDPA、平滑升级、安全等多方面的好处,而且对性能仅有轻微的影响,单跳 CPU 增长 5% 损耗,RT增长不到 0.2ms,甚至部分业务通过 Mesh 化改造将业务链路下沉,RT 反而降低 7%。
提云原生你们确定都会提容器,传统容器从虚拟机到容器,实际上是牺牲了隔离性的,从上图能够很清楚的看到,当咱们的应用在容器里,其实共享着同一个 CPU、内存、网络和存储,只是从外面看起来是不一样的。这会致使安全上的问题,就是不一样的容器之间不存在真正的隔离,一旦一个容器发生安全问题,极可能影响到其它容器,甚至入侵整个系统。蚂蚁金服在这方面作的工做就是安全容器,具体就是 Kata Containers。
Kata Containers 安全容器是 OpenStack 基金会的顶级开放基础设施项目,由蚂蚁金服和 Intel 共同主导开发。在安全容器里,每一个 Pod 运行在独立的沙箱中,彼此不共享内核,提供强安全保障。这里给你们分享一下 Kata Containers 的近期进展,针对你们最关注的性能问题有了很是大的提高:
咱们也会和社区一块儿继续共建 Kata Containers,让安全容器成为云原生的标配。
安全容器能够有效的保护主机,可是,金融业务自己仍然须要更强的隔离保护,蚂蚁金服引入了机密计算,并根据实际场景研发了大规模落地解决方案 SOFAEnclave。
所谓机密计算,也就是基于例如 Inte SGX,ARM Trustzone 等可信执行环境(Trusted Execution Environment, TEE),也称为 Enclave ,访问计算机内存时隔离用户数据,以免将数据暴露给其余应用程序、操做系统或其余云服务器租户的解决方案。
Enclave 是运行时的双向保护,好比说你的金融业务跑在 Enclave 上的时候,操做系统都看不到 Enclave 里的内存,同时会进行完整性检查,保证访问 Enclave 的代码不被替换。
可是 Enclave 目前存在一些问题,阻碍了它在实际生产环境中的应用。总结这些问题包括:
第一,须要改写应用,由于可信执行环境里面没有内核和基础库,因此无法把应用直接在 Enclave 中执行;第二,须要分割应用,须要把业务程序划分为 Enclave 内和 Enclave 外的部分;第三,未集群化,与客户端场景不一样,Enclave 中的应用如何 failover,容灾也是阻止其在数据中心中大规模使用的一个缘由。
蚂蚁金服针对这些问题的答案就是 SOFAEnclave 机密计算中间件。
SOFAEnclave 由三个组件组成,第一个是 Occlum LibOS,另一个是 SOFAst,以及 KubeTEE。Occlum 是蚂蚁和英特尔、清华主导开发的一个内存安全的多任务 Enclave 内核,把系统内核的功能经过 lib 的方式连接过去,经过这种方式给 Enclave 增长功能。同时咱们也创新性的解决了在 Enclave 跑多进程的方式,让 Enclave 真正适配大型的应用。
想详细了解 SOFAEnclave 的技术细节,能够参考这篇文章:《SOFAEnclave:蚂蚁金服新一代可信编程环境,让机密计算为金融业务保驾护航102年》
SOFAEnclave 开源组件 Occlum GitHub 主页:https://github.com/occlum/occlum
当咱们把这些安全组件与云原生框架编织在一块儿,构成一个全景,就是咱们正在构建的金融服务的安全云原生安全架构——基于阿里云和 Kubernetes,以端到端的安全性保障金融服务。
上述这些组件有些是蚂蚁金服在实践检验以后开源并与合做伙伴和社区共同发展的,有些从开始就是在社区中开发的。与传统金融行业的技术发展不一样,咱们提倡创建一个开放的架构,并相信开放的开源治理对于这个架构是不可或缺的,咱们会持续参与和支持社区化的开放开发,与社区一块儿打造下一代金融级云原生技术。
SOFAMosn(Modular Observable Smart Network),是一款采用 GoLang 开发的 Service Mesh 数据平面代理,旨在为服务提供分布式、模块化、可观察、智能化的代理能力。SOFAMosn 经过 XDS API 与 SOFAMesh 集成,同时 SOFAMosn 能够做为独立的四、7层负载均衡使用,将来 SOFAMosn 将支持更多云原生场景,并支持 nginx 的核心转发功能。
今年 618 蚂蚁金服已经完成核心系统上到 SOFAMosn 的验证工做,在立刻来临的今年的双 11,阿里巴巴和蚂蚁金服将会在核心系统大规模上线 Service Mesh。
ElasticDL 是蚂蚁金服发布的新一代基于云原生的开源 AI 学习平台,它的架构基于原生的 Kubernetes 体系,所以具备强大的容错能力和弹性调度能力。另外,ElasticDL 可以支持新一代的 TensorFlow 2.0 框架,也但愿引领 AI 开发者走向新一代的机器学习。
将来,ElasticDL 会支持更多的 AI 模型,让它自己变得更强大,也会更好地融入云原生体系和 Kubernetes 体系。
公众号:金融级分布式架构(Antfin_SOFA)