存取控制與稽核日誌

存取控制 稽核日誌 RBAC 最小權限
本文的對象
適用於在串接應用程式的正式環境中,設計、運用誰能存取什麼的負責人。

3 個觀點

  1. 能存取(人類、服務帳戶)
  2. 什麼能存取(資料、功能、環境)
  3. 記錄誰在何時做了什麼(稽核日誌)

最小權限的原則

所有權限都從必要最小限開始,依需要擴張。「以防萬一而放寬」是事故的根源。

對象 建議權限
正式 Web 伺服器正式密鑰僅讀取
正式 DB 伺服器應用程式使用者僅限定綱要
批次工作者讀取+限定的寫入
運用負責人不可直接存取正式 DB,僅經由運用工具
開發者無正式存取,僅開發、測試環境

RBAC(角色型存取控制)

將權限賦予角色而非個人,再將角色分配給個人的方式較易管理。

角色範例:
・Admin       … 全權限(極少數)
・Operator    … 經由正式工具的讀寫
・Support     … 顧客資料僅讀取
・Developer   … 僅開發、測試
・Auditor     … 僅稽核日誌讀取

密鑰、權杖的存取

  • ReceiptRoller 的用戶端密鑰 → 僅正式服務帳戶
  • 顧客的存取權杖 → 僅應用程式執行使用者,對人類隱藏
  • Webhook 密鑰 → 僅接收伺服器

稽核日誌

記錄誰做了什麼,對不正偵測、事故調查、合規因應是必須的。

應記錄的事件

  • 對正式環境的登入、登出
  • 密鑰、權杖的取得
  • 顧客資料的閱覽(尤其是大量取得)
  • 資料刪除、匯出
  • 應用程式設定的變更
  • 權限的賦予、剝奪

各記錄應包含的項目

  • 時間戳(UTC)
  • 執行者(user_id / service_account_id)
  • 動作(read, write, delete 等)
  • 對象(resource_type + resource_id)
  • 結果(success / failure)
  • 用戶端IP、User-Agent
  • 相關請求ID

保管

  • 稽核日誌專用的儲存(僅寫入、不可竄改)
  • 最少 1 年(依業界而定為 3~7 年)
  • 與應用程式日誌分開保管

定期審查

  • 季度:已賦予權限的盤點,剝奪不需要的權限
  • 月度:稽核日誌的異常模式確認
  • 離職時:即時停用帳戶、相關密鑰輪替
  • 年度:存取控制政策整體的檢視

多因素驗證(MFA)

能存取正式環境的所有使用者請設為 MFA 必須。相較於 SMS,建議 TOTP(Google Authenticator 等)或 FIDO2。

相關指南

發布日: 2026-04-27 更新日: 2026-07-06
標籤
API (22) OAuth (15) Android (10) iOS (9) Webhook (8) api (7) oauth (5) POS串接 (4) getting-started (4) 參考 (4)