ITPub博客

首页 > 云计算 > 公有云实践 > 亚马逊云科技-快构建应用认证授权功能

亚马逊云科技-快构建应用认证授权功能

公有云实践 作者:出海新观点 时间:2025-07-12 00:13:51 0 删除 编辑

关键字: [亚马逊云科技, Verified Permissions, 云服务快速构建, 应用认证授权, 基于角色访问控制, 细粒度访问控制, Lambda授权验证]

导读

在这个演讲中,讲者介绍了如何利用亚马逊云科技云服务快速构建应用程序的认证和授权功能。他解释了使用Amazon Cognito进行基于角色的简单访问控制,以及结合Amazon Verified Permissions实现细粒度访问控制的两种方案。演讲重点阐述了Amazon Cognito和Verified Permissions如何实现身份验证、访问控制等功能,并介绍了在不同架构下的集成方式,为构建安全可靠的应用程序提供了高效的解决方案,使应用程序能够获得高可用性、多因素认证等安全优势。

演讲精华

以下是小编为您整理的本次演讲的精华。

在当今快速发展的数字时代,应用程序的安全性已经成为一个不容忽视的重要课题。作为一名经验丰富的安全顾问,我经常被问到这样的问题:“我的某某应用最近遭到了未经授权的访问攻击,或者存在水平权限和垂直权限的问题,我应该如何修复这个安全漏洞?”通常情况下,给出修复建议时,我们需要首先了解应用的业务流程,而业务流程越复杂,修复方案就越复杂。这无疑是开发人员和架构师最不愿意听到的事情,也是他们最痛恨的一个难题。

幸运的是,亚马逊云科技(亚马逊云科技)提供了一种安全左移的简洁技术方案,可以快速构建应用程序的认证和授权功能。这个方案的第一步是进行正常的登录验证。在验证通过后,我们可以在登录信息中添加一些额外的属性。如果使用API Gateway,我们可以直接在其上挂载一个Lambda函数进行验证。这个Lambda函数会调用VerifiedPermissions服务,与应用程序代码完全解耦。无论是更新权限策略还是更新业务逻辑,两者之间都没有必然的绑定关系,我们不需要等待发布窗口就可以进行更新。

正如刚才提到的,Cognito服务支持第三方账号的接入,以及开放的联盟登录协议。它还提供了一些类似的登录页面,我们无需自己编写,直接调用即可。然后,我们可以将用户导入到Cognito中。作为云服务的一些优势,Cognito还提供了高可用性、多因子认证、威胁情报等标准功能。亚马逊云科技将其安全能力融入到了这些安全服务中,例如自适应验证功能。在许多使用场景中,如果我们使用常用设备登录,可能只需要简单的用户名和密码即可。但如果使用陌生设备在陌生地点登录,系统可能会要求我们使用多因子认证(MFA)进行认证。另外,如果密码太弱或存在泄露风险,Cognito也会提示用户,这些都是用户友好且增强安全性的功能。

假设我们要开发一个宠物商店应用程序,其中包括员工和顾客两种角色,他们可以访问不同的功能。在这种情况下,我们需要进行访问控制,可以考虑两种技术方案。第一种方案是基于Cognito服务本身,通过添加额外的属性实现基于角色的访问控制(RBAC)模型。另一种方案是使用Lambda的授权器(Authorizer)调用VerifiedPermissions服务,实现细粒度的访问控制。

对于第一种方案,流程相对简单。用户登录Cognito后,将登录令牌发送到后端,API Gateway会调用Cognito的授权器验证登录身份的有效性和附加属性。如果验证通过,就会调用API并返回结果;否则,将不会调用后端API。这个过程实际上与我们在应用程序中自己实现的API Gateway模块的原理相同。作为一个示例,我们可以为宠物商店定义一个属性,根据这个属性实现基于角色的访问控制模型。

要实现这种模型,需要在Cognito中触发一个Lambda函数,在该函数中添加额外的身份信息。除此之外,Cognito还支持自定义注册、自定义身份验证和自定义消息等功能。在登录过程中,通过Cognito的Lambda触发器调用外部数据源,将附加的属性返回给用户,从而赋予相应的访问权限。

对于需要构建短期使用的工具应用程序,如分析工具或内部使用的简单工具,我们建议采用上述基于Cognito的简单访问控制方案。在这种情况下,我们无需进行细粒度的访问控制,只需要为用户分配一个角色,如管理员或操作员即可。管理员可以访问所有权限,而操作员如业务员只能访问几个相应的业务接口,无需区分数据或文件权限。这种方案的实现成本低廉,可以快速构建。

