更新时间:2025-06-25 GMT+08:00
分享

配置函数的委托权限

本章节介绍如何创建、配置和修改函数的委托权限。

操作场景

当函数工作流服务需与其他云服务协同工作时,应创建云服务委托,授权FunctionGraph使用这些云服务,并在FunctionGraph中为函数配置委托权限,以实现与其他云服务的协同工作。

对于常见函数应用场景的委托配置,可参考常见应用场景授权项配置。

默认委托

为方便创建和使用函数,当华为云账号下无函数默认委托时,函数工作流服务提供快速创建默认委托的功能。

默认委托包含了函数工作流服务需要访问的部分云资源权限,如表1所示,其中相关服务的细粒度最小使用权限介绍请参见表4

表1 默认委托权限说明

权限名称

描述

fgs_default_region_role

函数默认委托使用的项目级服务策略,包含虚拟私有云服务(VPC)、弹性文件服务(SFS)等的最小权限集。

fgs_default_global_role

函数默认委托使用的全局服务策略,包含统一身份认证服务(IAM)和对象存储服务(OBS)的最小权限集。

SWR Admin

容器镜像服务(SWR)管理员,拥有该服务下的所有权限。

DIS User

数据接入服务(DIS)通道使用权限。

创建默认委托的3种方式:

已创建默认委托后,以上3种方式不会再有创建默认委托的提示。

创建函数委托

以函数工作流服务获取VPC访问权限为例,当配置函数访问VPC内资源时,需为函数工作流服务创建委托并授予VPC访问权限,授权函数工作流服务使用VPC服务,实现云服务间的协同工作。

  1. 登录统一身份认证服务(IAM)控制台
  2. 在左侧导航窗格中,选择“委托”页签,单击右上方的“创建委托”。

    图4 创建委托

  3. 配置委托参数,完成参数配置后如图5所示,单击“完成”,系统弹出“创建成功”提示,单击“立即授权”。

    • 委托名称:自定义填写,以“serverless-trust”为例。
    • 委托类型:选择“云服务”。
    • 云服务:选择“函数工作流 FunctionGraph”。
    • 持续时间:以选择“永久”为例,实际使用时请根据业务需求填写。
    • 描述(可选):填写描述信息。
    图5 填写基本信息

  4. 进入“选择策略”页面,如图6所示,在右方搜索框中搜索需要添加的权限并勾选,此处以添加VPC Administrator权限为例。勾选完成后单击“下一步”。

    图6 选择策略
    表2 委托权限示例

    权限名称

    使用描述/场景

    VPC Administrator

    虚拟私有云服务管理员。

  5. 进入“设置最小授权范围”页面,如图7所示,建议根据业务部署的区域选择“指定区域项目资源”,并勾选所需区域。勾选完成后单击“确定”,进入“授权成功”界面。

    图7 根据业务需要选择对应的权限

如果系统策略不满足授权要求,管理员可以通过“可视化视图”和“JSON视图”两种方式创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制,详情请参见创建自定义策略

配置函数委托

  1. 登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”。
  2. 选择待配置委托的函数,单击进入函数详情页。
  3. 选择“设置 > 权限”,参考表3配置函数委托。配置完成后单击“保存”。

    表3 配置函数委托参数说明

    参数

    说明

    函数配置委托

    在下拉框中选择已创建的函数委托。若无可用委托,可单击右侧“创建委托”进入统一身份认证服务IAM创建,具体操作步骤请参见创建函数委托

    函数执行委托

    勾选“为函数执行单独设置委托”时,将弹出此参数进行配置,如图8所示,配置后可以通过函数执行入口方法中的context参数获取具有委托中权限的Token或者SecurityAccessKey、SecuritySecretKey、SecurityToken,用于访问其他云服务,代码示例可参考6.4-环境变量应用示例

    函数执行委托与函数配置委托可独立设置,以确保业务使用过程中委托权限的明确管理。

    图8 设置委托

修改函数委托

如需修改委托的权限、持续时间和描述参数,如图9所示,需在统一身份认证服务(IAM)控制台中对相应的FunctionGraph委托进行修改。

图9 修改函数委托

FunctionGraph相关委托修改后,约10分钟生效(如context.getSecurityToken()更新)。通过context获取的委托相关信息有效期为24h,请注意在失效前及时刷新。

