章節 管理員與角色

操作章節 08

管理員與角色

誰可以操作管理主控台,以及他到底能操作到什麼程度。

更新日期

頁面路徑選單權限
使用者/user管理員 › 使用者user:R
角色/role管理員 › 角色role:R

使用者與成員的差別。 使用者(User) 是主控台管理員,會登入這套系統;成員(Member) 是取用存取權的受管人員,從不登入主控台。兩者是不同的帳號類型,權限也各自獨立。這一章講的是使用者,成員請見 02 · 成員

這一章能幫你完成什麼

  • 身為系統管理員,我想建立主控台管理員帳號,讓同事可以一起維運這個平台。
  • 身為系統管理員,我想指派角色給管理員,讓他剛好拿到工作需要的存取範圍。
  • 身為系統管理員,我想用個別權限組出角色,讓最小權限能被具體表達。
  • 身為資安負責人,我希望任何人都無法授出自己沒有的權限,杜絕透過主控台提權。

第一部分——主控台管理員(使用者)

1. 使用者清單

1.1 欄位

欄位說明
名稱顯示名稱。系統帳號會帶有 系統 標籤。
電子信箱登入位址。
狀態啟用中/未啟用/待處理/已鎖定。
強制 MFA政策是否強制此帳號使用 MFA(開/關)。
已啟用 MFA帳號是否真的完成驗證器註冊(開/關)。
建立時間未知時顯示 -
更新時間未知時顯示 -
建立者未知時顯示 -
更新者未知時顯示 -
操作依狀態與權限過濾後的按鈕。

1.2 狀態

狀態標籤意義
ACTIVE啟用中正常帳號。
INACTIVE未啟用已被停用。
PENDING待處理已建立,等待啟用。
LOCKED已鎖定因異常行為被鎖定。

1.3 篩選

篩選條件型態說明
關鍵字文字對名稱與電子信箱做模糊比對。
電子信箱文字對電子信箱做模糊比對。
狀態核取方塊多選;都不勾 = 全部。

1.4 列的捷徑

雙擊某一列可開啟詳細頁。至少勾選一個核取方塊之後,單擊列身可切換選取狀態。

2. 管理員可用的操作

從清單列或詳細頁工具列可用的操作:

操作允許的狀態權限
詳細資料任何狀態user:R
複製任何狀態user:C
停用ACTIVEuser:U
啟用INACTIVEuser:U
解鎖LOCKEDuser:U
重寄啟用信PENDINGuser:U
重設 MFAACTIVE / LOCKEDuser:U
刪除INACTIVE / LOCKED / PENDINGuser:D
日誌任何狀態auditLog:R

各狀態實際會顯示哪些按鈕:

狀態按鈕
ACTIVE複製、停用、重設 MFA、日誌
INACTIVE複製、啟用、刪除、日誌
PENDING複製、重寄啟用信、刪除、日誌
LOCKED複製、解鎖、重設 MFA、刪除、日誌

使用者沒有強制刪除的退路。 刪除被拒絕就是被拒絕,必須先自行排除原因。

3. 建立管理員

路徑: /user/create · 權限: user:C

兩個步驟的精靈,加上結果頁。

3.1 步驟一——基本資料

欄位必填規則
名稱輸入時即時檢查唯一性。
電子信箱電子郵件格式,輸入時即時檢查唯一性。

以下欄位由流程固定,你不需要(也不能)選擇:

欄位
狀態PENDING——帳號透過信件流程啟用。
密碼模式自動——後端產生臨時密碼並寄出。
強制 MFAfalse——管理員自己到個人資料頁啟用 MFA。

3.2 步驟二——指派角色

勾選這位管理員應該持有的角色。你也可以建立一個完全沒有角色的帳號。

要編輯這個欄位需要兩種權限:user:U role:U 指派角色同時會寫入使用者、並把該角色的權限交出去,所以兩側都必須有資格。缺其中一個,整份角色清單就變成唯讀並附上說明——你仍然可以建立帳號,只是不帶角色。

選擇角色時會依你自己的權限做驗證:

