通过现代应用程序开发提高安全性

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/SEC227-Improving_security_through_modern_application_development-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 在本论坛中,探索现代应用程序开发中使用的安全实践,以及这些实践如何解决遗留应用程序中常见的安全挑战。学习在开发生命周期的早期集成安全性、在容器化和[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序的所有层应用安全性、执行 API 安全性、实施安全编码实践等的模式。通过采用这些实践,现代应用程序开发可以加快软件交付并增强安全态势。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共1400字,阅读时间大约是7分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> Josh和Gerardo两位演讲者开始了他们的演讲,旨在探讨如何通过现代应用开发实践来提高安全性。他们认为现代应用开发是一种注重提高软件交付速度的同时提升可靠性、可扩展性和安全性的方法。他们计划涵盖三个主要议题:软件发布周期及应用安全、基础设施管理以及分布式应用的架构。由于此次演讲针对的是200级的听众,他们将在这几个广泛的主题上进行较为概括性的阐述。 在谈论第一个主题时,Josh将传统的、手动的软件发布流程与现代化方法进行了对比。他指出,在传统模式下,开发人员和运营团队往往是各自为战,采用手动构建、测试和部署软件更改的方式。这种方式既慢且容易出错,而且资源消耗巨大。从安全角度考虑,缓慢的部署过程导致潜在问题的识别更加困难。而较慢的部署速度也意味着将不安全代码部署到生产环境的时间更长。 然而,Josh介绍了现代应用开发是如何依赖于CI/CD管道来自动化软件发布过程的。他强调,这些管道不仅能加速交付速度,还能保证一致性,从而减少人为错误和失误。此外,管道内的自动化使得能够更早地识别安全问题,从而降低了将不安全代码部署到生产环境的风险。一旦发现问题,自动化还允许快速进行修复。 接下来,Josh将传统的安全测试(通常在开发周期的后期进行)与现代的“将安全左移”的方法进行了比较。他认为,将测试推到后面往往会创造一种反应式的文化,使团队在问题发生后不得不匆忙修复。这种做法会导致延迟、返工和不一致的安全措施。 相较于将安全策略提前至软件开发周期初期,将安全向左移动意味着在软件开发生命周期的早期阶段就关注安全问题。这使得团队在威胁缓解成本较低的时候能够尽早识别并解决潜在漏洞。据Josh表示,在问题刚出现时就迅速(例如数小时或数天而非数周)解决问题,可以提高效率,避免浪费开发时间并降低修复过程中的缺陷发现成本。 除了工具和测试之外,Josh还强调人员和文化在整个组织内传播安全知识的重要性。他举例说明亚马逊是如何让各个服务团队对其自身服务的安全性负责的,而一个集中的安全团队则负责整个组织的总体安全性并为服务团队提供支持。亚马逊云科技通过Security Guardian项目来分配安全专业知识和所有权,而非仅限于某个团队。Josh提到亚马逊云科技拥有数百个服务团队,每个团队都对其自身的独立服务的安全负责,展示了这个分布式模型的庞大规模。 许多与Josh交流过的客户发现传播安全知识是一个关键挑战。亚马逊云科技采用分布式所有权和实施方法来解决这个问题。Josh指出,Security Guardian模式已经在过去的re:Invent和re:Inforce会议上得到了广泛讨论。他还提供一个QR码以便访问这些演讲,以获取更多关于指标、效率改进和学习经验方面的详细信息。 Josh总结道,在软件开发周期的每一个阶段都可以提升安全性能,从早期的威胁建模到后续的编写、源代码、构建、测试和部署阶段的各种形式测试和分析验证。他还列举了一些工具示例,如CodeWhispierer和CodeGuru,用于在编写代码时将安全检查和反馈直接集成到开发人员的IDE中。其他工具,如静态应用程序安全测试,则在软件管道中对源代码进行分析。 在基础设施管理领域的一个关键议题中,Josh探讨了如何将基础设施视为代码,作为现代应用程序开发的一种重要手段。这种方法允许以编程的方式定义诸如服务器和数据库等基础设施组件,从而为软件带来了类似于版本控制和持续集成/持续部署(CI/CD)的优势——可重复性、一致性和更容易在不同环境中进行扩展和复制。从安全性的角度来看,这种方法减少了对配置错误的依赖,从而降低了产生漏洞的风险。 因为基础设施即代码本质上还是代码,Josh强调了可以将许多与软件相同的安全最佳实践应用于它,包括编写、来源控制、静态分析、构建检查以及测试和部署前的验证。他还提供了一个例子,说明如何利用像CloudFormation Guard这样的工具,根据预定义的安全策略来验证基础设施代码,防止已知问题被部署到生产环境中。 Josh特别指出,许多客户已经在采用基础设施即代码的方法,因此在他们现有的流程中引入策略验证可以增加安全性检查。他展示了一个示例,说明了如何使用CloudFormation Guard将策略编码化,然后在建构阶段验证基础设施代码是否符合该策略。这个过程非常简单,只需添加几行代码即可完成。 对于第三个主要主题,Josh提供了一些背景信息,介绍了如何将大型代码库分解成更小的、分布式的组件和服务,以提高可扩展性、故障隔离和开发速度。他以一个分布式架构为例,讨论了如何通过API在各个独立服务之间进行通信。尽管这为每个服务提供了定制的安全权限,但同时也增加了安全性的复杂性。他强调了在整个组件和层次结构中实施安全的“纵深防御”而非仅在一个边界处应用安全的重要性。这种分层方法提供了额外的冗余和安全控制精度。 为了解释如何保护分布式系统,乔希通过一个包含诸如API网关、Cognito、Lambda、DynamoDB、S3、Aurora和CloudFront等组件的示例微服务应用进行了详细阐述。针对各个组件,他强调了其相关的安全特性,例如在API网关中使用Lambda授权器进行访问控制,对防止Lambda注入的SQL查询进行参数化,以及使用临时凭证进行数据库访问。 具体来说,乔希详细介绍了亚马逊云科技的API网关如何提供请求验证,并根据配置的JSON模式检查参数、头和负载。此外,API网关还允许配置允许的头部、方法和起源域的CORS限制。 针对DynamoDB等数据库,乔希展示了如何使用IAM条件键基于用户身份限制对单个项目的访问。这种方法提供了行级安全性,且无需更改应用程序代码。 在讨论如何将数据库凭据安全地提供给应用程序时,乔希对比了在源代码中硬编码凭据与从S3或环境变量中检索的区别。他强调,亚马逊云科技的Secrets Manager通过处理凭证存储、轮换和基于SDK的检索,实现了既简单又安全的方法。 乔希还提到了如何使用RDS和Aurora的IAM数据库认证来完全消除静态数据库用户名和密码的方法。这将生成与IAM角色关联的短暂认证令牌,避免持久保存凭证。 对于Lambda函数,乔希概述了如何通过资源策略和访问策略控制权限。信任策略允许函数承担其IAM角色。这些方法共同强制实施可以调用该函数以及它可以访问哪些资源的规则。 乔希还讨论了常见的安全问题,如DDoS攻击、XSS攻击和SQL注入。他概述了缓解措施,如使用CloudFront源头访问控制、亚马逊云科技WAF规则和预编译语句。目标是在每个层次上应用精确的安全措施,而不仅仅是依赖外围防御。 总的来说,乔希强调了现代开发实践如何使问题能尽早发现并获得更快响应。通过自动化并将基础设施作为代码,可以避免错误配置并提供更精确的安全保障。回顾各种用于"将安全左移"的工具,包括CodeGuru、CloudFormation Guard、Inspector和Access Analyzer。尽管像微服务这样的现代架构增加了复杂性,但分布式安全控制提供了额外的保护和准确性。 乔希最后提到,由于此次演讲面向的是200级的听众,所以这里只提供了一般性描述。然而,他还是鼓励团队评估自己的开发方式,并考虑采用现代应用安全实践和原则。关键是要在整个生命周期中更早地进行安全转换,通过代码安全地管理基础设施,并在分布式应用程序中实施分级控制。 在演讲过程中,演讲者们旨在提供一个关于现代软件开发方法如何提高安全性的概览。他们强调了自动化、将基础设施作为代码以及分布式安全架构模式的重要性。虽然内容广泛,但这次演讲为核心应用安全概念和相关亚马逊云科技服务提供了一个有用的简介,以便将其付诸实践。详细的示例和客户使用案例有助于说明如何在样本微服务架构中应用这些原则。 **下面是一些演讲现场的精彩瞬间:** 手动软件发布过程以及团队间的孤立现象会拖慢应用程序开发和部署的速度并降低其安全性。 ![](https://d1trpeugzwbig5.cloudfront.net/SEC227-Improving_security_through_modern_application_development/images/rebranded/SEC227-Improving_security_through_modern_application_development_0.png) 亚马逊云科技将其领导力归因于拥有权的核心理念,服务团队负责他们服务的安全性,而一个中心团队则在整个组织中推广安全性。 ![](https://d1trpeugzwbig5.cloudfront.net/SEC227-Improving_security_through_modern_application_development/images/rebranded/SEC227-Improving_security_through_modern_application_development_1.png) 亚马逊云科技的安全守护者计划旨在通过培训构建者团队内的安全倡导者来分配安全所有权。 ![](https://d1trpeugzwbig5.cloudfront.net/SEC227-Improving_security_through_modern_application_development/images/rebranded/SEC227-Improving_security_through_modern_application_development_2.png) 代码密语者利用AI驱动的实时建议和安全发现来帮助开发人员更高效地编写出安全的代码。 ![](https://d1trpeugzwbig5.cloudfront.net/SEC227-Improving_security_through_modern_application_development/images/rebranded/SEC227-Improving_security_through_modern_application_development_3.png) 您可以通过基础设施即代码(IaC)的方式来像现代软件开发一样编程定义应用程序组件。 ![](https://d1trpeugzwbig5.cloudfront.net/SEC227-Improving_security_through_modern_application_development/images/rebranded/SEC227-Improving_security_through_modern_application_development_4.png) 领导者鼓励与会者在会议应用程序上对演讲提供反馈,以便改进未来的活动。 ![](https://d1trpeugzwbig5.cloudfront.net/SEC227-Improving_security_through_modern_application_development/images/rebranded/SEC227-Improving_security_through_modern_application_development_5.png) ## 总结 演讲重点关注了如何通过运用现代应用开发实践来增强安全性。其中强调了在软件开发过程中将安全性前置的重要性,以便更快速地发现并解决问题。建议的关键措施包括在编写代码前进行威胁建模以降低风险,利用诸如CodeGuru等静态分析工具检查源代码中的漏洞,并在预生产环境中进行动态测试。针对基础设施即代码,如CloudFormation Guard等策略验证工具可确保其符合安全标准。采用分布式微服务架构虽能实现精细权限控制,但需多重安全措施保驾护航。API网关则通过身份验证和验证来限制访问。例如,S3桶和Lambda函数等资源需要锁定IAM策略以确保其安全。Secrets Manager能够自动更换凭证。总之,现代开发实践实现了更高的自动化、更快的修复速度和整个应用程序栈更为强大的安全性。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