基于RAM的Condition属性设置资源的访问权限

为了提升用户体验和安全性,PAI-⼯作空间已全面对接阿里云的RAM权限系统。所有PAI资源的操作均可通过RAM进行鉴权,并支持基于RAM的可见性和创建者属性管理。所有接入工作空间的PAI子产品资源操作,均通过工作空间接口代理至RAM进行鉴权。

简介

RAM权限策略(Policy)中包含一个基本元素“条件(Condition)”,用于表示授权生效的限制条件。通过在Policy中设置Condition,用户可以进一步缩小授权范围,从而实现细粒度的权限管控。在PAI-工作空间中,Condition支持的键值对(key-value)如下:

key

value

pai:Accessibility

资源的可见性,取值:

  • PUBLIC:表示资源在工作空间内公开可见。

  • PRIVATE:表示资源私有。

pai:EntityAccessType

资源的创建者属性,取值:

  • CREATOR:表示资源的创建者是当前鉴权用户。

  • OTHERS:表示资源的创建者为其他用户,非当前鉴权用户。

PAI-工作空间角色授权

PAI-工作空间中,您也可以通过给RAM角色授予相关的Policy,从而实现资源的访问授权。关于Policy详情,请参见权限策略基本元素

工作空间算法开发角色Policy示例

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "pai:*"
      ],
      "Resource": "acs:paidsw:*:*:*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "pai:Accessibility": "PRIVATE",
          "pai:EntityAccessType": "CREATOR"
        }
      }
    },
    {
      "Action": [
        "pai:*"
      ],
      "Resource": "acs:paidsw:*:*:*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "pai:Accessibility": "PUBLIC"
        }
      }
    }
  ]
}

关键说明:

  • StatementResource字段使用标准格式定义RAM资源:acs:<子产品ram-code>:<region>:<account-id>:workspace/<⼯作空间ID>/<产品资源名复数格式>/<产品资源ID>

  • Statement包含两部分:

    • 第一部分描述了该Policy有权限操作私有且创建者为当前鉴权用户的资源。

    • 第二部分描述了该Policy有权限操作公开的资源(创建者可以为任意用户)

工作空间管理员角色Policy示例

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "pai:*"
      ],
      "Resource": "acs:paidsw:*:*:*",
      "Effect": "Allow"
    }
  ]
}

关键说明:

示例中Statement只包含一部分,表示该Policy有权限操作所有的资源(可见性以及创建者属性可以为任意值)。

工作空间其他角色

工作空间其他角色Policy中的Condition字段与上述工作空间算法开发角色类似,只是Action不同,不再详述。

RAM鉴权逻辑

  1. RAM用户被授予与工作空间角色相对应的RAM Policy。这些策略中包含两个Condition属性(pai:Accessibilitypai:EntityAccessType),用户只有在满足Condition时,才能获得API对象的访问权限。

  2. RAM用户尝试访问API对象时,PAI服务将调用RAM接口进行鉴权,并在鉴权过程中设置两个Condition属性值。

  3. RAM服务进行鉴权时,要求RAM用户不仅具备访问API对象的权限,还需确保调用鉴权接口时传入的两个Condition属性与用户被授权策略中的Condition属性相匹配。如果用户被授权策略中的Condition属性不包括pai:Accessibilitypai:EntityAccessType,则RAM对该属性不做检查。

相关文档