情況會發生什麼
該角色的權限是你權限的子集沒問題,可以送出。
該角色含有你沒有的權限該列變紅、訊息指出是哪個角色,而且 送出按鈕停用
驗證仍在進行中送出也會停用——否則你就能搶在檢查之前送出。
取消勾選某個角色永遠允許——移除授權只會降低權限。

這項判斷需要 permission:R(用來讀取權限目錄)。若沒有這個權限,或檢查因任何原因失敗,Merak 會 安全地失敗:該角色會被擋下,而不是在未驗證的情況下放行。

3.3 步驟三——結果

系統先建立帳號,接著逐一指派所選角色。若部分角色指派失敗,結果頁會明確回報部分失敗,而不是宣稱成功。

4. 複製管理員

入口: 清單列 → /user/create/:id · 詳細頁工具列 → /user/:id/create · 權限: user:C

欄位帶入的值
名稱<來源名稱> - Copy,重複時加編號(Copy1Copy2……)。
電子信箱<local>+copy<n>@<domain>(子位址寫法)。
角色來源的角色,經過下述防提權過濾之後

4.1 複製永遠不會讓你拿到比原本更多的權限

複製是一次建立,不是權限的移轉。 任何帳號都可以被複製——包含 Super Admin,也包含你自己;來源不受限制。但複製出來的帳號絕不能讓操作者拿到超過他既有的權限。

過濾規則:只有當來源角色所含的每一項權限你都持有時,該角色才會被帶入。 只要缺一項權限,整個角色就會從預填中移除——因為角色是整包授予的,沒有「只授予角色的一部分」這回事。

