Appearance
密碼政策與 MFA
密碼政策
設定位置:Settings → Security → Password Policy,對應 setting:WORKSPACE_PROFILE.password_restriction。
預設值與建議值
| 欄位 | 預設 | 建議(一般公司) | 建議(金融 / 法遵嚴格) |
|---|---|---|---|
min_length | 12 | 12 | 16 |
require_number | true | true | true |
require_letter | true | true | true |
require_uppercase_letter | true | true | true |
require_special_character | true | true | true |
require_reset_password_for_first_login | true | true | true |
password_rotation | 90d | 90d 或關閉 | 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-10 | audit 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:
- 掃 QR code(Google Authenticator / 1Password / Authy / Bitwarden 等)
- 輸入 TOTP 驗證碼確認
- 下載 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 丟失 + 無 recovery | 走 server 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 rotation | NIST 已不建議;逼 user 用弱密碼 |
| 短到 8 字密碼 | 暴力破解可接受時間內可破 |
| MFA 不開、密碼也不強 | 一次外洩全公司沒了 |
| 用簡訊 OTP | 對 SIM swap 攻擊脆弱;用 TOTP 或 hardware key |
| 把 recovery code 留 email / IM | 復原管道應該與帳號管道分離 |
| 沒 break-glass 帳號 | IdP 掛掉就進不去 |