附錄 12
附錄 A · 權限對照表
每一個權限鍵值、它打開哪個頁面,以及它讓哪些按鈕出現。
1. 權限鍵值怎麼寫
<資源>:<動作>| 動作 | 字母 | 意義 |
|---|---|---|
| 建立 | C | 建立新資料 |
| 檢視 | R | 檢視清單與詳細資料 |
| 修改 | U | 修改、啟用、停用 |
| 刪除 | D | 刪除資料 |
目錄中恰好有 42 個權限,涵蓋 12 種資源,而且集合是固定的——Merak 不會在執行期產生新的權限。其中十種資源具備完整的 C/R/U/D;permission 與 auditLog 是唯讀的,只存在 permission:R 與 auditLog:R(10 × 4 + 2 = 42)。
| 資源 | 鍵值 | 管轄範圍 |
|---|---|---|
| 使用者 | user | 主控台管理員帳號 |
| 成員 | member | 受管人員 |
| 裝置 | device | 註冊到成員名下的裝置 |
| 應用程式 | application | 已發布的服務 |
| 組織 | organization | 成員與應用程式的群組 |
| 角色 | role | 角色 |
| 權限 | permission | 權限目錄本身 |
| Token 申請 | tokenRequest | 審批 |
| 稽核日誌 | auditLog | 稽核日誌 與 連線日誌 |
| 租戶 | tenant | 租戶資訊 |
| 授權 | license | 授權與配額資訊 |
| Merak Node | merakNode | 邊緣路由節點 |
2. 頁面存取對照表
持有下列權限,選單項目才會出現、路由才打得開。沒有的話,選單項目會隱藏,而且 直接輸入網址也只會看到「無此頁面存取權限」。
| 頁面 | 路徑 | 需要的權限 |
|---|---|---|
| 儀表板 | / | 無 |
| 成員 | /member | member:R |
| 應用程式 | /application | application:R |
| 組織 | /organization | organization:R |
| Merak Node | /meraknode | merakNode:R |
| 審批 | /approve | tokenRequest:R |
| 稽核日誌 | /audit-log | auditLog:R |
| 連線日誌 | /connection-log | auditLog:R |
| 使用者(管理員) | /user | user:R |
| 角色 | /role | role:R |
| 個人資料 | /profile | 無 |
| 偏好設定 | /preference | 無 |
當一個 選單群組 底下的項目全部被隱藏時,該群組本身也會消失。
3. 各資源的操作對照表
3.1 成員
| 操作 | 權限 |
|---|---|
| 檢視清單與詳細資料 | member:R |
| 建立/複製/匯入 | member:C |
| 編輯 | member:U |
| 停用/取消停用/解鎖/啟用/寄送信件/重設 MFA | member:U |
| 刪除 | member:D |
跨功能相依:裝置區塊需要 device:R、組織區塊需要 organization:R、應用程式區塊需要 application:R、日誌頁籤需要 auditLog:R。少了其中一個,該區塊或頁籤會整個消失。
3.2 裝置
| 操作 | 權限 |
|---|---|
| 檢視裝置 | device:R |
| 改名/停用 | device:U |
| 刪除 | device:D |
3.3 應用程式
| 操作 | 權限 |
|---|---|
| 檢視清單與詳細資料 | application:R |
| 建立/複製/匯入 | application:C |
| 編輯、啟用、停用 | application:U |
| 刪除 | application:D |
| 編輯成員存取權 | application:U + member:R + member:U |
| 編輯組織存取權 | application:U + organization:R + organization:U |
| 顯示成員區塊 | member:R |
| 顯示組織區塊 | organization:R |
| 以組織篩選 | organization:R |
| 在拓撲圖新增成員節點 | member:R |
3.4 組織
| 操作 | 權限 |
|---|---|
| 檢視清單與詳細資料 | organization:R |
| 建立/複製/匯入 | organization:C |
| 編輯名稱與描述 | organization:U |
| 新增或移除成員/應用程式 | organization:U |
| 刪除 | organization:D |
| 顯示成員區塊與篩選條件 | member:R |
| 顯示應用程式區塊與篩選條件 | application:R |
3.5 Merak Node
| 操作 | 權限 |
|---|---|
| 檢視清單與詳細資料 | merakNode:R——管控頁面本身 |
| 建立 | merakNode:C——僅由後端執行檢查 |
| 改名、重新產生 JWT | merakNode:U——僅由後端執行檢查 |
| 刪除 | merakNode:D——僅由後端執行檢查 |
⚠️ Merak Node 是「沒有權限就沒有按鈕」這條原則的唯一例外。 主控台只以
merakNode:R管控 頁面;建立、改名、重新產生與刪除等控制項會顯示給所有能開啟頁面的人——它們 只依佈署狀態 過濾。merakNode:C/U/D這些鍵值確實存在,後端也確實會檢查,因此你沒有資格的動作會在送出時失敗,而不是事先被藏起來。在這一頁,看得到按鈕的意思是「你可以試」,不是「你可以做」。
3.6 審批
| 操作 | 權限 |
|---|---|
| 開啟頁面、檢視佇列 | tokenRequest:R |
| 核准或駁回(單筆或批次) | tokenRequest:U |
3.7 日誌
| 操作 | 權限 |
|---|---|
| 稽核日誌:檢視、篩選、匯出 | auditLog:R |
| 連線日誌:檢視、篩選、匯出 | auditLog:R |
| 成員或使用者的日誌頁籤 | auditLog:R |
3.8 使用者(主控台管理員)
| 操作 | 權限 |
|---|---|
| 檢視清單與詳細資料 | user:R |
| 建立/複製/匯入 | user:C |
| 編輯/停用/啟用/解鎖/重寄啟用信/重設 MFA | user:U |
| 刪除 | user:D |
| 編輯角色欄位 | user:U 與 role:U |
| 驗證角色選擇 | permission:R |
3.9 角色
| 操作 | 權限 |
|---|---|
| 檢視清單與詳細資料 | role:R |
| 建立/複製/匯入 | role:C |
| 編輯名稱與描述 | role:U |
| 刪除 | role:D |
| 新增或移除角色的權限 | role:U + permission:R |
3.10 個人資料與偏好設定
| 操作 | 權限 |
|---|---|
| 開啟兩個頁面 | 無 |
| 編輯自己的名稱、密碼、MFA | 無 |
| 檢視租戶資訊 | tenant:R——沒有時降級顯示 - |
| 檢視授權與配額 | license:R——沒有時降級顯示提示訊息 |
4. 全站適用的規則
4.1 沒有權限就沒有按鈕
你沒有權限的控制項是 根本不會被畫出來,而不是變灰。若你預期的按鈕不見了,先確認權限再開票。
唯一的例外是 Merak Node。 它的建立、改名、重新產生與刪除控制項在主控台不受權限過濾,只有頁面受管控,見 §3.5。
4.2 跨功能相依會讓整個區塊消失
當一個頁面需要另一種資源的資料時,少了那個資源的讀取權限,整張卡片、頁籤或篩選欄位都會被移除——Merak 不會給你一張空卡片,讓你誤以為「這裡沒東西」。同時它也不會再去跟伺服器要你無權讀取的資料。
4.3 授權需要兩側的權限
授權會寫入兩筆資料,因此兩側都需要權限:
| 授權關係 | 需要 |
|---|---|
| 應用程式 → 成員 | application:U + member:R + member:U |
| 應用程式 → 組織 | application:U + organization:R + organization:U |
| 使用者 → 角色 | user:U + role:U |
你無法完整編輯的欄位會變成 唯讀,而且以空值送出——它絕不會夾帶預先勾選的值繞過你的權限。
若某個選擇器純粹只是用來 尋找 來源(快速選取中的組織選項),則只需要該資源的 讀取 權限,因為不會寫入任何東西到它身上。
4.4 你永遠無法授出自己沒有的權限
這條規則在四個地方被執行——複製使用者、複製角色、手動指派角色,以及匯入角色。四者都 安全地失敗:若檢查無法完成,該授權一律拒絕,而不是在未驗證的情況下放行。見 08 · 管理員與角色 §11。
4.5 所有預設角色都帶有 tenant:R 與 license:R
這就是為什麼租戶名稱與配額通常都讀得到。完全沒有角色 的帳號仍可能被拒絕,而每一個讀取它們的畫面都會優雅降級,不會整頁失敗。
5. 系統帳號與系統角色
| 對象 | 保護方式 |
|---|---|
| 系統角色 | 不可編輯、不可刪除。可以 檢視與複製——複製只讀取來源,產生的是一個全新的一般角色。 |
| 系統帳號 | 在清單中以 系統 標籤標示。 |
角色的批次刪除會 事先 把系統角色排除在可執行集合之外,而不是讓它們一個一個去撞伺服器再失敗。