情況結果
你讀不到權限目錄(permission:R完全不帶入任何角色——安全地失敗。
你讀不到角色(role:R不帶入任何角色。
你是 Super Admin 複製另一位 Super Admin全部通過,角色照常帶入。
你持有的權限比來源少過大的角色會從預填中被移除。

被移除的角色絕不會默默消失——系統會以警告通知告訴你,有幾個角色因為你無法授予而沒有被複製。你仍然可以在步驟二手動勾選角色,那裡套用同樣的驗證與同樣的伺服器端檢查,結果完全一致。

5. 管理員詳細頁

路徑: /user/:id · 權限: user:R

顯示名稱、電子信箱、狀態、強制 MFA 與已啟用 MFA、是否為系統帳號、建立與更新時間及操作者,以及已指派的角色。

只有 顯示名稱 可以就地編輯;角色透過角色選擇器管理。


第二部分——角色

6. 什麼是角色

角色(Role) 是一組具名的權限集合。角色是 租戶範圍 的:你看到的角色屬於你的租戶。

後端內建數個 系統角色——AdminReadOnlyMember EditorUser EditorApplication Editor 等。它們在清單中帶有 系統 標記。

對系統角色的操作是否允許
檢視可以
複製可以——複製只讀取來源,產生的是一個全新的一般角色。
編輯不可
刪除不可

7. 角色清單

欄位說明
角色名稱系統角色會加上 系統 標記。
描述會截斷,滑鼠停留可看全文。
建立時間未知時顯示 -
更新時間未知時顯示 -
建立者未知時顯示 -
更新者未知時顯示 -
操作詳細資料/複製/刪除。

篩選: 只有一個 關鍵字 欄位,模糊比對名稱與描述。 分頁: 預設每頁 10 筆。

操作權限系統角色
詳細資料role:R允許
複製role:C允許
刪除role:D禁止

雙擊某一列可開啟詳細頁;進入選取模式後,單擊可切換選取狀態。

8. 建立與編輯角色

路徑: /role/create · 權限: role:C

一個含兩個欄位的對話框:

欄位必填規則
角色名稱1–50 字元,且必須唯一。
描述上限 200 字元。

編輯是在角色詳細頁上就地進行,需要 role:U

複製角色(清單的 /role/create/:roleId、詳細頁的 /role/:roleId/create)會帶入 <來源名稱> - Copy 並在重複時加編號,權限則帶入來源的權限、但過濾成你有資格授予的那些——與 §4.1 是同一條防提權規則。

9. 管理角色的權限

路徑: /role/:roleId/permission

權限子頁列出這個角色目前授予的內容:

欄位說明
資源在地化標籤,例如「成員」。
動作在地化標籤,例如「建立」。
權限在地化的完整名稱,例如「建立成員帳號」。
操作移除

表格上方有一個 搜尋 框,會即時比對資源、動作或名稱;另有一個 資源 下拉選單可篩選單一資源(選項由實際存在的列組出,第一項是「所有資源」)。

9.1 新增權限

  1. 點選 新增 按鈕。
  2. 從權限目錄中勾選。已指派的項目會被排除。
  3. 點選 新增

你只能勾選自己持有的權限。 這與其他地方是同一條防提權規則:主控台絕不能成為替自己加權的途徑。

9.2 移除權限

在該列點選 移除 並確認。移除不受限制——降低權限永遠是安全的操作。

9.3 一次只做一件事

當新增對話框開啟中,或有新增/移除請求正在進行時,其他控制項會停用,受影響的列會顯示載入動畫。這可以避免對同一個角色送出兩筆互相衝突的寫入。


10. 權限目錄

權限的格式是 資源:動作。目錄中共有 12 種資源 × 4 種動作 = 42 個權限,而且集合是固定的——Merak 不會在執行期發明新的權限。

資源鍵值管轄範圍
使用者user主控台管理員帳號
成員member受管人員
裝置device註冊到成員名下的裝置
應用程式application已發布的服務
組織organization群組
角色role角色
權限permission權限目錄本身(讀取)
Token 申請tokenRequest審批
稽核日誌auditLog稽核日誌與連線日誌
租戶tenant租戶資訊
授權license授權與配額資訊
Merak NodemerakNode邊緣路由節點
動作字母
建立C
檢視R
修改U
刪除D

並非每一種組合後端都會發出——例如 auditLog:C 從來不存在,因為稽核日誌不是你能建立的東西。從未被授予的權限,在判斷上就等同於「不允許」。

完整的逐頁對照表在 附錄 A


11. 防提權機制總覽

四道各自獨立的防線,執行的是同一條規則——你永遠無法授出自己沒有的權限

位置防線
複製使用者只有當你持有來源角色的每一項權限時,該角色才會被帶入。
複製角色來源權限會被過濾成你有資格授予的那些才帶入。
手動指派角色給使用者選到權限過大的角色時,該列變紅且送出停用。
以 CSV 匯入角色權限欄的選項清單只含你持有的權限;你沒有的權限,在檔案中根本無法被解析出來。

四道防線都 安全地失敗:若檢查無法完成——權限目錄讀不到、角色權限抓不回來——該角色或權限一律拒絕,而不是在未驗證的情況下放行。後端會獨立執行同一條規則;這些前端防線的存在,是為了讓那個請求根本不會被送出去。


12. 批次作業

使用者與角色都支援 匯出多選批次操作CSV 匯入

  • 使用者: 批次停用/啟用/解鎖/刪除。匯出檔含有 角色 欄(需 role:R)。匯入可以在建立使用者的同時指派角色;只要有任何一個角色指派失敗,整列就算失敗。
  • 角色: 只有批次刪除——角色沒有生命週期狀態。系統角色會在一開始就被排除在可執行集合之外,而不是讓它們一筆一筆去失敗。匯出檔含有 權限 欄(需 permission:R)。匯入時,若角色本體建立成功、但其中一項權限授予失敗,該列仍然算 成功——只有角色本體建立失敗才會讓該列失敗。

完整說明:09 · 批次作業


13. 權限總表

工作權限
檢視管理員user:R
建立/複製/匯入管理員user:C
編輯、停用、啟用、解鎖、重寄啟用信、重設 MFAuser:U
刪除管理員user:D
編輯使用者上的角色欄位user:U role:U
驗證角色選擇permission:R
檢視角色role:R
建立/複製/匯入角色role:C
編輯角色role:U
刪除角色role:D
新增或移除角色的權限role:U + permission:R

接下來