在 40 分钟内构建可验证和有效的应用程序授权

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 授权是构建应用程序和服务时的基本需求之一。确保能够正确可靠地授予或拒绝对应用程序资源的访问是至关重要的。但这仍然是我们作为开发人员必须做的最困难的事情之一。了解如何在 Cedar 和亚马逊云科技验证权限的帮助下,在 40 分钟内将这些功能添加到重要的 Web 应用程序中,包括一些 ABAC 和 RBAC 示例。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共2100字,阅读时间大约是10分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 基于属性的访问控制(ABAC)是一种授权机制,它依据实体本身的特性而非其在角色层级结构中的地位来决定访问权限。例如,只有具备三年以上工作经验的资深员工才能访问特定资源。 - 相较于基于声明的访问控制,ABAC更关注存在于令牌中的用户相关信息或声明。例如,仅允许在工作时间内根据「时间访问」声明进行访问。 基于上下文的访问控制因素会考虑用户的当前位置或设备类型等背景信息。例如,当用户在境外时会限制访问。此外,一些混合模型融合了多种方法的综合性。在他的第二次民意调查中,他询问观众目前如何处理授权问题。在131份回复中,大多数(58人)使用定制的解决方案。36人依赖于云提供商服务,如亚马逊云科技的IAM。24人使用开源库,如Apache Shiro。其他人则选择了其他选项。Wojtek注意到,尽管亚马逊云科技的IAM功能强大,但就其设计而言,它并非满足应用程序授权需求的理想选择。这导致了对基于策略的授权的讨论,它将策略定义与执行相分离。团队使用专门的语言来定义授权规则和政策。这些政策成为了实际依据,并与应用程序代码分离。一个像亚马逊验证权限(AVP)这样的健壮授权引擎会根据运行时的定义政策评估访问请求。这允许将复杂的政策逻辑集中到一个中心服务中,而不是在整个代码库中分散。亚马逊云科技提供了作为基于策略的授权的完全托管实现的AVP。其核心是作为一切权力的策略存储和授权引擎。它提供了一个简单的API,如IsAuthorized,开发人员可以根据定义的政策从他们的应用程序调用以评估用户是否有权执行特定操作或访问特定资源。工程师使用CDR(云数据权利语言)编写政策,这是一种专门为精细授权使用案例开发的开源政策语言。CDR为在易于理解的领域特定语言中构建复杂政策提供了强大的语法。团队可以通过控制台、CLI、API和基础设施即代码来管理存储在AVP中的政策。该服务处理策略存储、验证、评估和可扩展访问控制等后台工作,使开发人员无需从头构建这些功能。 CDR是一个开源生态系统,包含多种组件,如策略语言语法和语义、解释策略的评价引擎、领域建模的模式定义以及针对不同语言的工具和绑定。其关键优势在于性能,核心引擎采用Rust语言实现,使得CDR能在不到1毫秒的时间内处理大量复杂策略和实体。这种高性能对于实时访问控制决策至关重要。 Wojtek简要介绍了CDR策略的基本结构,包括主体、操作、资源以及可选上下文。这些要素涵盖了政策的适用对象、管辖的操作、被访问的资源以及可能影响决策的其他附加上下文信息。例如,限制对文档的访问仅限于周一至周五的工作时间。伴随的架构定义了模型、关系、属性以及其他确保政策符合预期所需的元数据。例如,用户可以被定义为具有名称、电子邮件和角色等属性的实体。这种架构确保了引用用户主体的任何策略都在模型中定义了有效的属性。 整合各部分的功能:开发者可以编写表示他们领域的CDR策略和模式,并将其存储在AVP的集中式策略存储中。这样,启用AVP API并调用诸如IsAuthorized之类的操作来评估传入的访问请求就变得简单。当请求进来时,AVP会先根据模式验证政策的正确性,然后使用高性能的CDR评价引擎判断允许或拒绝,并将授权决策返回给应用程序。这样一来,所有的授权策略逻辑都能从应用程序代码本身中独立出来。 总结来说,CDR提供了一种特定于领域的策略语言、模式定义和评价引擎。而AVP则提供了一个管理的实现,包括策略存储、测试控制台、健壮的API和可扩展的基础设施。这使得团队能够以一种简化且安全的方式在所有应用程序中实施精细的授权控制。 介绍部分提供了丰富的背景信息和理论基础。Wojtek随后在样本书店应用程序中演示了AVP的功能。这个简洁的应用程序包括一个前端用户界面、一个API网关REST API、由API调用的Lambda函数以及用于认证和管理用户的[Amazon Cognito](https://aws.amazon.com/cn/cognito/?trk=cndc-detail)。目标是通过逐步实施各种授权规则,根据用户的角色、属性、上下文等因素来控制每个用户可以访问的书籍。 一开始,他们没有配置任何授权。AVP策略存储为空,以便建立一个基准。虽然Lambda处理程序从本地JSON文件中加载书籍数据,初始化AVP客户端SDK,但尚未实际调用任何授权API。这使得任何用户都能查看所有书籍。 书店里有七个用户,分为三个不同的角色: - 两个管理员:Tom和Frank - 三名客户:Andrew、Susan、Toby - 两名出版商:William和Dante Wojtek和Daniel将引入不同的AVP策略,以根据每个用户角色的适当规则限制书籍的可视性。 作为产品负责人,Wojtek的第一个要求是实施基于基本角色的访问控制,允许管理员用户查看所有书籍,同时限制其他角色的访问。 Daniel开始编写更改的代码。首先,他添加了一个定义用户、角色和书籍实体的架构,以及它们之间的关系 - 用户是角色的成员,书籍的用户所有者。接下来,他创建了一个简单的CDR策略,允许“admin”角色对任何“Book”资源执行“View”操作。最后,他更新了Lambda函数处理器,以构建一个IsAuthorized请求,调用AVP API,并基于响应过滤书籍。 在进行这些更改后,像Tom这样的管理员现在可以看到所有返回的书籍,而其他用户如客户Toby则收到空列表。基于基本角色的访问控制成功地工作。 为了应对更多的复杂性,Wojtek要求允许三名客户用户在这次查看书籍,同时仍然拒绝两名出版商用户的访问。此外,他希望明确拒绝其中一个名为Frank的管理员的访问。 丹尼尔引入了多种策略来调整其系统的访问权限。首先,他添加了两项新策略,分别允许客户角色访问和针对特定用户弗兰克设置拒绝。这些更改使得弗兰克,即使是管理员,现在也无法访问系统,而其他客户如托比仍能浏览书籍。此外,丹尼尔还创建了一个基于位置的策略,若用户所在地区不是美国,则拒绝其访问书店。这使得托比等美国以外的用户无法访问书籍,而美国境内的用户则不受影响。 为了满足更多的需求,丹尼尔进一步引入了基于属性的高级访问控制。他为忠诚客户引入了一个新的操作和可选的“yearsAsMember”属性,以便更精确地控制谁可以访问优质图书优惠。这个策略允许那些成为会员至少两年的用户访问优惠,而其他用户则被拒绝。 为了实现这些目标,丹尼尔进行了一些代码更改,以便根据授权过滤图书并为客户显示正确的书籍类型。在部署这些更改后,忠诚客户如安德鲁现在能看到优质和常规书籍,但只有一年会员资格的苏珊无法访问优质书籍,因为她的会员资格不符合基于属性的策略所设定的条件。 最后,为满足另一个需求,丹尼尔实施了更精细的基于资源的访问控制。他允许出版商查看他们直接拥有的书籍,并根据所有者属性进行访问控制。同时,他还创建了一个额外的策略,明确允许Dante用户访问特定书籍ID,授予对该资源的访问权限。 为了评估所有权,我们已经将Lambda处理程序更新为批量处理每个出版商书籍的多个IsAuthorized请求,而不仅仅是单独调用。部署后,William能够如预期地访问他拥有的书籍,而Dante可以看到自己的书籍以及异常政策中授予的额外书籍。这展示了一个健壮且安全的应用程序授权是如何通过将基于资源的、用户的、操作的和上下文的访问控制一起分层来实现的能力。 在成功满足所有需求之后,Wojtek和Daniel回顾了一些关键收获: - CDR文档提供了许多额外的最佳实践,例如为资源使用唯一标识符。 - AVP与亚马逊云科技的CloudTrail集成,以便轻松审计所有更改和事件。您可以查看管理员活动以及授权请求和决策。 - 在评估授权解决方案时,考虑易用性、灵活性、安全和定价是很重要的。 - 虽然AVP简化了授权,但CDR的开源性质可以在您想要自托管引擎时防止锁定。 总的来说,他们展示了如何使用[Amazon Verified Permissions](https://aws.amazon.com/cn/verified-permissions/?trk=cndc-detail)和CDR提供一个强大且灵活的授权框架来简化和加强应用程序安全性。通过易于理解的CDR策略,支持多种授权模型,并可以通过AVP在大规模上进行评估。需要精细粒度访问控制的任何应用程序都可以从这些技术中受益。 这些示例还强调了可以在不编写任何自定义授权逻辑的应用程序代码的情况下实现的丰富功能。相反,将这些担忧解耦到专为此目的打造的AVP平台减少了意外复杂性。这使得开发人员可以专注于为客户交付有差别的业务价值。 **下面是一些演讲现场的精彩瞬间:** 领导者与Daniel共同登上了舞台。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_0.png) 领导者阐述了随着时间的推移,将权限逐步添加至简洁的代码可能会导致其变得复杂且混乱,从而使代码更加难以维护和理解。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_1.png) 亚马逊云科技提供了简化授权和访问控制的方法,降低了意外的复杂性,使得开发人员能够专注于解决关键的业务问题。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_2.png) 领导者解释了[Amazon Verified Permissions](https://aws.amazon.com/cn/verified-permissions/?trk=cndc-detail)如何评估策略以批准请求的过程。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_3.png) 演讲强调了通过CloudWatch日志在亚马逊云科技中对授权事件的全面了解,实现了强大的审计功能。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_4.png) 领导者强调了通过与亚马逊云科技保持各种渠道和资源的联系,以便持续学习的重要性。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_5.png) 领导者鼓励观众为GitHub上的开源CDK项目做出贡献。 ![](https://d1trpeugzwbig5.cloudfront.net/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes/images/rebranded/BOA209-Build_verifiable_and_effective_application_authorization_in_40_minutes_6.png) ## 总结 本次演讲主要介绍了[Amazon Verified Permissions](https://aws.amazon.com/cn/verified-permissions/?trk=cndc-detail)(AVP)这一完全托管式的授权服务。作为开源策略语言Cedar的定义者,AVP能够精细地控制对资源的访问权限。通过策略规定,哪些主体可以针对特定资源执行相应操作。此外,AVP还提供了可扩展的授权API用于评估策略。 在演示过程中,演讲者展示了一个样本书店应用的实现过程,涵盖了基于角色的、基于上下文的、基于属性和基于资源的访问控制。在该应用中,AVP的授权检查被添加到了亚马逊云科技的Lambda函数中。同时,该应用还使用了亚马逊Cognito进行用户身份验证。为了便于审计,AVP还与亚马逊云科技的CloudTrail进行了集成。 AVP的主要优势在于其易用性、灵活的策略模型以及降低系统复杂性。演讲者特别强调了在策略设计中使用唯一标识符的重要性。接着,他们对AVP与自托管Cedar实施的总体拥有成本进行了对比分析。由于Cedar的开源特性,这有助于避免在从AVP迁移过程中出现供应商锁定的问题。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问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
目录
关闭