为了提升用户体验和安全性,PAI-⼯作空间已全面对接阿里云的RAM权限系统。所有PAI资源的操作均可通过RAM进行鉴权,并支持基于RAM的可见性和创建者属性管理。所有接入工作空间的PAI子产品资源操作,均通过工作空间接口代理至RAM进行鉴权。
简介
RAM权限策略(Policy)中包含一个基本元素“条件(Condition)”,用于表示授权生效的限制条件。通过在Policy中设置Condition,用户可以进一步缩小授权范围,从而实现细粒度的权限管控。在PAI-工作空间中,Condition支持的键值对(key-value)如下:
key | value |
pai:Accessibility | 资源的可见性,取值:
|
pai:EntityAccessType | 资源的创建者属性,取值:
|
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"
}
}
}
]
}
关键说明:
Statement
中Resource
字段使用标准格式定义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鉴权逻辑
RAM用户被授予与工作空间角色相对应的RAM Policy。这些策略中包含两个Condition属性(
pai:Accessibility
和pai:EntityAccessType
),用户只有在满足Condition时,才能获得API对象的访问权限。当RAM用户尝试访问API对象时,PAI服务将调用RAM接口进行鉴权,并在鉴权过程中设置两个Condition属性值。
在RAM服务进行鉴权时,要求RAM用户不仅具备访问API对象的权限,还需确保调用鉴权接口时传入的两个Condition属性与用户被授权策略中的Condition属性相匹配。如果用户被授权策略中的Condition属性不包括
pai:Accessibility
和pai:EntityAccessType
,则RAM对该属性不做检查。