对于移动应用开发者而言,通常应用的很多功能都是在客户端的设备上执行的,但人们也会倾向于把一些逻辑和业务数据保存在移动应用之外,例如:
·银行类的移动应用不会允许用户直接修改他的个人账户金额,只有在设备之外执行的逻辑代码调用银行的业务系统后,才能决定是否进行资金的转账。
·所有在线游戏都不会轻易让用户直接通关,通关之前必须确保当前一关的任务已经完成。
这是开发客户端/服务器应用的典型模式,开发者需要把一部分逻辑置于客户端(如浏览器或移动设备)之外,原因通常包括:
·共享:数据需要被多个用户直接或间接读取。
·安全:数据只有在满足特定条件的情况下才能够被读取和修改,这种条件的检验和判断显然不能够在未被信任的客户端上完成。
·访问在客户端上无法实现的大规模计算资源或者大容量存储。
我们通常倾向于把这些前端程序所依赖的外部逻辑作为应用的后端服务。
为了实现这些外部的逻辑,常规的做法通常是开发一个供移动应用调用的Web后台应用,或与现有的后台应用集成,为浏览器渲染内容。但除了开发一个全新的Web后台应用或修改现有后台应用的功能以外,开发者还可以通过在网页或移动应用的代码中,直接调用一个或多个AWS Lambda函数,由这些函数来完成相应的逻辑执行工作。这些函数就构成了一组无服务器的后端。
为应用程序实现后端逻辑的一个重要原因就是安全,用户访问后端服务时,必须时刻进行认证和授权信息的检验。AWS Lambda沿用了由AWS提供的标准安全框架来控制函数的行为。例如:函数只能读取指定路径的文件、向指定的数据库写入记录。这个安全框架基于AWS Identity and Access Management策略和角色。以此方法,开发者可以更轻松地为代码的执行创造安全的环境,把安全维护整合进开发流程。开发者可以自由地裁剪每一个函数的安全权限,用一组仅具备最低权限的模块,就能轻易实现应用程序。
定义
最低权限是指执行应用时必须获取的基本权限,例如:代码从一个中央存储区读取用户信息并发布到网页上,这样的模块就不需要为其配置写入权限,只需要读取待发信息的子集。任何超越了这个权限的安全设置都可能是潜在的漏洞,加重未知攻击的后果,入侵者往往先攻破一个模块,然后借助模块本身过于宽松的权限设置为跳板,攻击整个系统。