
# 配置函数的委托权限
本章节介绍如何创建、配置和修改函数的委托权限。
#### 操作场景
当函数工作流服务需与其他云服务协同工作时，应创建云服务委托，授权FunctionGraph使用这些云服务，并在FunctionGraph中为函数配置委托权限，以实现与其他云服务的协同工作。
对于常见函数应用场景的委托配置，可参考[常见应用场景授权项]配置。
 #### 默认委托
为方便创建和使用函数，当华为云账号下无函数默认委托时，函数工作流服务提供快速创建默认委托的功能。
默认委托包含了函数工作流服务需要访问的部分云资源权限，如[表1]所示，其中相关服务的**细粒度最小使用权限** 介绍请参见[表4]。
 表1默认委托权限说明 
| 权限名称                    | 描述                                                  |
|:---|:---|
| fgs_default_region_role | 函数默认委托使用的项目级服务策略，包含虚拟私有云服务（VPC）、弹性文件服务（SFS）等的最小权限集。 |
| fgs_default_global_role | 函数默认委托使用的全局服务策略，包含统一身份认证服务（IAM）和对象存储服务（OBS）的最小权限集。  |
| SWR Admin               | 容器镜像服务（SWR）管理员，拥有该服务下的所有权限。                         |
| DIS User                | 数据接入服务（DIS）通道使用权限。                                  |
   
**创建默认委托的3种方式：**
方式一：首次登录自动弹出创建提示
- 首次登录函数工作流控制台，函数数量为0且无默认委托，在浏览"总览"页时，系统会弹窗提示是否需要创建默认委托，单击"同意授权并创建"即可自动创建名为"fgs_default_agency"的默认委托。
  图1弹窗提示   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002117778573.png "点击放大") 
 
方式二：创建函数时单击创建
- 进入创建函数页面，"委托名称"参数的下拉列表中提供创建默认委托的选项，如[图2]所示，单击后会弹出授权窗口，单击"确定"，即可自动创建名为"fgs_default_agency"的默认委托。
  图2创建函数时创建默认委托   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002377245946.png "点击放大")
  
  
 
方式三：在函数详情页单击创建
- 进入函数详情页，如[图3]所示，选择"设置 \> 权限"，在"委托"参数的下拉列表中单击"未找到合适委托？点此创建默认委托"，单击后会弹出授权窗口，单击"确定"，即可自动创建名为"fgs_default_agency"的默认委托。
  图3权限中创建默认委托   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082099574.png "点击放大")
  
  
 
![](https://support.huaweicloud.com/usermanual-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
已创建默认委托后，以上3种方式不会再有创建默认委托的提示。
 #### 创建函数委托
以函数工作流服务获取VPC访问权限为例，当配置函数访问VPC内资源时，需为函数工作流服务创建委托并授予VPC访问权限，授权函数工作流服务使用VPC服务，实现云服务间的协同工作。
1. 登录[统一身份认证服务（IAM）控制台](https://console.huaweicloud.com/iam/)。
2. 在左侧导航窗格中，选择"委托"页签，单击右上方的"创建委托"。 
   图4创建委托   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082099558.png "点击放大")
   
   
   
3. 配置委托参数，完成参数配置后如[图5]所示，单击"完成"，系统弹出"创建成功"提示，单击"立即授权"。
   
   - 委托名称：自定义填写，以"serverless-trust"为例。
   
   - 委托类型：选择"云服务"。
   
   - 云服务：选择"函数工作流 FunctionGraph"。
   
   - 持续时间：以选择"永久"为例，实际使用时请根据业务需求填写。
   
   - 描述（可选）：填写描述信息。
   
   
   图5填写基本信息   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002117778557.png)
   
   
   
4. 进入"选择策略"页面，如[图6]所示，在右方搜索框中搜索需要添加的权限并勾选，此处以添加VPC Administrator权限为例。勾选完成后单击"下一步"。
   
   图6选择策略   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002532942876.png "点击放大")
   
   表2委托权限示例 
   | 权限名称              | 使用描述/场景     |
   |:---|:---|
   | VPC Administrator | 虚拟私有云服务管理员。 |
      
   
   
5. 进入"设置最小授权范围"页面，如[图7]所示，建议根据业务部署的区域选择"指定区域项目资源"，并勾选所需区域。勾选完成后单击"确定"，进入"授权成功"界面。
   
   图7根据业务需要选择对应的权限   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002533104008.png "点击放大")
   
   
   
 
