← 回到 Blog
WordPress約 3 分鐘閱讀

WordPress 管理員權限交接稽核:把帳號、角色與回滾證據留成維護紀錄

分類WordPress網站經營資安維護
標籤#WordPress#管理員權限#WP-CLI#交接紀錄#資安#維護證據
WordPress 管理員權限交接稽核 cover,顯示使用者角色表、盾牌檢查、WP-CLI 指令與回滾證據紀錄

WordPress 網站交接時,大家通常會先確認文章、佈景、外掛與主機資訊,卻很容易把「誰還有管理員權限」當成附帶事項。等到外掛被更新、設定被改掉、表單通知信突然失效,才發現網站上還留著幾個來源不明的 Administrator 帳號。

權限稽核不只是資安題目,也是一種維護交接紀錄。它要回答三個問題:誰可以登入後台、誰可以改網站行為、如果拿掉某個帳號或角色,如何回復或追查原因。這篇整理一份我會放進 WordPress 維護流程的權限交接稽核方法。

先列出所有人,而不是只看管理員

不要只打開「使用者」頁面看 Administrator 數量。比較穩的做法,是把所有可登入帳號、角色、Email、最近用途與來源都記下來。

Observe: user inventory
- admin@client.example: Administrator, site owner, keep
- editor@client.example: Editor, content publishing, keep
- agency-maintenance@example.com: Administrator, old vendor, pending review
- seo-tool@example.com: Editor, plugin import job, verify need

如果站台能用 WP-CLI,可以先匯出一份低風險清單:

wp user list --fields=ID,user_login,user_email,roles,display_name --format=table

這不是要把帳號資料貼到公開文件,而是把交接時的狀態留在內部維護紀錄。真正寫進工單或筆記時,可以遮蔽 Email,只保留角色與判斷。

把 Administrator 拆成「必要」與「暫時」

Administrator 權限代表可以改外掛、主題、使用者與網站設定。交接後仍需要 Administrator 的人通常不多,常見只包含:

  • 網站所有者或內部負責人。
  • 目前仍在維護主機、外掛與佈景的人。
  • 有明確合約與聯絡窗口的維護團隊帳號。

外包專案、一次性開發、SEO 匯入、內容代編帳號,通常不應永久保留 Administrator。若對方只需要發文,應降到 Editor;若只需要上傳媒體或草稿,則要再細分。

我會用這種紀錄方式避免口頭決策:

Decision record:
- account: agency-maintenance@example.com
- current role: Administrator
- reason: previous redesign vendor,
  no active maintenance contract
- action: change role to Subscriber after confirming
  no scheduled job uses it
- rollback: restore Administrator if deployment
  or plugin update job requires it

變更前先確認自動化與外掛依賴

有些帳號看起來像舊帳號,實際上可能被外掛、匯入工具、表單通知或排程作業引用。變更前要先確認幾個位置:

  • 外掛設定裡是否指定該使用者作為文章作者、匯入者或通知收件人。
  • 自動發文、RSS 匯入、會員外掛是否會用特定帳號建立內容。
  • 近期文章、頁面或自訂文章類型的作者是否仍綁在該帳號。
  • 主機、CI、部署腳本是否曾用該帳號測試登入。

可先用 WP-CLI 看看帳號是否仍是內容作者:

wp post list \
  --post_type=post,page \
  --author=123 \
  --fields=ID,post_title,post_status,post_type \
  --format=table

如果只是舊內容作者,不一定要刪帳號;可以保留作者歸屬、停用登入或降低角色。重點是不要在沒證據的情況下刪除,避免日後找不到內容來源。

用最小變更處理高風險帳號

權限稽核的安全做法,是一次只處理一類問題,並留下前後證據。例如:

Change:
- 09:10 export user list before change
- 09:16 agency-maintenance role: Administrator → Subscriber
- 09:18 reset password for owner admin account
- 09:22 verify owner can still update plugin list and edit settings
- 09:25 verify editor can publish post but cannot install plugin

如果懷疑帳號已外洩,才需要更積極的處理:重設密碼、停用帳號、檢查最近登入紀錄、檢查 unknown admin 是否被建立、確認外掛與佈景檔案是否被改動。這些動作影響較大,應該和備份與回滾點一起紀錄。

驗證角色真的符合工作需要

角色名稱看起來正確,不代表使用者體驗正確。交接時至少要用兩種角色測一次:

  1. 站長 / 維護者:能進入外掛、佈景、設定、更新頁;能處理必要維護。
  2. 內容編輯:能建立與更新文章、上傳圖片、預覽內容;不能安裝外掛或新增管理員。

驗證可以寫得很簡短:

Verify:
- Owner admin: /wp-admin/plugins.php 200, can view updates.
- Editor: can edit draft post and upload image.
- Editor: cannot access /wp-admin/plugins.php, redirected or permission denied.
- Unknown old vendor account: no longer has Administrator role.

這類紀錄比「已檢查權限」更有用,因為它說明了檢查路徑與結果。

不要把帳密放進交接文件

權限交接最危險的反模式,是把 WordPress 帳號密碼、主機密碼、FTP 或 API Token 直接寫進文件。交接紀錄應該記錄角色、用途、責任人與變更結果;密碼應透過密碼管理工具、安全分享機制或由使用者自行重設。

可以記錄:

Credential handling:
- Owner admin password reset link sent to site owner.
- No plaintext password stored in project repo or issue tracker.
- Maintenance vendor account requires named owner and expiry date.

不應記錄:

admin password: example123
sftp password: ...
api token: ...

這也是 UCAMC 維護紀錄的基本原則:留下可驗證證據,但不要把正式環境機密帶進 repo。

權限稽核是一份會更新的決策紀錄

WordPress 管理員權限不是一次設定完就永遠安全。每次外包交接、外掛導入、內容代編、維護合約結束、網站搬家或主機更換後,都應該重看一次使用者角色。

我會把最後結論寫成這種狀態:

Permission audit result:
- Required Administrator accounts: 2
- Temporary maintenance accounts: 1, expires 2026-09-30
- Editor accounts: 3
- Removed or downgraded unknown admin accounts: 1
- Next review: after plugin update sprint or vendor handoff

這樣下一位維護者不需要猜「這個帳號能不能刪」,而是能看到當時的判斷、驗證路徑與回滾方式。對長期經營的 WordPress 內容站來說,權限交接稽核不是額外行政工作,而是讓網站變更可追蹤、可回復、也更安全的基礎。