配置资源组

为了更高效地管理函数计算FC的资源,您可以使用资源组对资源进行分组管理。资源组使您能够根据部门、项目、环境等维度对资源进行分组,并结合访问控制RAM,在单个阿里云账号内实现资源的隔离和精细化权限管理。

应用场景

某企业的阿里云主账号创建了多个函数,需要按业务分组将不同的函数授权给不同的团队,企业希望每个团队只能查看和管理被授权的函数,未被授权的函数不允许查看和管理。

例如:

  • 开发团队:只能管理开发环境相关的函数

  • 运维团队:只能管理生产环境相关的函数

方案优势

使用资源组进行函数分组授权具有以下优势:

  • 简化权限管理:通过资源组统一管理多个函数的权限,避免逐个函数授权的复杂性。

  • 清晰的资源划分:资源组提供了直观的资源分组视图,便于管理和维护。

  • 灵活的权限控制:支持基于资源组的细粒度权限控制。

  • 安全隔离:不同团队只能访问各自被授权的资源组,实现资源隔离。

使用说明

  • 一个资源组可以包含不同地域的资源。

  • 创建资源时如果未传入资源组信息,该资源会被归至默认资源组中。

  • 函数的子资源,如别名、触发器、异步配置等会继承函数的权限控制规则。

  • RAM用户必须在控制台中选择正确的资源组,才能查看和管理对应的函数。

  • 确保RAM用户操作时选择的地域与资源组内函数所在地域一致。

操作步骤

以下将提供一个完整示例,演示如何为开发团队创建资源组并授权,使其只能查看和管理指定的函数。

步骤一:创建RAM用户和用户组

使用阿里云主账号完成以下操作:

  1. 登录RAM控制台创建RAM用户,如developer。

    具体操作,请参见创建RAM用户

  2. 创建RAM用户组,如developer,并将已创建的RAM用户添加到RAM用户组developer下。

    具体操作,请参见创建RAM用户组RAM用户组添加RAM用户

说明

RAM用户会继承其所属用户组的所有权限。

步骤二:创建资源组

登录资源组控制台,创建资源组,如dev。具体操作,请参见创建资源组

步骤三:将函数加入资源组

您可以在创建函数的同时,将其加入资源组,详见创建函数。如果是已有函数,参见以下步骤将函数接入目标资源组。

  1. 登录函数计算控制台,在左侧导航栏,选择函数管理 > 函数列表

  2. 在顶部菜单栏,选择地域,然后在函数列表页面,单击目标函数。

  3. 在函数详情页,选择配置页签,在下方找到高级配置 > 更多配置,然后单击资源组右侧的image图标。

  4. 在弹出的修改资源组对话框,选择资源组为步骤二创建的资源组,然后单击确认

您也可以通过资源管理-资源组控制台将函数加入资源组,详见管理资源组中的资源

步骤四:为RAM用户组绑定资源组

  1. 登录RAM控制台,在左侧导航栏,选择身份管理 > 用户组,单击目标用户组右侧操作列的添加权限

  2. 新增授权面板,资源范围选择资源组级别,,选择目标资源组,在权限策略区域,选择目标策略名称,如AliyunFCFullAccess,然后单击确认新增授权

    重要

    在实际业务环境中,建议您遵循最小化授权原则,通过创建自定义权限策略,按照最小授权原则授予RAM用户权限,避免权限过大带来的安全风险。更多信息,请参见创建自定义权限策略

    image

步骤五:结果验证

  1. RAM用户登录函数计算控制台,在左侧导航栏,选择函数管理 > 函数列表

    关于使用RAM用户登录控制台的操作步骤,请参见RAM用户登录阿里云控制台

  2. 在顶部菜单栏,选择与步骤三的函数相同的地域,然后选择目标资源组dev。

    仅当RAM用户选择了对应资源组后,才能看到资源组内的函数,否则,函数列表为空。

    image

  3. 在函数列表中,查看和管理已选择资源组内的函数。尝试切换到其他资源组,验证是否无法查看未授权的函数。

更多授权配置

创建自定义权限策略

为了遵循最小化授权原则以及满足日常使用函数计算所需的层功能、自定义域名等更细粒度的权限,建议通过创建自定义权限策略为RAM用户授权。

  1. 使用阿里云主账号登录RAM控制台创建自定义权限策略,如FCPolicyForDevelopers,策略内容如下。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "log:Get*",
            "log:List*",
            "log:Query*",
            "log:CreateProject",
            "log:CreateLogStore",
            "log:CreateIndex"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "fc:GetLayerVersionByArn",
            "fc:ListLayers",
            "fc:PutLayerACL",
            "fc:ListLayerVersions",
            "fc:CreateLayerVersion",
            "fc:DeleteLayerVersion",
            "fc:GetLayerVersion"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "fc:ListCustomDomains",
            "fc:GetCustomDomain",
            "fc:DeleteCustomDomain",
            "fc:UpdateCustomDomain",
            "fc:CreateCustomDomain"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": "ram:ListRoles",
          "Resource": "*"
        }
      ]
    }
    
  2. 为步骤一创建的RAM用户组developer,授予自定义权限策略FCPolicyForDevelopers。

    关于为用户组授权的具体操作,请参见RAM用户组授权

额外产品权限

如果您的函数需要使用其他阿里云产品,还需要添加对应产品的相关权限,例如管理日志服务SLS的系统策略AliyunLogFullAccess、管理对象存储的系统策略AliyunOSSFullAccess和管理文件存储NAS的系统策略AliyunNASFullAccess等。

更多信息,请参见权限策略及示例

相关文档