接下来,我们介绍一种可实现细粒度访问控制的方案,相对来说也不会特别复杂。与前一种方案的唯一区别在于验证逻辑不同。在这种方案中,我们通过API Gateway集成Lambda的授权器,Lambda可以解析令牌的任意字段,然后将解析结果与VerifiedPermissions中定义的策略进行计算,最终决定是允许还是拒绝访问。这是一种推荐的细粒度访问控制架构。

认证和授权通常是分开的,用户管理或身份管理与授权实际上是两个独立的服务,分别对应Cognito和VerifiedPermissions。假设我们已经有了用户体系,那么接入VerifiedPermissions也是可行的。

VerifiedPermissions服务继承了Amazon Web Services IAM(身份与访问管理)的设计思想,主要有三个关键概念:主体(Principal)、操作(Action)和资源(Resource),即“谁对什么资源做什么操作”。与IAM不同的是,VerifiedPermissions中所有字段都可以自定义。例如,主体可以定义为任意角色,操作可以定义为上下左右或前后,资源也可以自行定义。这使得该服务非常强大且灵活,使用成本也不高,可以实现细粒度的访问控制,并且易于扩展和理解。

这里有一个示例策略,定义了员工可以访问自己商店的宠物,而经理可以访问所有宠物。我们可以在策略中添加条件,从令牌的上下文中获取自定义字段,用于判断和控制访问权限。

如果我们没有使用API Gateway,也可以直接在应用程序中集成VerifiedPermissions服务。在这种情况下,我们只需要在应用程序的某个模块中编写调用VerifiedPermissions接口的代码,而不必在每个接口中都进行集成。

总的来说,无论是使用API Gateway、在EKS或Kubernetes中使用Sidecar模式,还是直接集成到单体应用程序中,我们都可以根据不同的使用场景和架构,采用相应的方式集成亚马逊云科技的认证和授权解决方案。

如果我们只需要基于角色的简单访问控制,并且应用程序的使用周期不太长、未来变更也不太多,那么使用Cognito进行基于角色的访问控制就可以了。但如果应用程序是长期使用的,我们建议添加VerifiedPermissions服务,以实现细粒度的访问控制。

这个技术方案旨在利用亚马逊云科技的云服务,快速构建应用程序的认证和授权功能,包括身份验证、访问控制等,提供了基于角色的简单控制和细粒度控制两种方案选择,并介绍了在不同架构下的集成方式,为安全可靠的应用程序交付提供了一种高效的解决之道。

下面是一些演讲现场的精彩瞬间:

The speaker explains how their cloud-based services can quickly build authentication and authorization for applications.

The speaker discusses security features like multi-factor authentication and password strength checks, which enhance user-friendliness while improving security.

除了基本身份验证功能,Amazon Cognito还支持自定义注册,允许限制注册来源的域名或IP地址范围。

总结

亚马逊云科技提供了一套快速构建应用程序认证和授权功能的解决方案。该方案利用了亚马逊云科技的云服务,如Cognito、API Gateway和Verified Permissions,帮助开发者轻松实现身份验证、访问控制等安全功能。

该方案提供了两种访问控制模式:基于角色的简单控制和细粒度控制。前者适用于短期使用的工具应用,通过在Cognito中添加附加属性实现角色划分。后者则使用Verified Permissions服务,可以根据自定义的主体、操作和资源进行细致的访问控制。

无论是使用API Gateway集成还是直接在应用程序中集成,该解决方案都提供了高效、灵活的实现方式。它不仅降低了开发成本,还提高了应用程序的安全性和可扩展性。

总的来说,这套技术方案为开发者提供了一种快速构建安全可靠应用程序的高效途径,充分利用了亚马逊云科技云服务的优势,值得广泛应用和推广。

我们正处在Agentic AI爆发前夜。2025亚马逊云科技中国峰会提出,企业要从“成本优化”转向“创新驱动”,通过完善的数据战略和AI云服务,把握全球化机遇。亚马逊将投入1000亿美元在AI算力、云基础设施等领域,通过领先的技术实力和帮助“中国企业出海“和”服务中国客户创新“的丰富经验,助力企业在AI时代突破。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70038688/viewspace-3090912/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-05-21

  • 博文量
    679
  • 访问量
    564502