本旅程涵蓋管理員配置密碼策略,以及實際運維中遇到的鎖定、改密、緊急解鎖情境。供 PM 做 demo、訓練 IT 主管、未來作為使用者手冊「安全運維章節」素材來源。
流程總覽
+---------------+
| Admin 已登入 |
+-------+-------+
|
| 設定 → 安全性策略
v
+---------------+ +---------------+
| 調整策略 +-----> | 嘗試低於下限 |
| 最少字數/類型/ | | 系統拒絕 |
| 到期天數 | +---------------+
+-------+-------+
|
| 儲存
v
+---------------+
| 策略立即生效 |
| 寫稽核 diff |
+-------+-------+
|
| 後續日常運維
v
+---------------+ +---------------+ +---------------+
| 一般使用者操作 | -- > | 連續 5 次失敗 | -- > | 鎖定 15 min |
| | | | | |
+---------------+ +-------+-------+ +-------+-------+
| |
| 自然到期 | 緊急
v v
+---------------+ +---------------+
| 自動解鎖 | | Admin 解鎖 |
+---------------+ +---------------+
+---------------+ +---------------+ +---------------+
| 密碼 84 天 | -- > | 顯示到期提醒 | -- > | 90 天到期 |
+---------------+ +---------------+ +-------+-------+
|
| 強制
v
+---------------+
| 改密頁 |
+---------------+
使用者背景
| 屬性 |
內容 |
| 角色 |
管理員(主場景)/ 一般使用者(被動觸發場景) |
| 環境 |
金融客戶日常運維、季度密碼策略檢視 |
| 情境 |
策略首次配置、處理鎖定誤傷、密碼到期前提醒、緊急解鎖 |
| 前置 |
已完成 bootstrap、Admin 已登入 |
| 預期工作 |
把密碼策略設到符合金管會稽核要求、處理日常鎖定與改密事件 |
流程 1:管理員配置密碼策略
從 Settings 進入「安全性策略」頁,調整三個核心欄位。
| 步驟 |
動作 |
系統反應 |
| 1 |
點選頂部選單 設定 |
進入設定頁 |
| 2 |
點選左側 安全性策略 |
顯示當前策略 + 產品下限說明 |
| 3 |
調整 最少字數(slider 或數字欄) |
即時顯示「目前策略 vs 產品下限」對比 |
| 4 |
勾選 必須包含:數字 / 大小寫 / 特殊符號 |
即時更新策略 preview |
| 5 |
調整 密碼到期天數(預設 90) |
— |
| 6 |
點選 儲存 |
按鈕變 spinner |
| 7 |
— |
顯示 toast「策略已更新」+ 寫稽核 diff |
⚠️ 注意: 既有使用者舊密碼不會因策略調嚴而失效。需立即套新標準時,使用強制改密。
流程 2:嘗試把策略調到產品下限以下
| 步驟 |
動作 |
系統反應 |
| 1 |
將最少字數設為 6(產品下限為 8) |
即時顯示紅字「不可低於產品下限 8 字」 |
| 2 |
點選儲存 |
拒絕儲存、欄位自動回到 8 |
💡 提示: 客戶內網 demo 環境可以調至產品下限;生產環境建議套預設策略(12 字 + 大小寫 + 數字 + 符號)。
流程 3:使用者觸發鎖定 → 自動解鎖
當一般使用者連續 5 次登入失敗,帳號自動鎖定 15 分鐘。
| 步驟 |
動作 |
系統反應 |
| 1 |
使用者連續輸錯密碼 1 次 |
顯示「帳號或密碼錯誤」 |
| 2 |
第 2-4 次連續錯誤 |
同上訊息(不洩漏帳號是否存在) |
| 3 |
第 5 次錯誤 |
帳號狀態變為鎖定,登入頁顯示紅 banner「帳號已鎖定,15 分鐘後重試」+ 倒數計時 |
| 4 |
等待 15 分鐘 |
系統內部標記 unlock_at 已過 |
| 5 |
使用者再次以正確密碼登入 |
系統自動解鎖、登入成功、寫稽核(action=account_auto_unlocked) |
流程 4:管理員手動強制改密
當管理員需要強制某個使用者下次登入立即改密時:
| 步驟 |
動作 |
系統反應 |
| 1 |
點選頂部 使用者管理 |
顯示使用者列表 |
| 2 |
找到目標使用者列 |
顯示狀態與最後登入時間 |
| 3 |
勾選 下次登入強制改密 |
— |
| 4 |
點選 儲存 |
寫稽核(action=force_password_change_set) |
| 5 |
(之後)使用者下次登入 |
系統建 session 後強制導向 /change-password |
流程 5:管理員緊急解鎖被鎖帳號
| 步驟 |
動作 |
系統反應 |
| 1 |
點選 使用者管理 |
— |
| 2 |
找到狀態為「鎖定中」的帳號 |
顯示剩餘鎖定時間 |
| 3 |
點選該列的 緊急解鎖 |
顯示確認 modal |
| 4 |
在 modal 點選 確認解鎖 |
系統解除鎖定、失敗計數歸零、寫稽核(action=account_unlocked_admin) |
| 5 |
— |
使用者列表中該帳號狀態恢復為「正常」 |
流程 6:使用者改密(自然到期路徑)
| 步驟 |
動作 |
系統反應 |
| 1 |
使用者以正確密碼登入 |
密碼年齡 ≥ 90 天 |
| 2 |
— |
系統建 session 但強制導向 /change-password |
| 3 |
嘗試訪問其他 URL |
自動重導回 /change-password |
| 4 |
輸入舊密碼、新密碼、確認新密碼 |
強度檢查即時驗證、且檢查「不可與舊密碼相同」 |
| 5 |
點選 儲存 |
更新密碼 hash、清除強制改密 flag、寫稽核 |
| 6 |
— |
自動導向 /dashboard |
流程 7:狀態總覽
帳號完整狀態機(簡化版):
+-----------+
bootstrap | | 5 次失敗
+------------> | 正常 +---------------+
| | |
+-----+-----+ v
^ +-----------+
| | 鎖定中 |
| 自動 15 min | |
| OR +-----+-----+
| Admin 解鎖 |
+---------------------+
+-----+-----+
| |
| 強制改密 +<----- 密碼到期 90d
| | OR Admin 標記
+-----+-----+
|
| 改密成功
v
+-----------+
| 正常 |
+-----------+
| 狀態 |
進入條件 |
離開條件 |
| 正常 |
bootstrap 成功 / 解鎖完成 / 改密完成 |
5 次失敗 / 密碼到期 / Admin 強制標記 |
| 鎖定中 |
連續 5 次登入失敗 |
15 分鐘自動 / Admin 緊急解鎖 |
| 強制改密 |
密碼到期 OR Admin 手動標記 |
改密成功(清除 flag) |
Edge Cases 速查
| 情境 |
觸發條件 |
系統行為 |
你的下一步 |
| 嘗試低於產品下限 |
設最少字數 < 8 |
拒絕儲存、欄位回彈 |
至少設 8 |
| 多 Admin 同時調策略 |
並發儲存 |
最後寫入勝出、稽核留所有變更 |
查稽核確認最終策略 |
| 攻擊者換 IP 重試 |
同帳號跨多 IP |
仍判定為鎖定(帳號層級) |
— |
| 鎖定中系統重啟 |
重啟發生在 15 min 倒數中 |
unlock_at 持久儲存、繼續倒數 |
等到原定時間 |
| 改密時 session 過期 |
30 分鐘無操作 |
提示重新登入 |
重登後再改密 |
| 新密碼與舊密碼相同 |
提交改密 |
強度檢查項紅標 |
換個新密碼 |
| 密碼到期天數設 0 |
客戶 demo 需求 |
接受、視為「永不到期」 |
生產環境請改回 90 |
| Admin 把自己標記強制改密 |
自我標記 |
允許、下次登入即觸發 |
改完自己再操作其他事 |
相關章節