Skip to content

密碼政策與 MFA

密碼政策

設定位置:Settings → Security → Password Policy,對應 setting:WORKSPACE_PROFILE.password_restriction

預設值與建議值

欄位預設建議(一般公司)建議(金融 / 法遵嚴格)
min_length121216
require_numbertruetruetrue
require_lettertruetruetrue
require_uppercase_lettertruetruetrue
require_special_charactertruetruetrue
require_reset_password_for_first_logintruetruetrue
password_rotation90d90d 或關閉60d

NIST SP 800-63B 近年立場:長度勝過複雜度;過短的輪替期反而會逼 user 用弱密碼。如果有 MFA,rotation 可以放寬到 180d 甚至關閉。

改設定

bash
curl -X PATCH -H "Authorization: Bearer $TOKEN" \
  -d '{"value":{"workspaceProfile":{"passwordRestriction":{
    "minLength": 14,
    "requireNumber": true,
    "requireLetter": true,
    "requireUppercaseLetter": true,
    "requireSpecialCharacter": true,
    "requireResetPasswordForFirstLogin": true,
    "passwordRotation": "180d"
  }}}}' \
  "$ARGUS/v1/settings/WORKSPACE_PROFILE?updateMask=workspaceProfile.passwordRestriction"

登入保護

登入失敗鎖定

連續登入失敗會:

連續失敗次數行為
1-3正常拒絕;audit log 記錄
4-10audit log 升級為 warning
11+audit log critical;該 login_id 進入暫時鎖定 (15 分鐘)

被鎖定的 user 可以由 admin 立刻解鎖:

bash
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"loginId":"alice"}' \
  "$ARGUS/v1/users:unlock"

或等鎖定期過去自動解。

速率限制

  • 同一 IP 對 /v1/auth/login 的請求:60 req/min
  • 同一 login_id 的登入嘗試:見上面鎖定政策

反向代理層也建議加上整體 rate limit(私有部署)。

觀測

Metric看什麼
argus_auth_login_total{status="fail"}失敗總數
audit log bb.auth.login.fail個別失敗紀錄(含 IP、reason)

設警報:5 分鐘內單一 IP / 單一 user 失敗 >10 次 → notify security。

MFA (TOTP)

啟用

User 自助啟用

Profile → Security → Two-Factor Authentication → Enable

  1. 掃 QR code(Google Authenticator / 1Password / Authy / Bitwarden 等)
  2. 輸入 TOTP 驗證碼確認
  3. 下載 recovery codes(一次性備用碼)— 印出來放保險箱

Admin 強制(全 workspace)

Settings → Security → 切 Require 2FA for all users(對應 require_2fa setting)。

開啟後:

  • 沒設過 MFA 的 user 下次登入 會被強制設
  • workspace admin 預設不適用(避免鎖死)— 但強烈建議自己也啟用
  • IdP 登入的 user 依 IdP 自身 MFA(Argus 不再額外要求)

Admin 強制(指定 group)

Settings → Groups → <group> → Require 2FA

適合:給高風險 group(DBA / 資安)強制,一般 user 自願。

Recovery Codes

每位 user 啟用 MFA 時產生 10 組一次性 recovery code。用完可在 Profile 重新產生。

⚠️ Recovery codes 離線存 — 印出來、寫進密碼管理工具的 secure note。不要留在 email / IM。

丟失 TOTP 設備

情境處理
有 recovery code用 recovery code 登入後重設 MFA
沒 recovery code(手機弄丟)admin 在 Settings → Members → <user> → Reset MFA 重設;user 下次登入再設一次新的
Day-1 admin 丟失 + 無 recoveryserver local CLI reset

Break-glass 帳號

強烈建議至少保留一個 break-glass 帳號:

屬性
不接 IdP(純本地密碼登入)
強密碼 + MFA
密碼存在金庫(公司密碼管理)— 印出來放保險箱
不日常使用,只在 IdP / SSO / 主要 admin 失能時用

理由:IdP 掛掉時你仍需要進 Argus 救火。

SSO 與 MFA 的關係

開啟 OIDC / SAML 登入後:

  • IdP 走 IdP 自己的 MFA(通常公司 IdP 已強制)
  • Argus 端 require_2fa 不適用 IdP user
  • 本地帳號(含 break-glass)仍走 Argus MFA

不要把 IdP MFA 跟 Argus MFA 搞重 — 設一次就好。

Audit log

Action
bb.auth.login / bb.auth.login.fail
bb.auth.logout
bb.auth.password.change
bb.auth.password.reset
bb.auth.mfa.enable
bb.auth.mfa.disable
bb.auth.mfa.reset
bb.user.lock / bb.user.unlock

bb.auth.mfa.disable 視為 可疑事件;建議警報觸發後 security 確認是否真的是 user 自己關的。

不要做的事

反模式為什麼
強制 30 天 password rotationNIST 已不建議;逼 user 用弱密碼
短到 8 字密碼暴力破解可接受時間內可破
MFA 不開、密碼也不強一次外洩全公司沒了
用簡訊 OTP對 SIM swap 攻擊脆弱;用 TOTP 或 hardware key
把 recovery code 留 email / IM復原管道應該與帳號管道分離
沒 break-glass 帳號IdP 掛掉就進不去

相關

Argus — 公司內部資料庫變更審計平台