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

前提条件

创建服务

示例场景

在函数运行的过程中,函数计算需要访问其他云资源,例如将函数日志写入到您指定的日志服务内、拉取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. 角色快捷创建页面,填写角色名称角色描述,然后单击同意授权,页面跳转至函数计算控制台的配置服务页面。hanshujsiuanshouqaanguanli
      3. 给新角色授予权限策略。
        • 添加新策略
          1. 登录RAM控制台
          2. 创建新策略。
            1. 在左侧导航栏,单击权限策略管理
            2. 权限策略管理页面,单击创建权限策略
            3. 新建自定义权限策略页面,设置相关参数。详细操作,请参见权限策略及示例
              参数说明如下:
              • 策略名称:自定义策略名称。
              • 配置模式:请选择脚本配置,本文示例中的策略内容如下所示:
                {
                    "Statement": [
                        {
                            "Action": "oss:*",
                            "Effect": "Allow",
                            "Resource": "*"
                        }
                    ],
                    "Version": "1"
                }
            4. 单击确定
          3. 在左侧导航栏,单击RAM角色管理
          4. RAM角色管理页面的输入角色名称或备注文本框内,输入目标角色的角色名称或备注。
          5. 单击目标RAM角色名称或目标RAM角色操作列下的添加权限
          6. 权限管理页签,单击添加权限
          7. 添加权限面板,单击自定义权限,在请输入权限策略名称进行模糊搜索文本框内输入目标策略的名称。
          8. 单击目标策略的名称后,单击确定然后单击完成
        • 添加已有策略
          1. 权限配置区域,单击+添加新策略
          2. 添加策略对话框的请选择系统模版的下拉列表中选择目标策略例如AliyunOSSFullAccess,然后单击RAM配置授权,页面跳转至角色快捷创建页面。
          3. 角色快捷创建页面,单击同意授权
          4. 单击提交
    • 使用已有角色
      1. 权限配置区域的选择角色下拉框中选择需要授权的角色。imagefueupeizhi.png
      2. 确认该角色内是否具有管理对象存储服务的权限。
        • 若已存在,请单击提交
        • 若不存在,您需要添加该策略,具体步骤如下:
          1. 策略详情区域,单击+添加新策略
          2. 添加策略对话框中的请选择系统模板列表中,选择目标策略例如AliyunOSSFullAccess
          3. 单击RAM配置授权
          4. 角色快捷创建页面,单击同意授权
          5. 页面跳转至函数计算的配置服务页面,然后单击提交
          说明 如果您添加的策略不具有管理对象存储服务的权限,您需要给该角色添加此权限。详细操作,请参见添加新策略