常见应用场景授权项

如需使用表4中的场景,即需与其他服务协同工作,应先创建函数委托,并配置函数委托

创建委托时,授予的权限类型应根据实际业务需要进行调整,生产环境中建议调整为细粒度最小使用权限,以确保业务运行所需的同时,有效降低权限过大的潜在风险。

表4 常见授权项选择

场景

策略名称

策略说明

细粒度最小使用权限

使用自定义镜像

SWR Admin

容器镜像服务(SWR)管理员,拥有该服务下的所有权限。

创建自定义镜像请参见使用容器镜像创建函数

暂不支持

挂载SFS文件系统(仅存量用户支持)

SFS Administrator

弹性文件服务(SFS)管理员,拥有该服务下的所有权限。

挂载SFS文件系统请参见挂载SFS容量型文件系统(仅存量用户支持使用)

暂不支持

挂载SFS Turbo文件系统

SFS Turbo ReadOnlyAccess

弹性文件服务SFS Turbo的只读权限。

挂载挂载sfs turbo文件系统请参见挂载SFS Turbo文件系统

  • sfsturbo:shares:getShare(查询单个文件系统详情)
  • sfsturbo:shares:showFsDir(查询目录是否存在)

挂载ECS共享目录

ECS ReadOnlyAccess

弹性云服务器(ECS)的只读访问权限。

挂载ECS共享目录请参见挂载ECS共享目录

ecs:cloudServers:get(查询云服务器详情)

配置预留实例策略

AOM ReadOnlyAccess

应用运维管理服务(AOM)的只读权限。

  • aom:metric:get(查询指标详情)
  • aom:metric:list(查询指标列表详情)

FunctionGraph ReadOnlyAccess

函数工作流服务(FunctionGraph)的只读权限。

functiongraph:function:getConfig(查询函数配置)

使用DIS触发器

DIS Administrator

数据接入服务(DIS)管理员,拥有该服务下的所有权限。

创建DIS触发器请参见使用数据接入服务(DIS)触发器

暂不支持

使用分布式消息触发器

DMS ReadOnlyAccess

分布式消息服务(DMS)的只读权限。

dms:instance:get(查看实例详情)

配置跨域VPC访问

VPC Administrator

虚拟私有云VPC管理员, 拥有对VPC内所有资源执行任意操作的权限。

配置跨域VPC访问请参见函数访问VPC内资源

  • vpc:ports:get(查询端口)
  • vpc:ports:create(创建端口)
  • vpc:vpcs:get(查询VPC)
  • vpc:subnets:get(查询子网)
  • vpc:vips:delete(虚IP解绑VM)
  • vpc:securityGroups:get(查询安全组列表或详情)

DNS域名解析

DNS ReadOnlyAccess

云解析服务(DNS)的只读权限,拥有该权限的用户仅能查看云解析服务资源。

调用DNS服务的接口解析内网域名请参见解析DNS内网域名

  • dns:recordset:get(查询租户Record Set资源)
  • dns:zone:get(查询租户zone)
  • dns:recordset:list(查询Record Set列表)
  • dns:zone:list(查询zone列表)

开启异步通知

目标服务为OBS时:

OBS Administrator

对象存储服务(OBS)管理员,拥有该服务下的所有权限。

配置异步通知请参见配置函数的异步调用策略

  • obs:bucket:HeadBucket(获取桶元数据)
  • obs:bucket:CreateBucket(创建桶)
  • obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段)

目标服务为SMN时:

SMN Administrator

消息通知服务(SMN)管理员,拥有该服务下的所有权限。

配置异步通知请参见配置函数的异步调用策略

  • smn:topic:publish(发布消息)
  • smn:topic:list(查询主题列表)

目标服务为DIS时:

DIS Administrator

数据接入服务(DIS)管理员,拥有该服务下的所有权限。

配置异步通知请参见配置函数的异步调用策略

暂不支持

使用OBS桶

OBS Administrator

对象存储服务(OBS)管理员,拥有该服务下的所有权限。

  • obs:bucket:GetBucketLocation(获取桶区域位置)
  • obs:bucket:ListAllMyBuckets(获取桶列表)
  • obs:bucket:GetBucketNotification(获取桶的消息通知配置)
  • obs:bucket:PutBucketNotification(设置桶的消息通知配置)

相关文档