![](https://support.huaweicloud.com/usermanual-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
如果系统策略不满足授权要求，管理员可以通过"可视化视图"和"JSON视图"两种方式创建自定义策略，并通过给用户组授予自定义策略来进行精细的访问控制，详情请参见[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。
 #### 配置函数委托
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧导航栏选择"函数 \> 函数列表"。
2. 选择待配置委托的函数，单击进入函数详情页。
3. 选择"设置 \> 权限"，参考[表3]配置函数委托。配置完成后单击"保存"。
   
    表3配置函数委托参数说明 
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | 委托     | 在下拉框中选择已创建的函数委托。若无可用委托，可单击右侧"创建委托"进入统一身份认证服务IAM创建，具体操作步骤请参见[创建函数委托]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 函数执行委托 | 勾选"为函数执行单独设置委托"时，将弹出此参数进行配置。该参数用于控制函数运行时访问其他云服务的权限，若不勾选，则默认与上方"委托"保持一致。两者可独立设置，便于对不同场景下的委托权限进行精细化管理。 如[图8]所示，配置后可以通过函数执行入口方法中的context参数获取具有委托中权限的Token或者SecurityAccessKey、SecuritySecretKey、SecurityToken，用于访问其他云服务，代码示例可参考[6.4-环境变量应用示例](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0154.html#functiongraph_01_0154__li19691528105213)。 图8设置委托 ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002563724063.png "点击放大") |
      
   
   
 
 #### 修改函数委托
如需修改委托的权限、持续时间和描述参数，如[图9]所示，需在[统一身份认证服务（IAM）控制台](https://console.huaweicloud.com/iam/)中对相应的FunctionGraph委托进行修改。
图9修改函数委托   
![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002361896933.png "点击放大")
FunctionGraph相关委托修改后，约10分钟生效（如context.getSecurityToken()更新）。通过context获取的委托相关信息有效期为24h，请注意在失效前及时刷新。
 #### 常见应用场景授权项
如需使用[表4]中的场景，即需与其他服务协同工作，应先[创建函数委托]，并[配置函数委托]。
创建委托时，授予的权限类型应根据实际业务需要进行调整，**生产环境中建议调整为细粒度最小使用权限**，以确保业务运行所需的同时，有效降低权限过大的潜在风险。
 表4常见授权项选择 
| 场景                 | 策略名称                                                                 | 策略说明                                                                                                                                                                                                                                   | 细粒度最小使用权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| 使用自定义镜像            | SWR Admin                                                            | 容器镜像服务（SWR）管理员，拥有该服务下的所有权限。 创建自定义镜像请参见[使用容器镜像创建函数](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1047.html)。                                                         | 暂不支持                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 挂载SFS文件系统（仅存量用户支持） | SFS Administrator                                                    | 弹性文件服务（SFS）管理员，拥有该服务下的所有权限。 挂载SFS文件系统请参见[挂载SFS容量型文件系统（仅存量用户支持）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0402.html#functiongraph_01_0402__section955610267429)。 | 暂不支持                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 挂载SFS Turbo文件系统    | SFS Turbo ReadOnlyAccess                                             | 弹性文件服务SFS Turbo的只读权限。 挂载sfs turbo文件系统请参见[挂载SFS Turbo文件系统](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0402.html#functiongraph_01_0402__section457221344513)。     | - sfsturbo:shares:getShare（查询单个文件系统详情）  - sfsturbo:shares:showFsDir（查询目录是否存在）                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 挂载ECS共享目录          | ECS ReadOnlyAccess                                                   | 弹性云服务器（ECS）的只读访问权限。 挂载ECS共享目录请参见[挂载ECS共享目录](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0402.html#functiongraph_01_0402__section11158112711472)。                 | ecs:cloudServers:get（查询云服务器详情）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 配置预留实例策略           | AOM ReadOnlyAccess                                                   | 应用运维管理服务（AOM）的只读权限。                                                                                                                                                                                                                    | - aom:metric:get（查询指标详情）  - aom:metric:list（查询指标列表详情）                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 配置预留实例策略           | FunctionGraph ReadOnlyAccess                                         | 函数工作流服务（FunctionGraph）的只读权限。                                                                                                                                                                                                           | functiongraph:function:getConfig（查询函数配置）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 使用DIS触发器           | DIS Administrator                                                    | 数据接入服务（DIS）管理员，拥有该服务下的所有权限。 创建DIS触发器请参见[使用数据接入服务（DIS）触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0206.html)。                                                   | 暂不支持                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 使用分布式消息触发器         | DMS ReadOnlyAccess                                                   | 分布式消息服务（DMS）的只读权限。                                                                                                                                                                                                                     | dms:instance:get（查看实例详情）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 配置跨域VPC访问          | VPC Administrator                                                    | 虚拟私有云VPC管理员， 拥有对VPC内所有资源执行任意操作的权限。 配置跨域VPC访问请参见[函数访问VPC内资源](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0222.html#functiongraph_01_0222__section923421213196)。 | - vpc:ports:get（查询端口）  - vpc:ports:create（创建端口）  - vpc:vpcs:get（查询VPC）  - vpc:subnets:get（查询子网）  - vpc:vips:delete（虚IP解绑VM）  - vpc:securityGroups:get（查询安全组列表或详情）   |
| 开启异步通知             | 目标服务为OBS时： OBS Administrator | 对象存储服务（OBS）管理员，拥有该服务下的所有权限。 配置异步通知请参见[配置函数的异步调用策略](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0390_03.html)。                                                    | - obs:bucket:HeadBucket（获取桶元数据）  - obs:bucket:CreateBucket（创建桶）  - obs:object:PutObject（PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段）                                                                                                                                                                                                                                                                                    |
| 开启异步通知             | 目标服务为SMN时： SMN Administrator | 消息通知服务（SMN）管理员，拥有该服务下的所有权限。 配置异步通知请参见[配置函数的异步调用策略](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0390_03.html)。                                                     | - smn:topic:publish（发布消息）  - smn:topic:list（查询主题列表）                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 开启异步通知             | 目标服务为DIS时： DIS Administrator  | 数据接入服务（DIS）管理员，拥有该服务下的所有权限。 配置异步通知请参见[配置函数的异步调用策略](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0390_03.html)。                                                    | 暂不支持                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 使用OBS桶             | OBS Administrator                                                    | 对象存储服务（OBS）管理员，拥有该服务下的所有权限。                                                                                                                                                                                                            | - obs:bucket:GetBucketLocation（获取桶区域位置）  - obs:bucket:ListAllMyBuckets（获取桶列表）  - obs:bucket:GetBucketNotification（获取桶的消息通知配置）  - obs:bucket:PutBucketNotification（设置桶的消息通知配置）                                                                                                                                                         |
   
