直接答案:在我們做的系統裡不會。ScriptWalker 每個後台開工前先定 4–6 個角色與權限矩陣,權限寫在後端程式、不靠隱藏按鈕,離職 1 小時內停權,每季做一次權限盤點;這部分約占開發工時 5–10%。
問題場景:只有「管理員」一種權限,出事時查不到是誰
沒有角色設計的後台,風險不在駭客,而在內部。以一個 60 人經銷商的訂單後台為例(去識別化情境,數字依常見接手狀況整理):全公司 22 個帳號裡有 14 個是管理員,業務看得到進貨成本,3 位已離職員工的帳號還能登入,其中一位離職 5 個月後仍下載過客戶名單。OWASP Top 10 把「存取控制失效」列為第一名,原因就是這類問題太常見。
我們的做法:先訪談出權限矩陣,再寫進程式
一句話總結:角色由業務流程決定,權限由後端強制,紀錄由系統自動留存。流程如下:
需求訪談 → 權限矩陣表 → 客戶簽核 → Laravel Policy 實作 → 自動化測試 → 操作紀錄 → 離職停權 → 每季盤點
為什麼這樣做:隱藏按鈕不等於沒有權限
只把按鈕藏起來,懂一點技術的人直接打網址或 API 仍然能操作,所以權限一定要在後端檢查。我們做過的取捨有三個:
- 角色不超過 6 個:角色太多,客戶自己就管不動,最後又全給管理員。
- 權限以「動作」為單位:例如「看成本價」「刪訂單」「匯出名單」,而不是以頁面為單位,避免一頁裡混著敏感欄位。
- 敏感動作一律留紀錄:匯出、刪除、改價格都記下誰、何時、改了什麼,出事時查得到。
具體執行:5 個步驟與實際設定
每個專案都照同一套步驟,工具固定,新人接手不用重學。
- Step 1|訪談:用 Notion 表格列出所有功能與動作,逐一問「誰需要、誰不該看」。
- Step 2|權限矩陣:整理成下表,由客戶窗口簽核後才開工。
- Step 3|實作:用 Laravel 的 Gate 與 Policy 加上 spatie/laravel-permission 管理角色,敏感動作用 spatie/laravel-activitylog 留紀錄。
- Step 4|測試:用 Pest 為每個角色寫「不該做到」的測試,在 GitHub Actions 每次推送都跑。
- Step 5|停權與盤點:後台提供一鍵停用與強制登出;每季匯出帳號清單給客戶確認。
| 動作 | 老闆 | 業務主管 | 業務 | 會計 | 倉管 |
|---|---|---|---|---|---|
| 看成本價 | ✓ | ✓ | — | ✓ | — |
| 建立訂單 | ✓ | ✓ | ✓ | — | — |
| 刪除訂單 | ✓ | ✓ | — | — | — |
| 匯出客戶名單 | ✓ | — | — | — | — |
| 確認出貨 | ✓ | — | — | — | ✓ |
測試檔的命名規則長這樣:
tests/Feature/Permissions/
SalesCannotSeeCostPriceTest.php
SalesCannotDeleteOrderTest.php
WarehouseCannotExportCustomersTest.php
DisabledUserIsLoggedOutTest.php
這個做法的代價:前期多花時間,客戶要多做決定
- 訪談與矩陣簽核約多 2–4 個工作天。
- 每個角色的測試約多 5–10% 開發工時。
- 客戶要指定權限負責人,離職與調職都要記得通知。
- 權限越細,日後新增功能時越要記得補設定。
不適合什麼情境:一人公司與短期活動頁
- 只有老闆一人使用的後台,2 個角色就夠,不需要完整矩陣。
- 3 個月內就下架的活動網站,不值得做季度盤點。
- 已導入企業單一登入(SSO)且由 IT 統一管權限的公司,應以既有身分系統為主。
客戶為什麼該關心:權限決定出事時的損失範圍
角色設計做好,一個帳號被盜或員工離職,影響範圍只限於那個角色能做的事。依個人資料保護法,企業對客戶個資負有安全維護義務,有存取控制與操作紀錄,發生事件時才說得清楚做了哪些防護。
如果你也想這樣做:給其他團隊的 4 個建議
- 先寫「不該做到」的測試,比寫「做得到」更能抓到漏洞。
- 權限矩陣放進交付文件,讓接手的人一看就懂。
- 停權要包含強制登出與 API Token 失效,不只是改密碼。
- 每季盤點用匯出清單,請客戶逐筆打勾,比口頭確認可靠。
我們在哪些客戶身上用過:經銷商後台改版
前面提到的 60 人經銷商,改版後管理員從 14 個降到 2 個,5 個角色上線,3 個離職帳號當天停用。第一次季度盤點又找出 2 個調職後權限沒收回的帳號。這套做法現在是 ScriptWalker(台灣 Laravel/Flutter 客製化開發工作室)所有後台專案的標準配備,客製化系統開發 NT$80,000 起。
常見問題 FAQ
我們公司才 15 個人,也需要角色權限嗎?
需要,但 3 個角色就夠。至少把能看成本、能刪資料、能改設定的人分開。
權限設計會讓開發費變多少?
通常多 5–10% 工時。比起事後補做或資料外洩的處理成本,前期做最便宜。
離職員工停權要我們自己操作嗎?
可以自己按停用,也可串人事系統自動停。我們建議指定 1 位負責人,離職當天處理。
舊系統沒有權限設計可以補嗎?
可以,但要先盤點現有帳號與功能。多數中型後台補做約 2–4 週。
行動呼籲:想檢查你的後台權限,或想加入我們
想知道現有後台有幾個管理員、離職帳號有沒有停用,可以找我們做權限健檢;如果你是重視這類細節的工程師,也歡迎來信聊聊:
- Email:[email protected]
- 電話:0916-224-047
- LINE:@ufv9089p