函数计算权限配置问题说明详解

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 相信大家在使用函数计算的过程中或多或少的都遇到过权限的问题,有些出现的问题比较难以理解和解决,所以准备以下几个方面来说明下权限问题


在正文开始前先介绍下相关概念


RAM:RAM是阿里云的一款权限管理产品,也可以叫做访问控制。是独立于函数计算的平行产品,函数计算的权限控制也是使用的RAM,关于RAM更多信息

RAM子账号:在使用注册阿里云产品时会有一个主账号,既root账号。该账号可以操作所有阿里云产品,权限较大,这个时候就可以创建一个子账号,既RAM子账号,可以给该子账号指定相关权限,保证使用安全。

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息

Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档


相信大家在使用函数计算的过程中或多或少的都遇到过权限的问题,有些出现的问题比较难以理解和解决,所以准备以下几个方面来说明下权限问题


主账号权限问题


主账号就是注册阿里云的账号,属于root账号,阿里云所有产品都可以操作。这个时候一般来说主账号没有什么权限问题。但是在阿里云权限体系中有一个角色(role)的概念,而函数计算里面也会用到这么一个角色的概念。所以当使用主账号出现权限问题时一般都是服务配置里的角色权限不够。


示例问题


当我们使用主账号进行创建镜像函数的时候,有些时候会出现如图所示的报错提示,问题原因就是服务角色没有相应的权限。

image.png


在创建镜像函数的界面我们可以看到,有一个提示是“需要为该服务的role配置xxxx权限”,这个role就是角色,意思就是我们要给这个服务角色添加xxx权限。怎么操作呢?我们接着往下看。

image.png

新建函数

配置函数

更换类型

事件函数

函数类型

所在服务

CRService

函数名称

请填写您的函数名称

CustomContainer

运行环境

custom-container需要为该服务的le配置AlyuncontainerRegistyReadonlycces权限

选择容器镜像

容器镜像

镜像只能位于阿里云容器镜像服务

可以登陆函数计算控制台,选择需要的服务,点击服务配置->修改配置,往下拉就可以看到这个服务角色配置了。可以选择某个已有的角色,或者新建角色。

image.png

权限配置

选择角色

aliyunfcgeneratedrole-cn-hangzhou-CRService

创建新角色

策略详情

AliyunLogFullAccess

AliyUnRDSFUlAccess

AliyunOSSFulAccess

AliyunFcGeneratedLogPolicy-cn-hangzhou-CService

AliyunECSNetworklnterfaceManagementAccess

+添加新策略

asss

然后可以点击添加新策略添加需要的权限。添加之后就没有报错了。从这个问题我们可以看到虽然是用的主账号,但是当我们的服务角色不配置这个权限的时候依然会报错。报错的意思就是服务角色不能为空(就是没有权限)。所以这个时候我们给角色添加上相应的权限就没有问题了。

除此之外,如果是使用函数计算的临时密钥,那么临时密钥里所属的权限就是服务角色里的权限。如果不配置服务角色,那临时密钥是为空的,也就没有权限了。(这里是比较重要的,很多场景都是要用到临时密钥)


总结

我们总结下,主账号本身权限没什么大问题,一般就是服务角色权限不够。所以在主账号遇到权限问题时一定检查下服务角色是否有相关权限。



子账号权限问题


子账号权限配置比较多样复杂,我们说一些常见的子账号权限权限问题

函数计算子账号权限配置模版

我们先看看子账号配置的模版,一般情况下给子账号配置这些权限就够了。

  • AliyunFCFullAccess

说明:管理操作函数计算的权限

  • AliyunLogReadOnlyAccess

日志只读权限,如果允许开发者自己创建日志库的话, 这里可以是 AliyunLogFullAccess

  • AliyunECSNetworkInterfaceManagementAccess

管理ECS弹性网卡的权限

  • AliyunContainerRegistryReadOnlyAccess

只读访问容器镜像服务(ContainerRegistry)的权限

  • AliyunCloudMonitorReadOnlyAccess

只读访问云监控(CloudMonitor)的权限

  • AliyunRAMReadOnlyAccess

只读访问访问控制(RAM)的权限,即查看用户、组以及授权信息的权限

  • AliyunNASFullAccess

nas权限,如果需要使用到Nas 功能的话


至于触发器相关的, 可以直接配置对应的云服务的 readonly 权限或者 full 权限, 比如对于 oss 触发器, 可以直接添加AliyunOSSReadOnlyAccess 或者  AliyunOSSFullAccess, 当然您可以定义的更具体和细致, 比如具体到某个 bucket,触发器我们后面在详细说


配置、更新触发器权限问题


