当函数计算需访问阿里云其他云服务时例如对象存储OSS、日志服务SLS或表格存储等,您需给函数计算授予相应权限。该权限是服务级别的,当服务被授予某权限后该服务下所有函数都将具有此权限。本文以授予函数计算访问对象存储权限为例,介绍如何授予函数计算访问其他云服务的权限。

前提条件

创建服务

默认服务角色

在函数运行的过程中,函数计算需要访问其他云资源,例如将函数日志写入到您指定的日志服务内、拉取ACR镜像或打通VPC网络访问等。为了简化您的授权操作,函数计算为您提供了一个系统默认的服务角色即AliyunFCDefaultRole。该角色内包含了函数计算需要访问的部分云资源权限,关于如何绑定该角色的操作步骤,请参见开通服务。该角色的授权内容如下所示:
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "vpc:DescribeVSwitchAttributes"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ecs:CreateNetworkInterface",
        "ecs:DeleteNetworkInterface",
        "ecs:DescribeNetworkInterfaces",
        "ecs:CreateNetworkInterfacePermission",
        "ecs:DescribeNetworkInterfacePermissions",
        "ecs:DeleteNetworkInterfacePermission"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "log:PostLogStoreLogs"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "cr:GetRepository",
        "cr:GetRepositoryTag",
        "cr:GetAuthorizationToken",
        "cr:PullRepository"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "fc:InvokeFunction",
        "mns:SendMessage",
        "mns:PublishMessage",
        "eventbridge:PutEvents",
        "mq:PUB",
        "mq:OnsInstanceBaseInfo"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

由于AliyunFCDefaultRole角色包含的权限是粗粒度的,如果需要更细粒度的权限,您也可以为服务授予其他角色及相关权限策略。

例如您想让函数计算某服务内的所有函数都具有管理对象存储服务的权限,但AliyunFCDefaultRole角色内没有该权限。您需在配置服务权限时,为该服务绑定一个角色,然后将管理对象存储服务的权限策略绑定到该角色上。成功绑定后,该服务内的所有函数都将具有管理对象存储服务的权限了。详细操作,请参见操作步骤
注意 由于AliyunFCDefaultRole是所有服务级别的角色,如果您在添加默认角色的基础上还想添加其他权限策略,建议新增一个角色,然后给该角色添加相关权限,请勿在默认角色AliyunFCDefaultRole上添加其他权限策略。

操作步骤

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击服务及函数
  3. 在顶部菜单栏,选择地域。
  4. 服务列表页面,找到目标服务。在其操作列,单击配置
  5. 在编辑目标服务页面的角色配置区域,配置相关参数。
    • 使用新角色
      1. 单击创建新的服务角色,页面跳转至角色页面。create-role
      2. 角色页面,单击创建角色
      3. 创建角色面板,选择可信实体类型为阿里云服务,然后单击下一步
      4. 选择角色类型为普通服务角色
      5. 配置角色名称备注
      6. 选择受信服务下拉列表中,选择目标授信服务,本示例选择函数计算,然后单击完成
      7. 单击关闭
      8. 给新角色授予权限策略。
        • 添加新策略
          1. 登录RAM控制台
          2. 创建新策略。
            1. 在左侧导航栏,选择权限管理 > 权限策略
            2. 权限策略页面,单击创建权限策略
            3. 新建自定义权限策略页面,设置相关参数。详细操作,请参见权限策略及示例
              参数说明如下:
              • 策略名称:自定义策略名称。
              • 配置模式:请选择脚本配置,本文示例中的策略内容如下所示:
                {
                    "Statement": [
                        {
                            "Action": "oss:*",
                            "Effect": "Allow",
                            "Resource": "*"
                        }
                    ],
                    "Version": "1"
                }
            4. 单击确定
          3. 在左侧导航栏,选择身份管理 > 角色
          4. 角色页面的输入角色名称或备注文本框内,输入目标角色的角色名称或备注。
          5. 单击目标RAM角色名称或目标RAM角色操作列下的添加权限
          6. 权限管理页签,单击添加权限
          7. 添加权限面板,单击自定义策略,在请输入权限策略名称进行模糊搜索文本框内输入目标策略的名称进行搜索。
          8. 单击目标策略的名称,在已选择卡片内出现目标策略,单击确定,然后单击完成
          9. 重新回到函数计算控制台目标服务的配置页面,在角色配置区域的服务角色下拉列表内选择目标角色,然后单击保存
        • 添加已有策略
          1. 登录RAM控制台
          2. 在左侧导航栏,选择身份管理 > 角色
          3. 角色页面的输入角色名称或备注文本框内,输入目标角色的角色名称或备注。
          4. 单击目标RAM角色名称或目标RAM角色操作列下的添加权限
          5. 添加权限面板,单击系统策略自定义策略,在请输入权限策略名称进行模糊搜索文本框内输出目标策略名称进行搜索。
          6. 单击目标策略的名称例如AliyunOSSFullAccess,在已选择卡片内出现目标策略,单击确定,然后单击完成
          7. 重新回到函数计算控制台目标服务的配置页面,在角色配置区域的服务角色下拉列表内选择目标角色,然后单击保存
    • 使用已有角色
      1. 权限配置区域的服务角色下拉框中选择需要授权的角色。imagefueupeizhi.png
      2. 确认该角色内是否具有管理对象存储服务的权限。
        • 若已存在,请单击保存
        • 若不存在,您需要添加目标策略,具体步骤如下:
          1. 角色配置区域,单击编辑策略
          2. 页面跳转至RAM访问控制台内需授权的角色页面。
          3. 在需授权的角色页面,单击添加权限
          4. 添加权限面板中的选择权限区域中,选择目标策略例如AliyunOSSFullAccess,然后单击确定
          5. 单击完成,即成功给需授权的角色添加目标策略。
          6. 重新回到函数计算控制台目标服务的配置页面,在角色配置区域的服务角色下拉列表内选择目标角色,然后单击保存
          说明 如果您添加的策略不具有管理对象存储服务的权限,您需要给该角色添加此权限。详细操作,请参见添加新策略