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