阿里云函数计算是近期推出的一个无服务器的全托管的产品,使用者只需编写核心代码并设置运行的条件,即可在函数计算以弹性、安全地运行。函数计算能自行维护服务器资源,网络资源,以及消息分发和负载均衡等功能。
因为使用者需要把代码部署在函数计算上运行,能调用函数的方式有很多,可以通过APIGateway、Fcli、控制台以及OSS等各种事件源来触发函数执行,与此同时,函数计算作为执行单元需要授权交叉访问其他产品,众多的调用和模糊的安全界定,让大家在使用函数计算对角色的授权会感到困惑,其实简单来说,就是函数计算能在什么情况下访问哪些资源或者操作,以及那些来源能Invoke函数计算的执行,简单按照使用方向来分如下两层角色授权:
1、函数计算可以被授权访问其他产品的操作权限?
2、那些事件源可以被授权来Invoke函数计算的执行?
这个是两个层面的授权,函数计算通过两层授权来解决上面两个问题,第一个问题是Service的角色授权,第二个是Trigger角色的授权,其中:
Service层的角色授权:是解决函数计算可以申请访问那些产品,在函数计算里,执行策略是赋予函数计算本身,角色设置在service这层,service下的函数都继承该角色的执行策略。
功能图解:
授权给函数计算访问其他云产品的流程:
解释:在service上的角色的策略主要是授权给Service能去访问(read、delete、write等)其他云产品的权限,例如产品OSS、OTS、SLS等,注意的是,为了防止访问策略超出边界,
在函数计算控制台上,关于Service层的权限,仅仅列出ReadOnly的权限,控制台如下图:
如果想申请更多权限,可以在访问控制中对该角色进行授权,详见访问控制的角色管理,下图是使用RAM(访问控制)设置其他权限的图示:
Trigger的角色授权:是解决授权给某个产品的事件源可以invoke函数计算来执行代码, 授权的粒度是到产品,例如授权给OSS,OSS的多个事件源(Put,delete,copy等都可以invoke函数运行)
框图图解:
授权事件源来触发函数计算流程:
解释:当用户建立一个trigger的时候,需要配置事件内容,在配置事件源的时候,需要配置一个角色,当事件源被触发的时候,使用该角色来执行函数,角色的授权是事件源产品本身,跟产品的事件无关。
在控制台上操作界面如下(新版界面会不一样):
综合上面两部分角色授权来看,简单的说,在函数计算中,服务层的角色授权是赋予函数去访问其他云产品的权限,在触发器的角色授权是授权给事件源可以调用函数计算做运算。