本文檔描述PDS的許可權管理功能,您可以通過PDS提供的預設用戶端使用許可權管理功能,也可以參考該文檔調用API實現許可權管理功能。
基本概念
示意圖
使用者樹是指使用者和團隊之間的關係構建出來的樹狀結構,有上下層級的關係(一個使用者可以作為多個團隊的成員,一個團隊只能作為一個團隊的成員)。
檔案樹是指檔案和檔案夾之間的關係構建出來的樹狀結構,有上下層級的關係(如上圖樣本)。
檔案授權是指將一個檔案夾作為資源授權給一個使用者或者團隊。當前只能對檔案夾授權,不支援檔案授權。
所有檔案授權都是通過角色的方式賦予操作許可權,系統預設提供了一些常用角色(如下圖)。
每個角色都有一個許可權列表,許可權列表描述了當前角色的操作許可權。
團隊許可權繼承是指給團隊授權的許可權,子孫團隊下的使用者是否能繼承這些許可權。 比如“研發部雲端硬碟”授權給“研發部”團隊,如果不開啟繼承,則只有“使用者4”作為“研發部”的直接成員可以使用這條許可權,“使用者2”和“使用者3”就無法使用這條許可權。
檔案許可權繼承是指如果檔案樹上的一個檔案夾被授權,檔案夾下所有子孫檔案或檔案夾都會繼承此許可權。
許可權覆蓋是指當一個使用者對一個資源有多條可用許可權時,許可權之間會相互覆蓋。 比如上圖的兩條授權,使“使用者4”對於“專案資料”檔案夾同時擁有“預覽者”和“編輯者”許可權。“預覽者”許可權來自於父團隊的授權,"編輯者"許可權來自於給自己的授權。當多條許可權同時作用於使用者時,離使用者近的許可權會覆蓋掉離使用者遠的許可權,所以當“使用者4”訪問“專案資料”檔案夾時,使用“編輯者”許可權。這裡有一種特殊情況,由於使用者可以作為多個團隊的成員,當使用者歸屬的多個團隊被授予不同許可權時,會將多條許可權取並集作為使用者存取權限。
系統預設角色的許可權列表:
API調用及樣本
1. 將檔案夾共用授權給使用者或團隊
FileAddPermission - 檔案分享權限設定授權給使用者或組
共用授權分兩種情況,一種是個人空間的檔案分享權限設定,另一種是團隊空間的檔案授權。
個人空間的共用是將檔案夾直接作為最上層資料夾共用,不保留檔案夾在空間中的路徑,收到共用的使用者看到的是被共用的資料夾清單。
團隊空間的授權是將檔案夾授予對應許可權並且逐級向上將所有父資料夾都設定為可見許可權, 收到授權的使用者看到的是有許可權的空間列表,保留了每個授權檔案夾的完整路徑結構,更方便團隊內部協作。如果想直接授權整個團隊空間,file_id欄位可以直接填root。
共用時可以選擇被共用者以何種角色訪問資源,共有12種系統預定義角色可供選擇,參見資料結構FilePermissionMember中關於role_id欄位的描述。
共用時支援大量設定,member_list欄位是一個列表,其中每一項都是一個獨立的許可權配置請求。一次性為多個使用者/團隊授權只需在member_list中新增項即可。
每個空間內的授權記錄建議不超過5000條,每個檔案夾的授權記錄建議不超過500條,推薦使用團隊授權來減少個人使用者的相同授權記錄。如果您有情境超出以上規格,請聯絡我們。
請求樣本
{
"drive_id": "1",
"file_id": "63fad1c32fe8717da94e4b93b83fb248855f7fd6",
"member_list": [{
"identity": {
"identity_type": "IT_User",
"identity_id": "39df109b4f4f428db75898bbb0644fa5"
},
"expire_time": 1677599999999,
"role_id": "SystemFileViewer"
}]
}
響應樣本
204 NoContent
2. 取消檔案夾的共用授權
FileRemovePermission - 取消檔案分享權限設定授權
通過member_list參數支援批量不共用授權。
請求樣本
{
"drive_id": "1",
"file_id": "63fad1c32fe8717da94e4b93b83fb248855f7fd6",
"member_list": [{
"identity": {
"identity_type": "IT_User",
"identity_id": "39df109b4f4f428db75898bbb0644fa5"
},
"role_id": "SystemFileViewer"
}]
}
響應樣本
204 NoContent
3. 列舉檔案夾的共用授權記錄
FileListPermission - 列舉檔案的共用或授權記錄
列舉檔案夾上已有的共用授權列表。
請求樣本
{
"drive_id": "1",
"file_id": "63fad1c32fe8717da94e4b93b83fb248855f7fd6"
}
響應樣本
[{
"identity": {
"identity_type": "IT_User",
"identity_id": "39df109b4f4f428db75898bbb0644fa5",
"identity_name": "測試使用者1"
},
"role_id": "SystemFileViewer",
"expire_time": 1677599999999,
"disinherit_sub_group": true
}]
4. 列舉收到的個人空間共用列表
請求樣本
{
"limit": 100,
"marker": ""
}
響應樣本
{
"items": [{
"drive_id": "1",
"domain_id": "bj3231",
"file_id": "63fad1c32fe8717da94e4b93b83fb248855f7fd6",
"name": "建立檔案夾",
"type": "folder",
"created_at": "2023-02-26T03:28:03.744Z",
"updated_at": "2023-02-26T03:28:03.747Z",
"hidden": false,
"starred": false,
"status": "available",
"parent_file_id": "root",
"encrypt_mode": "none",
"creator_type": "User",
"creator_id": "superadmin",
"creator_name": "superadmin",
"last_modifier_type": "User",
"last_modifier_id": "superadmin",
"last_modifier_name": "superadmin",
"action_list": ["FILE.LIST", "FILE.VISIBLE", "FILE.PREVIEW"]
}],
"next_marker": ""
}
5. 列舉有許可權訪問的團隊空間列表
ListMyGroupDrive - 收到的授權團隊空間列表
請求樣本
{
"limit": 100,
"marker": ""
}
響應樣本
{
"items": [{
"domain_id": "bj3231",
"drive_id": "1020",
"drive_name": "某公司",
"description": "",
"creator": "superadmin",
"owner": "929bf1cec48d4eb28a6cca0af29f1b8f",
"owner_type": "group",
"drive_type": "normal",
"status": "enabled",
"used_size": 0,
"total_size": -1,
"store_id": "e28815e2f4e9434c90a5209a6943a536",
"action_list": ["FILE.VISIBLE", "FILE.LIST"],
"created_at": "2023-02-26T03:28:40.875Z",
"updated_at": "2023-02-26T03:28:40.877Z",
"category": ""
}],
"next_marker": ""
}
6. 將使用者配置為團隊管理員
調用該介面進行許可權配置,配置的實體物件為目標user,配置的角色為團隊管理員,管理的資來源物件為目標團隊。
請求樣本
{
"role_id": "SystemGroupAdmin",
"identity": {
"identity_type": "IT_User",
"identity_id": "user2"
},
"is_sub_group_inheritable": true,
"manage_resource_type": "RT_Group",
"manage_resource_id": "9dcabccf59464b4f9a5693d972b8af58"
}
響應樣本
204 NoContent
7. 取消使用者的團隊管理員授權
調用該介面刪除已有的授權記錄,即需取消使用者的團隊管理員角色。
請求樣本
{
"role_id": "SystemGroupAdmin",
"identity": {
"identity_type": "IT_User",
"identity_id": "user2"
},
"is_sub_group_inheritable": false,
"manage_resource_type": "RT_Group",
"manage_resource_id": "9dcabccf59464b4f9a5693d972b8af58"
}
響應樣本
204 NoContent
8. 列舉團隊管理員
該介面的作用是根據指定的資源類型和ID,列舉所有管理它的對象。如根據團隊ID,擷取所有的團隊管理員授權記錄。
請求樣本
{
"manage_resource_type": "RT_Group",
"manage_resource_id": "105***b82",
"marker": "",
"limit": 100
}
響應樣本
{
"assignment_list": [
{
"domain_id": "hz1",
"identity": {
"identity_type": "IT_User",
"identity_id": "164***3dw"
},
"role_id": "SystemGroupAdmin",
"manage_resource_type": "RT_Group",
"manage_resource_id": "105***b82",
"creator": "216***c83",
"created_at": 1622682267564
},
{
"domain_id": "hz1",
"identity": {
"identity_type": "IT_User",
"identity_id": "39d***fa5"
},
"role_id": "SystemGroupAdmin",
"manage_resource_type": "RT_Group",
"manage_resource_id": "105***b82",
"creator": "216***c83",
"created_at": 1622682267564
}
],
"next_marker": "NWQ1Yjk4YmI1ZDRlYmU1Y2E0YWE0NmJhYWJmODBhNDQ2NzhlMTRhMg"
}