为了提升用户体验和安全性,PAI已全面对接阿里云的RAM权限系统。所有PAI资源的操作均可通过RAM进行鉴权,并支持基于RAM的工作空间可见性/资源创建者属性,以及IP地址访问属性进行管理。所有接入工作空间的PAI子产品资源操作,均通过工作空间接口代理至RAM进行鉴权。
简介
RAM权限策略(Policy)中包含一个基本元素“条件(Condition)”,用于表示授权生效的限制条件。通过在Policy中设置Condition,用户可以进一步缩小授权范围,从而实现细粒度的权限管控。在PAI中,Condition支持的键值对(key-value)如下:
key | value |
pai:Accessibility | 资源的可见性,取值:
|
pai:EntityAccessType | 资源的创建者属性,取值:
|
acs:SourceIp | 请求来源的IP地址列表。 |
设置可见性和创建者属性
在PAI-工作空间中,您也可以通过给RAM角色授予可见性属性(pai:Accessibility)和创建者属性(pai:EntityAccessType)的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示例
工作空间其他角色Policy中的Condition字段与上述工作空间算法开发角色类似,只是Action
不同,不再详述。
设置IP地址访问属性
对于PAI-工作空间/EAS/DSW/DLC/Designer/AI资产模块的资源,您可以通过给RAM角色授予IP地址访问属性(acs:SourceIp)的Policy,从而对资源访问者的IP地址实现访问控制。关于Policy详情,请参见权限策略基本元素。Policy示例如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": [
"acs:eas:*:*:*",
"acs:pai*:*:*:*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"192.0.2.100",
"203.0.113.200"
]
}
}
}
]
}
关键说明:
Statement
中Resource
字段使用标准格式定义RAM资源:acs:<子产品ram-code>:<region>:<account-id>:workspace/<⼯作空间ID>/<产品资源名复数格式>/<产品资源ID>
。示例中,
Effect
为Deny
,条件类型Condition
为IpAddress
,表示当请求来源的IP地址为192.0.2.100
或203.0.113.200
时,访问eas
和pai*
相关资源的请求将被拒绝。
RAM鉴权逻辑
以下是关于RAM鉴权逻辑的详细说明,以设置可见性属性(pai:Accessibility)和创建者属性(pai:EntityAccessType)为例:
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对该属性不做检查。