函数计算支持将相同作用的服务资源通过标签(Tag)归类,便于搜索和资源聚合。您还可以通过标签功能将服务进行分组,可以实现不同角色对不同分组的服务拥有不同的操作权限。本文介绍标签功能的使用说明、使用限制以及如何在函数计算控制台操作标签等。

使用说明

  • 标签与服务资源是多对多的关系。
  • 每个标签都由一对键值对(Key:Value)组成。
  • 标签可以是授权的一个条件,为一个确定范围内的资源做精细粒度授权。
  • 服务下的资源,版本、别名、函数和触发器均继承服务的标签。
    • 只要API的调用上填写了服务,都支持标签鉴权。
    • 不同版本的服务都是相同的标签meta,即标签修改影响的标签鉴权针对的是所有版本和别名的服务。

使用限制

  • 键(Key)的最大长度:64个Unicode字符,区分大小写。
  • 值(Value)的最大长度:128个Unicode字符,区分大小写。
  • 同一个资源上的同一个键只能有一个标签。如果您尝试添加的标签的键与现有的标签的键相同,现有标签值会更新为新值。
  • 每个资源的最大标签数:20。
  • 键(Key)不支持aliyunacs:开头,不允许包含http://https://,不允许为空字符串。
  • 值(Value)不允许包含http://https://,不允许为空字符串。
  • 每个地域中的标签信息不互通。例如在华东1(杭州)地域创建的标签在华东2(上海)地域不可见。

新建标签

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击服务及函数
  3. 在顶部菜单栏,选择地域。
  4. 服务列表页面,单击目标服务。
  5. 在左侧导航栏,单击服务详情
  6. 基础信息区域,将鼠标移至标签后的标签图标上,然后在弹出的对话框单击+添加
    add-tag
  7. 在编辑服务标签面板,填写标签键标签值,然后单击确定
    重复操作该步骤,可填写多个键值对,为目标服务添加多个标签。key-value
    完成新建标签后,将鼠标再次移至服务详情页面的标签图标上,您可以看到刚才新建的标签。tag-result

更新标签

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击服务及函数
  3. 在顶部菜单栏,选择地域。
  4. 服务列表页面,单击目标服务。
  5. 在左侧导航栏,单击服务详情
  6. 基础信息区域,将鼠标移至标签后的标签图标上,然后在弹出的对话框单击编辑
    edit-tag
  7. 在编辑服务标签面板,填写新的标签键标签值或修改已有标签键标签值,然后单击确定
    add-new-tag

删除标签

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击服务及函数
  3. 在顶部菜单栏,选择地域。
  4. 服务列表页面,单击目标服务。
  5. 在左侧导航栏,单击服务详情
  6. 基础信息区域,将鼠标移至标签后的标签图标上,然后在弹出的对话框单击编辑
    delete-tag
  7. 在编辑服务标签面板,找到目标标签键标签值所在行,单击其右侧的删除图标delete,然后单击确定

使用标签对服务分组授权

假设您创建了10个函数计算的服务,需要将5个服务授权给dev团队,另外5个服务授权给ops团队。您希望每个团队只能查看被授权的服务,未被授权的服务则不允许查看。此时,您可以通过标签功能将各团队进行分组,然后给不同分组的团队授予不同的权限。您需给其中5个服务添加一对标签,标签键是team,标签值是dev;另外5个服务添加另一对标签,标签键是team,标签值是ops

  1. 将5个授权给dev团队的服务打上team:dev标签,5个授权给ops团队的服务打上team:ops标签。详细操作,请参见新建标签
  2. 创建RAM用户
  3. 创建用户组
    创建dev和ops两个用户组。
  4. 为用户组添加RAM用户
    将不同的RAM用户添加到相应的用户组下。
  5. 为两个用户组授予不同的权限。
    权限策略分为系统权限策略和自定义权限策略,根据实际场景选择合适的权限策略:
    • 为用户组授予系统权限策略。

      详细操作,请参见为用户组授权

    • 为用户组授予自定义权限策略。
      1. 创建自定义权限策略
        假设给dev团队创建的自定义策略名称为policyForDevTeam,策略示例如下。
        {
            "Statement": [
                {
                    "Action": "fc:*",
                    "Effect": "Allow",
                    "Resource": "*",
                    "Condition": {
                        "StringEquals": {
                            "fc:tag/team": "dev"
                        }
                    }
                },
                {
                    "Action": "fc:ListServices",
                    "Effect": "Allow",
                    "Resource": "*"
                },
                {
                    "Action": "fc:GetResourceTags",
                    "Effect": "Allow",
                    "Resource": "*"
                }
            ],
            "Version": "1"
        }         
        假设给ops团队创建的自定义策略名称为policyForOpsTeam,策略示例如下。
        {
            "Statement": [
                {
                    "Action": "fc:*",
                    "Effect": "Allow",
                    "Resource": "*",
                    "Condition": {
                        "StringEquals": {
                            "fc:tag/team": "ops"
                        }
                    }
                },
                {
                    "Action": "fc:ListServices",
                    "Effect": "Allow",
                    "Resource": "*"
                },
                {
                    "Action": "fc:GetResourceTags",
                    "Effect": "Allow",
                    "Resource": "*"
                }
            ],
            "Version": "1"
        }          
      2. 为用户组授权

        选择权限时请选择刚创建好的自定义策略。

    完成授权后,处于dev用户组的RAM账号只能操作标签为team:dev的服务,处于ops用户组的RAM账号只能操作标签为team:ops的服务。