云产品依赖和授权:AI计算资源组

如果您希望对PAIAI计算资源进行更细颗粒度的授权和管理,您可以创建自定义授权策略,授予RAM用户(即子账号)创建、更新、删除或扩缩容等权限。

背景信息

RAM权限主要针对云原生资源类别(包括通用计算资源和灵骏智算资源)中的资源池管理,以及资源配额管理生效。

资源池

资源池负责AI计算资源的购买和管理,其中,资源池列表中的每一项为专有资源组,即ResourceGroup。

更多详情,请参见资源池功能介绍

资源配额

资源配额从资源池中划分AI计算资源,并可以关联到PAI工作空间,在PAI工作空间内的用户就可以使用这个资源配额进行AI的训练、开发及在线服务等功能,更多详情,请参见资源配额(Quota)功能介绍

如下图所示,资源配额可以是一个树形结构,其中,从资源池中划分资源创建出来的资源配额称为根资源配额(根Quota),以根资源配额为父节点,可以继续划分多级子资源配额(子Quota)。

image

如下资源配额接口已接入RAM权限管理,您可以通过自定义的权限策略,对AI计算资源进行细粒度的权限管理。

接口名称

接口描述

CreateQuota

创建资源配额(支持创建根资源配额以及创建子级资源配额)

ScaleQuota

扩缩容资源配额(支持扩缩容根资源配额以及扩缩容子级资源配额)

GetQuota

获取资源配额详情(如标签、描述、VPC信息等)

ListQuotas

获取资源配额列表

UpdateQuota

更新资源配额(如更新标签、描述、VPC信息等)

DeleteQuota

删除资源配额

操作步骤

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

  2. 创建自定义权限策略。具体操作,请参见通过脚本编辑模式创建自定义权限策略

    自定义权限策略的具体内容,请参见下文自定义授权策略示例

  3. RAM用户授权已创建的自定义权限策略。具体操作,请参见RAM用户授权

自定义授权策略示例

授权管理资源池

授权管理资源池的用户具有以下权限:查看创建更新和删除专有资源组。

资源池负责资源的购买和管理,如果某个RAM用户要操作资源池相关的资源,需要对该RAM用户授予以下权限策略。

说明

在控制台创建专有资源组时,需要配置专有网络,因此除了授予RAM用户管理资源池的权限,也需要授予VPC相关权限。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "pai:*ResourceGroup*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "vpc:DescribeVpcs",
        "vpc:DescribeVSwitches",
        "ecs:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}

授权创建/扩缩容/删除根Quota

Quota的资源来源于资源池(可来源于一个或多个资源组),因此RAM用户如果要对根Quota进行创建、更新、扩缩容或删除的操作,需要同时拥有资源池和Quota两种权限策略。

如下示例权限策略中,定义了resourcegroup1resourcegroup2resourcegroup3这三个资源池的Get、List、Update三个权限点,表示被授权的RAM用户只能从这三个资源池上划分资源来创建根Quota。

"acs:pai:*:*:quota/*"表示被授权这个权限策略的用户可以操作所有的资源配额树,但资源的来源仅限于资源池中的resourcegroup1resourcegroup2resourcegroup3三个专有资源组。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "pai:GetResourceGroup",
        "pai:ListResourceGroups",
        "pai:UpdateResourceGroup"
      ],
      "Resource": [
        "acs:pai:*:*:resourcegroup/resourcegroup1",
        "acs:pai:*:*:resourcegroup/resourcegroup2",
        "acs:pai:*:*:resourcegroup/resourcegroup3"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "pai:CreateQuota",
        "pai:UpdateQuota",
        "pai:ScaleQuota",
        "pai:DeleteQuota",
        "pai:GetQuota",
        "pai:ListQuotas"
      ],
      "Resource": [
        "acs:pai:*:*:quota/*"
      ]
    }
  ]
}

授权管理根Quota(quota1为例

和创建/扩缩容/删除根资源配额需要同时拥有资源池相关的权限不同,管理根资源配额可以不需要资源池相关的权限,授权管理quota1的用户具有以下权限:

  • 查看quota1

  • 更新quota1元数据(如Quota标签、描述等)

  • 管理以quota1为根的资源配额树(如创建、更新、扩缩、删除子quota)

管理quota1权限策略中定义了两个Statement,其中第一个表示对以quota1为根的资源配额树的操作权限,第二个表示对quota1本身的操作权限。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "pai:CreateQuota",
        "pai:UpdateQuota",
        "pai:ScaleQuota",
        "pai:DeleteQuota",
        "pai:GetQuota",
        "pai:ListQuotas"
      ],
      "Resource": [
        "acs:pai:*:*:quota/quota1/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "pai:UpdateQuota",
        "pai:GetQuota",
        "pai:ListQuotas"
      ],
      "Resource": [
        "acs:pai:*:*:quota/quota1"
      ]
    }
  ]
}

授权管理某一级子Quota(以quota1.2为例)

授权管理Quota1.2的用户具有以下权限:

  • 查看quota1.2

  • 更新quota1.2元数据(如Quota标签、描述等)

  • 管理以quota1.2为根的资源配额子树(如创建、更新、扩缩、删除子quota)

管理quota1.2的权限策略中定义了两个Statement,其中第一个表示对以quota1.2为根的资源配额树的操作权限,第二个表示对quota1.2本身的操作权限。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "pai:CreateQuota",
        "pai:UpdateQuota",
        "pai:ScaleQuota",
        "pai:DeleteQuota",
        "pai:GetQuota",
        "pai:ListQuotas"
      ],
      "Resource": [
        "acs:pai:*:*:quota/*/quota1.2/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "pai:UpdateQuota",
        "pai:GetQuota",
        "pai:ListQuotas"
      ],
      "Resource": [
        "acs:pai:*:*:quota/*/quota1.2"
      ]
    }
  ]
}

授权VPC相关权限

在乌兰察布灵骏的场景下,在控制台创建Quota、新增子级Quota时可设置VPC,因此上文的Quota相关权限策略中也需要增加如下VPC权限。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "vpc:DescribeVpcs",
        "vpc:DescribeVSwitches",
        "ecs:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}