為了提升用戶體驗和安全性,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對該屬性不做檢查。