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