2023无服务器架构设计安全.docx
《2023无服务器架构设计安全.docx》由会员分享,可在线阅读,更多相关《2023无服务器架构设计安全.docx(71页珍藏版)》请在课桌文档上搜索。
1、无服务器架构设计安全2022目录1 .介绍61.1 目的和范围61.2 受众72 .什么是无服务器83 .为什么选择无服务器123.1 无服务器架构的优势和收益133.2 无服务器的共享责任模型143.3 什么时候适合无服务器144 .使用用例和举例155 .无服务器安全威胁模型185.1 无服务器一一场全新的安全博弈?185.2 无服务器威胁形势195.3 威胁模型一25项无服务器应用程序所有者面临的威胁225.4 无服务器威胁的独特性276 .安全设计、控制以及最佳实践346.1 无服务器设计注意事项366.2 针对FaaS的控制426.3 CI-CD流水线、函数代码、代码扫描以及函数和容
2、器的策略实施436.4 基于容器镜像的无服务器增量/附加控制476.5 合规和治理637 .无服务器架构安全的未来愿景667.1 无服务器架构的未来之路677.2 无服务器架构安全697.3 无服务器在数据隐私方面的进展718 .总结729 .参考文献73附录1:首字母缩略词75附录2:术语表77执行摘要无服务器平台使开发人员能够更快地开发和部署应用,用一种简单的方式将应用迁移到云原生服务上,而无需再管理容器集群或虚拟机等基础设施。随着企业努力更快地将技术价值推向市场,无服务器平台正逐渐获得开发人员的青睐。像任何解决方案一样,无服务器带来了各种各样的网络风险。本文探讨了无服务器应用的安全性,聚
3、焦于最佳实践和建议。本文全面概括了不同威胁,重点关注无服务器平台面临的应用程序所有者风险,并提供了适当的安全控制建议。从部署的角度来看,采用无服务器架构的组织可以专注于产品核心功能,而不必考虑负载平衡、监控、可用性、冗余和安全方面的工作来管理和控制平台或计算资源。无服务器方案本质上是可扩展的,并为“即用即付”范式提供了大量的最优计算资源。止匕外,从软件开发的角度来看,采用无服务器架构的组织可以获得一种全新的部署模型,在该模型下,组织不再需要管理和控制底层操作系统、应用服务器或软件运行时环境。因此,这样的组织可以在更短的时间内部署服务并交付给市场,并降低总体运营成本。本文的建议和最佳实践是通过在
4、信息安全、云运营、应用程序容器和微服务方面具有广泛知识和实践经验的多元化团队间相互协作制定的。这些信息适用于在无服务器环境中可能负有一定责任的受众。1 .介绍1.1 目的和范围本文的目的是提供实现安全无服务器方案的最佳实践和建议。无服务器服务涉及两种角色:服务/平台提供者一一无服务器平台的提供者,可在此基础上构建无服务器应用;应用程序所有者一一无服务器方案的用户,他们的应用运行在无服务器平台上。基于无服务器方案,服务提供者提供弹性自动分配的计算资源,以满足不同可执行体的需求,不需要用户控制每个可执行体所需的资源。本文的范围限于一个部门基于其他部门作为平台提供者提供的无服务器解决方案来运行他们的
5、工作负载。无服务器的实现既包括基于容器镜像的无服务器(也称为容器即服务Container-as-service),也包括基于函数的无服务器(也称为函数即服务FaaS)0在本文中,我们将更多地关注应用程序所有者,并考虑在使用无服务器服务时对应用的威胁。然后,我们对安全最佳实践提出了具体的建议,并列出了应用程序所有者应采用的建议控制措施。由于其他材料中有很多关于保护不同云服务的细节,本文将只关注由于迁移到无服务器服务而引发的变化,避免详细阐述通用的云安全。本文的主要目标是提出并推进基于无服务器的安全云计算执行模型。其目的还在于指导应用程序所有者如何采用无服务器架构。1.2 受众本文主要适用于应用开
6、发人员、应用架构师、安全专业人员、首席信息安全官(CIS0)、风险管理专业人员、系统与安全管理员、安全项目经理、信息系统安全官以及任何对无服务器计算安全感兴趣的人。本文假设读者有一定的编码实践、安全和网络专业知识,以及应用容器、微服务、函数和敏捷应用开发知识。由于无服务器领域技术在不断变化,鼓励读者利用其他资源(包括本文中列出的资源)获取最新和详细信息。鼓励读者遵循与安全软件设计、开发和部署相关的行业标准实践2 .什么是无服务器1)无服务器定义无服务器计算是一种云计算运行模型,在该模型中,云提供者负责为应用程序所有者的工作负载分配所需的计算和基础设施资源。应用程序所有者在任何时间都不再需要确定
7、和控制分配多少计算资源(以及体量)来服务于他们的工作负载。它可以凭借大量的计算资源为工作负载提供按需服务。无服务器计算基于“即用即付”范式提出,在这种范式下,支付通常和实际的物理资源(如CPU)使用量有关。使用无服务器的应用程序所有者使用服务提供者提供的能执行(调用、触发)的“可调用单元”,以及一组可调用单元执行(调用、触发)需要的“事件”。应用程序所有者还可以提供支持的代码在可调用单元运行。支持代码可以作为库提供,又称为“层”,可以在运行函数的上下文中运行(作为同一进程的一部分);也可以作为“扩展”或可以在同一环境中运行的支撑线程/进程(与可调用单元不同的进程)。“层”和“扩展”共享分配给函
8、数的相同资源,并在同样的上下文中运行。注意,“无服务器”这个名称只适用于使用该服务的应用程序所有者所经历的行为。在底层,执行代码的服务器仍然存在,但从应用程序所有者那里抽象出来。2)可调用单元不同的无服务器解决方案为可调用单元提供了一系列选项。一个常见的服务选项是使应用程序所有者能够在服务提供者支持的运行态(JavaScriptPythonJaVa等)中提供函数代码。这种服务在业界被称为“函数即服务”或FaaSo在FaaS下,应用程序所有者提供的函数代码通常嵌入到由服务提供者掌管的容器镜像中。FaaS的扩展包括给服务提供者镜像安装额外的库,以及在镜像启动和函数执行前向容器注入数据。第二个常见选
9、项是让应用程序所有者提供其控件的容器镜像作为可调用单元。FaaS的这种扩展与非无服务器服务有很大的区别,后者的应用程序所有者提供了容器镜像,并在托管或非托管容器服务上执行。下表强调了这一区别。在基于镜像的无服务器模式下,服务提供者负责实现正确数量的可调用单元实例,以响应任何给定时间的事件。无服务器(本文涉及)微服务非无服务器(本文未涉及)名称基于函数的无服务器基于容器的无服务器托管容器服务Kubernetes服务由应用程序所有者交付可调用单元函数是否存在依赖容器镜像依赖特定编程语言因所有二进制文件和依赖项都已打包,可独立于代码语言运行应用。控制可执行体的可扩展性、负载均衡、冗余度和监控实例服务
10、提供者应用程序所有者控制实例可用性和冗余度服务提供者控制实例的可用性和冗余度应用程序所有者底层服务器的生命周期和扩展性服务提供者控制实例的可用性和冗余度应用程序所有者执行时间通常很短(秒级或更短)。一般限制在几分钟。通常是长期和无限的。状态无状态和瞬时的一一所有状态主要在可调用单元外维护通常情况下微服务是无状态的,但可以在挂载的卷中维护状态扩展计算服务提供者负责应用程序所有者负责支付模式即用即付为已分配资源付费运行时责任服务提供者应用程序所有者例子AWSLambdaAzureFunctionGoogleCloudFunctionsIBMCloudFunctionsAWSFargateGoogl
11、eCloudRunIBMCodeEngineAWSECSRedHatOpenshift(基于AWS/Azure/.)AWSEKSGoogleGKEAzureAKSIBMIKS在基于函数的无服务器(也称为“无服务器函数“)下,镜像由服务提供者拥有和控制,这将保证镜像安全的责任留给了服务提供者。因此,服务提供者必须适当控制,以减轻镜像给应用程序所有者工作负载造成的任何风险(请参见本文5.3中的“服务提供者控制的安全风险在基于容器镜像的无服务器(也称为“无服务器容器”)下,镜像由应用程序所有者拥有和控制,这将保证镜像安全的责任留给了应用程序所有者。因此,应用程序所有者需要适当控制,以减轻从镜像到其工
12、作负载的风险(请参见本文5.3中的“应用程序所有者设置阶段威胁”)。3)事件事件是在无服务器环境中可能导致特定函数被触发的条件一一它可能包括新的附加数据、接收到的新数据包,或者只是不同周期阶段的过期终结。除了可调用单元之外,事件驱动型应用程序的所有者还可以向服务提供者者提供一组事件,从而定义何时需要执行可调用单元的实例来处理事件。服务提供者负责对事件排队,初始化充足的可调用单元的模型,并根据服务级别协议,在约定的时间内可调用单元处理完成每个事件。事件的实际处理时间被累计用于计费。事件因事件的来源和事件的类型而有所不同。如定时器事件、Web请求触发的事件、由存储器或数据库中的数据的变化触发的事件
13、、由云帐户的服务之间或用户与云帐户的服务之间的交互触发的事件、来自事件服务的事件、云帐户中的监控服务或日志服务的事件等。4)无服务器安全概述无服务器安全带来了一种新的安全范式:应用程序所有者除了保护数据之外,只负责应用的保护。所有管理服务器或其安全方面,包括启动、机器操作系统(OS)打补丁、更新和降级,都由无服务器平台提供者管理,从而使应用程序所有者能够专注于应用本身,而不用再费心于基础设施。但是,正如本文稍后在讨论应用程序所有者需要考虑的威胁时将详细介绍的那样,无服务器也引入了它自己的安全挑战。为了更好地解释平台提供者和应用程序所有者之间对不同模型的共享责任,我们绘制了下面的图。无服务器责任
14、模型详图:应用程序所有者的 安全团队基于函数的无服务器(FaaS)共享责任模型应用程序所有者的 安全团队服务提供者的安全团队基于镜像的无服务器共享责任模型由于基于函数的无服务器可以特定于操作/运行时环境,因此平台提供者承担了维护和更新不同版本和编程语言的责任。5)混合无服务器架构(私有和公有)业界存在许多无服务器架构,以下常见的基础设施示例有(部分): 亚马逊:Lambda,Fargate,AWSBatch 谷歌:CloudFunctions,KnativezCloudRun 微软:AzureFunctions,AzureContainerInstances Nimbella:OpenWhis
15、k IBM:Kortine(代码引擎)、OpenWhisk(CloudFunctions) 红帽:KOitine(OPenShift的一部分)3 .为什么选择无服务器与传统的基于云的或以服务器为中心的基础设施相比,无服务器计算有几个优势。在无服务器计算中,应用程序所有者通常不需要关心托管其应用的基础设施,包括应用运行的操作系统的维护和补丁或基础设施扩容。这能降低大量的运营成本。ManraL2021此外,应用代码是在动态平台上承载和运行的:特定代码可能运行在许多物理机器上,但无服务器平台通常具有动态缩放功能。3.1 无服务器架构的优势和收益下表介绍了无服务器架构的几大优势,以方便读者阅读。无服务
16、器架构可提供的优势本文讨论的无服务器架构部署速度无服务器使应用程序所有者专注开发业务应用,而不用关心应用基础设施,使业务能够快速构建和部署应用。因此,它是一个很好的实验工具,可为市场更快地带来新价值。成本基础设施成本: 通常按每个事件计费,这意味着当不使用基础设施时,不需要付费 非常划算的工作负载开销一一即便不需要服务器时也不必维护它们,可以提供非常细粒度的资源使用控制。运营成本: 没有需要管理的基础设施可以减少运营成本和维护它所花费的时间。Manral,2021应用程序拥有者的体验容易部署:无服务器服务可以通过命令行工具,编程控制或简单的应用程序编程接口(API)以最少化的配置轻松部署。易于
17、监控:大多数云提供商都提供与其无服务器产品捆绑在一起的开箱即用的日志记录和监控解决方案。该平台由APl驱动,这对应用程序拥有者的生产力至关重要。无服务器管理开销:无服务器服务抽象了所有服务器管理任务,例如补丁、服务开通、容量管理、操作系统维护。规模按性质可扩展: 无服务器根据使用情况在细粒度上自动扩展,只需配置基础设施而无需设置基础设施 无需配置扩展或缩减工作负载的策略。 在本地工作时,伸缩仅限在于可用的基础设施上。3.2 无服务器的共享责任模型在共享责任模型中,开发人员负责保护他们的代码和用于向云交付应用程序的工具。在这个共享的责任模型中,每一方都完全控制他们所拥有的那些资产、过程和功能。服
18、务应用程序拥有者无服务器平台提供商平台补丁基于镜像和功能的无服务器。平台配置与应用程序相关的应用程序和平台配置。向应用程序拥有者开放最小配置。镜像补丁基于镜像的无服务器容器。基于函数的无服务器安全编码实践基于镜像和函数的无服务器。供应链安全基于应用和组件的供应链。平台供应链.网络安全监控基于镜像和函数的无服务器。应用程序安全监视基于镜像和函数的无服务器Cl/CD流水线配置基于镜像和函数的无服务器3.3 什么时候适合无服务器当存在相对较大的应用程序或应用程序集以及成熟的软件开发和运营(DeVoPS)团队、流程和产品来支持它们时,无服务器模型最合适。在这种情况下,应用程序可以分解为称为微服务的较小
19、组件(请参阅BestPracticesinImplementingaSecureMicroservicesArchitecture)。每个都支持一个或多个团队,并在无服务器环境中运行。这允许通过专注于特定功能来更有效地使用开发资源。与单体应用程序相比,该模型还允许对每个微服务进行更敏捷的开发,因为应用程序的每个部分的功能都可以转移到生产中,而无需过多关注与其他应用程序功能的完全集成和回归测试。对于相对较小的应用程序或团队,无服务器模型有时比拥有支持应用程序的传统基础架构(例如IaaS基础架构即服务或PaaS平台即服务)的成本效益要低。较小的应用程序通常具有较低的复杂性,并且失去了将应用程序分解
20、为微服务的好处。在这种情况下,微服务可以与其他服务紧密耦合,可能失去了微服务的一些长处,例如可复用性。支持微服务的资源不足可能会导致团队需要停止一个微服务以支持另一个微服务。同样重要并需要注意的是,几乎在所有情况下,无服务器架构可简化部署过程。部署包括简单地上传一个容器镜像或一组代码,而不像传统的应用程序部署那样关注资源供应和网络架构。所以企业在决定组织在决定使用无服务器体系结构时,需要执行业务影响分析和成本/效益分析,以选择技术效率最高、成本效益最高、适合其业务需求的解决方案。4 .使用用例和举例无服务器计算的关键作用是为云程序员提供必要的工具,这些工具可以通过消除对基础架构的考虑并支持直接
21、使用编程语言来降低云计算架构的复杂性。然而,许多问题需要提前解决,包括负载平衡、请求路由以有效利用资源、系统升级(例如安全补丁)、迁移到新的可用实例以及冗余副本的地理分布以便在发生灾难时保护服务。无服务器架构的一个使用用例是,在没有操作和扩展基础设施方面广泛技术专业知识的情况下,拥有超大弹性扩容的基础设施。无需维护硬件、操作系统或支持软件,即可构建、部署、管理和扩展无服务器应用程序。这使应用程序拥有者能够专注于业务逻辑,而不是非核心的能力。应用程序拥有者的成本是高度精细的,费用随着使用而线性增长,从而产生一致的经济可行性。总成本取决于运营规模。客户/用户必须根据其需求决定平台规模。无服务器架构
22、还有一些业务使用用例是:(注意:这并不是一个全面的使用用例的存储库,而只是提供一些示例来,为安全专业人员提供一些参考)。 Web应用程序:用户需要访问现有的服务并查看或进行较小更新的地方。在该活动完成之后,该功能可能会被删除一一基本上是传统的请求和响应工作负载。可以使用无服务器功能,但仍然需要解决错误的身份验证和不可抵赖性等安全威胁。 数据处理活动是事件驱动的,在数据处理请求完成后,服务可能会被删除。例如,启动触发器以通过经纪账户拉取一天内为客户购买的所有账户借方或股票的报告。 除了身份验证和授权之外,数据完整性、机密性和安全性问题也是无服务器功能需要关注的。 批量处理使用用例,通过设置一系列
23、触发器,并构建一个工作流来提取、操作和处理数据。例如,拉出一份未通过碳排放测试的汽车列表,并向车主发送一封电子邮件,其中包含州要求和标准以及满足这些要求的截止日期。安全问题主要是低权限访问、数据机密性和用户隐私。 事件采集和集成:从分析应用程序中收集所有事件,并将它们提供给数据库,用于索引和归档事件,并使用特定触发器启动报告功能或发布到仪表板/浏览器界面。在这种情况下,必须从安全角度解决访问管理和不可否认性问题,并确保使用检测所需的元数据生成日志。 无服务器已经在行业中用于安全检测和自动响应,主要用于警告错误配置和采取后续行动。 无服务器可用于图片识别和处理。例如谷歌ViSion和亚马逊Rek
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 服务器 架构 设计 安全

链接地址:https://www.desk33.com/p-1202590.html