## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
30 年前,人们正在构建自己的加密解决方案;15 年前,人们正在构建自己的身份验证解决方案;今天,许多人正在构建自己的授权解决方案。为了实现可扩展性、一致性和安全性,人们不再构建自己的加密或身份验证解决方案,而是使用标准库和服务。现在是讨论用于授权的标准库和服务的时候了。本论坛介绍加密、身份验证和授权之间常见的模式和挑战。了解如何使用 Cedar 语言、Cedar SDK 和亚马逊云科技验证权限服务,满足授权需求。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共1200字,阅读时间大约是6分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
演讲者,亚马逊安全和应用科学部门的杰出工程师Eric Brandwein以及亚马逊云科技实用科学总监Neha Rungta,首先强调了在构建技术时要站在巨人的肩膀上的重要性。我们所建造的一切都是基于其他人的基础,无论是操作系统、编程语言还是网络协议。因此,选择要利用的基础构建模块至关重要,因为那个基础将在服务的整个生命周期内支撑整个结构。为了说明这个原则,Brandwein先生以亚马逊自身的经验为例进行了阐述。当公司还处于早期阶段作为在线书籍零售商时,其初创基础设施通过将客户请求路由到位于亚马逊数据中心内的后端web服务器来处理这些请求。出于安全目的,负载均衡器会在将明文HTTP流量传递给服务器之前终止来自客户的SSL连接。这使得亚马逊能够从其核心服务中卸载加密功能的复杂性,实际上是在负载均衡设备内封装该功能。这种安排最初效果很好,但随着时间在SSL协议中发现新的漏洞,证明是脆弱的。一系列学术论文披露了在SSLv3协议中,攻击者可以在比预期快数倍的时间内解密SSLv3流量的重大缺陷。几乎一夜之间,SSLv3和TLS 1.0从安全的标准变成了对客户数据构成不可接受风险的协议。亚马逊急忙做出回应,拼命升级配置并禁用所有负载均衡器上损坏的密码。回顾过去,根本问题是负载均衡器提供了它们终止的SSL握手的大致可见性。该公司无法确定客户实际上尝试协商的加密套件是什么,只能评估是否最终加密会话。缺乏这种洞察力使得很难评估禁用有缺陷的密码对现实世界的影响。Brandwein先生承认,在亚马逊终于转向更安全的替代品之前,这一经历导致了一些令人提心吊胆的部署时刻。
为了解决问题,亚马逊设计了一个名为S2N的新型TLS终止库,它在后端服务器上运行而不是在负载均衡器上。由于S2N是内部开发的,因此可以完全控制<测量>数据,并收集任何所需的关于SSL握手的数据。此外,通过让服务器原本不处理加密,亚马逊享受到了商用硬件的成本优势。该公司将S2N开源,以便其他人也可以应用和改进它。
布兰德温先生总结了这个故事的主要教训:虽然利用现有的构建块使得亚马逊能够最初快速扩展,但他们后来选择的组件被证明是不足的。在选择基础元素时,请确保评估消费模式。将功能作为自己管理的代码使用会带来更多的控制权,但也带来了额外的开销,如扩展和修补。相反,以由他人管理的服务的方式来消费它们,以换取便利。没有哪个答案本身就是对或错,只需在做出选择时慎重考虑,并考虑对您应用程序整个生命周期的影响。
隆加塔女士接着阐述了为什么授权是另一个关键构建块,就像加密一样。然而,尽管像SSL这样的解决方案旨在提供大致标准化的安全算法,但授权通常针对每个特定<应用>程序进行深度定制。亚马逊云科技的IAM服务为控制对亚马逊云科技资源的访问提供了一个共同的底层结构。但在管理程序内的授权方面,亚马逊开发了名为Cedar的新产品。
Cedar提供了一种灵活的授权语言,允许客户根据他们自己的身份模型、资源和权限需求来定义定制的策略。隆加塔女士解释了采用这种专为授权设计的构建块相对于实施特定的应用特定逻辑的好处。
首先,使用标准策略语言确保一个组织内不同服务、平台和实现之间的一致性。例如,如果一个银行应用程序扩展到移动设备上,那么相同的Cedar策略可以无缝地工作,而无需重新实施。其次,它提供了可扩展性,因为应用程序在复杂性和使用方面不断增长。虚构的银行支持新地区和管理制度,可以通过Cedar的集中式策略管理来处理增加的用户、资源和访问规则。最后,将授权与应用程序代码解耦,使管理员能够全面了解所有服务的权限,以便进行治理和审计。没有共同的基础,分析谁可以对什么进行访问可能涉及拼接整个组织组合中特定上下文特定的授权逻辑。"
"尽管IAM专注于管理对亚马逊云科技基础设施本身的访问,但Cedar让客户完全控制为自己的应用程序定义策略。用户根据自己的需求确定自己的原则(用户/角色)、操作(API操作)和资源(数据对象)。Cedar的设计应用了安全最佳实践,如默认拒绝,即除非明确允许,否则不允许任何访问。该语言还经过正式证明,从数学上保证一致性和确定性等策略属性。此外,Cedar提供工具验证策略并防止错误,如拼写错误或语法结构错误,否则可能在运行时引发异常。
针对绿地开发项目,Rungta女士建议在项目规划初期就融入身份管理和资源建模等授权设计理念。为了确保系统的顺利扩展,应从一开始就考虑潜在的权限问题。
对于遗留应用程序,迁移现有的授权逻辑可能更具挑战性。她建议采取三个步骤:首先记录当前的所有访问控制决策,以便了解其运作方式;其次,编写Cedar策略并将其结果与原有方式进行对比,以验证其正确性;最后,在进行调整并确保一致性后,实际执行Cedar策略。虽然这个过程可能会遇到困难,但AVP工具有助于向集中式授权管理过渡。
总的来说,Brandwein先生强调身份和访问控制是一个复杂的问题。即使最初的需求看似简单,随着时间的推移,也很难保持简单。因此,提前投资一个健壮且可扩展的基础架构将带来长期的收益。尽管Cedar和AVP旨在简化授权过程,但仍然需要关注和思考。建立一个稳定的基础可能需要付出努力,但这有助于避免未来出现令人痛苦的问题。
两位演讲者鼓励观众尝试使用Cedar,即使只是作为理论研究,以便了解授权面临的挑战。Brandwein先生透露,他们的团队正在愉快地使用AVP和Cedar来提高简单性和安全性。最后,他们强调了基本的教训:认真并谨慎地选择你的构建模块。它们对构建在其上的所有东西的安全、可扩展性和可维护性具有深远的影响。
**下面是一些演讲现场的精彩瞬间:**
亚马逊云科技的Identity部门应用科学总监Neha Rta探讨了在外部授权解决方案中引入自动化推理和潜在安全性的方法。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_0.png)
一个存在漏洞的代码片段截图展示了一个事实,即即使是经验丰富的开发者也可能忽略关键安全问题。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_1.png)
领导者们正解释如何使用Cedar服务,这是亚马逊云科技的一项新功能,它通过分析用户提供的模式来理解应用程序背景并检测错误策略。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_2.png)
在使用Cedar的政策验证器在生产前捕获错误之前,它会检查政策。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_3.png)
亚马逊云科技通过使用Daphne的正式验证和差异性测试来确保授权引擎实施的正确性。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_4.png)
该教程为启动授权提供了两种途径:一条是针对新应用程序的绿色领域路径,另一条是与现有应用程序集成的路径,这需要在设计应用程序时考虑授权结构(如权限和身份)。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_5.png)
亚马逊云科技Lambda提供了一种简单且可扩展的方式来运行代码,而无需管理服务器。
![](https://d1trpeugzwbig5.cloudfront.net/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication/images/rebranded/SEC209-Modernize_authorization__Lessons_from_cryptography_and_authentication_6.png)
## 总结
演讲者强调了对创建可扩展和持久应用程序来说至关重要的强大且安全的构建模块的使用,例如密码学和授权。就像SSL/TLS提供关键的加密保护一样,亚马逊云科技的IAM(Identity and Access Management)或Amazon Cedar等集中式授权系统实现了跨服务的集中且一致的访问控制。
演讲者总结了一些关键经验教训:
1) 在选择构建模块时要谨慎,如密码学和授权,因为它们对整个应用程序的基础起着关键作用。
2) 构建模块必须足够灵活,以适应随着时间的推移而日益增长的复杂性。
3) 在服务中集中处理关键功能,如亚马逊云科技,可以简化安全和操作过程。
4) 对于新项目,从开发初期就开始集成Cedar等服务。
5) 对于现有项目,尽管改造授权系统具有挑战性,但通过记录行为、编写策略、比较结果,然后切换到Cedar,可以实现这一目标。
总之,演讲者主张围绕强大且安全的构建模块设计应用程序,以便创建随着时间的推移能够持续安全、可扩展的系统。早期的有远见的设计选择将在未来节省大量困难。
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问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 余种核心云服务产品免费试用“")