我们先看oss触发器,我这里有一个子账号,当我只给了这些权限的时候,去更新触发器是没有权限更新的,会报错。

image.png

添加权限

备注

权限应用范围

权限策略类型

权限策略名称

管理对象存储服务(0SS)权限

系统策略

全局

AliyunOSsFullAccess

只读访问访问控制(RAM)的权限,即查看用户,组以及授权信

系统策略

AliyunRAMReadOnlyAccess

全局

息的权限

管理表格存储服务(OTS)的权限

全局

系统策略

AliyunOTSFullAccess

管理函数计算(FC)服务的权限

全局

系统策略

AliyunFCFullAccess

image.png

事件源

事仕源

acs:oss:cn-shanghai?

ac

oss:ObjectCreat

错误

oss:ObjectCreat

没有更新触发器的权限.

oss:Objectcreat

oss:ObjectCreat

确认

srouse

前缀

ZIP

后终

哎,不对啊,这不是已经给了ossFull的权限了嘛,为什么不行。别急,我们在给添加一个ramFull的权限就可以更新了。

image.png

ram

权限策略名称

备注

AliyunRAMFullAccess

管理访问控制(RAM)的权限,即管理用户以及授权的权限

到这里一般就没问题了。但是也不对啊,一个子账号我要给ramFull这么大的权限吗,这也不安全啊。对,这确实不太安全,所以我们可以自定义一个 policy内容如下,然后在把这个自定义的policy添加给子账号,这样我们添加上这个ram:PassRole权限后也是可以更新触发器了。

 {
"Statement": [
          {
"Action": [
"ram:PassRole"              ],
"Effect": "Allow",
"Resource": "*"          }
      ],
"Version": "1"  }


列举服务的权限


某些时候不想给子账号添加FCFull的权限,只想让子账号操作某一个服务函数,这个是可以的,配置自定义权限就行,问题不是这个。问题是当不给FCFull或者FCReadonly权限的时候打开函数计算控制台点击服务/函数会出现‘没有列举服务的权限’提升,如图。

image.png

这个时候会说我不是给了某个服务函数的操作权限嘛,为什么会这样呢?

原因就是虽然给了某个服务函数的操作权限,但是也只能操作你授权的那个服务函数,而控制台选择点击服务/函数的时候会去获取地域下的所有服务函数,那给的权限不包含其他的服务函数,所以就会提示没有列举服务的权限。

这个时候我们只要给子账号添加一个AliyunFCReadOnlyAccess 只读的权限就可以了


自定义权限

向上面说的那样,有些时候权限不能放开只能限制到某一个函数服务,这个时候就可以使用自定义权限,限制操作,详细请看https://help.aliyun.com/document_detail/52885.html?spm=a2c4g.11186623.6.639.7e096ec9q8SMJ7

image.png

同时还可以使用标签对服务分组授权,分组管理。通过标签功能,可以将各团队进行分组,然后给不同分组的团队授予不同的权限。详情请看:https://help.aliyun.com/document_detail/137462.html?spm=a2c4g.11186623.6.660.1ab01330d3Hr8a


其他

子账号除了本身的账号权限以外还有服务角色的权限,和主账号同理。某些时候当子账号已经有了权限,但是提示没有权限的时候一般都是服务角色没有权限,建议检查服务角色权限。


总结

子账号的权限问题一般比主账号要多的,遇到子账号问题可以根据提示先检查账号本身的权限,然后可以在检查服务角色的权限,一般检查下来就能知道是缺什么了。



工具权限


函数计算常用的工具就是fun 工具,是使用fun config进行账号配置,配置的时候accuntid 一定是主账号的,然后ak,aks信息可以是子账号的,那相应的权限就是子账号的。部署报错权限问题,可以根据提示缺什么就加什么。



相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3月前
|
JavaScript Serverless 数据安全/隐私保护
函数计算产品使用问题之怎么动态设置.npmrc文件以配置私有仓库访问
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 Serverless 网络安全
函数计算产品使用问题之通过仓库导入应用时无法配置域名外网访问,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
缓存 Serverless Docker
函数计算产品使用问题之怎么修改Docker守护进程配置
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
Serverless 对象存储
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
42 1
|
4月前
|
运维 Serverless API
函数计算产品使用问题之如何配置单实例的并发数
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
存储 Java Serverless
函数计算产品使用问题之Custom Runtime函数的详细配置包括哪些
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
存储 运维 监控
函数计算产品使用问题之如何在控制台配置HTTP触发器并使用HTTP请求触发
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
存储 运维 Java
函数计算产品使用问题之怎么配置定时触发器来调用Java函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
存储 Serverless API
函数计算产品使用问题之部署SD后,如何配置自己的域名
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    无影云桌面