Appearance
認證模式
Argus 為私有部署設計,預設不依賴任何外部 IdP。Day-1 上線時用 admin 建帳號 + 密碼即可;之後再依需求接 OIDC / SAML / LDAP。
詳細設計:
docs/modules/auth-internal-deployment.md(內部工程文件)。
核心模型
| 名詞 | 一句話 | 例 |
|---|---|---|
| login_id | 主識別。登入時輸入的 ID,唯一且不可變 | alice / alice.chen@corp / emp001 |
| 選填。用於通知、密碼重設;不作為登入識別 | alice@corp.com | |
| password | 密碼,bcrypt 儲存;可被 admin reset | — |
| identity provider | 可選;接上後該 user 透過 IdP 登入,不再用本地密碼 | OIDC / SAML / LDAP |
為什麼 login_id 與 email 分離?
- 內部部署常見「帳號是 employee code,email 之後才補」
- 契約工 / 外部協力廠商沒有公司 email 也要能登入
- 員工換 email、改名字時 login_id 不必動
Day-1 部署:無 IdP 流程
text
Step 1:第一次啟動 Argus
└─ 引導畫面:建立第一個 admin
└─ login_id + (optional) email + password
Step 2:admin 登入
└─ 為其他人建帳號(login_id + 暫時密碼)
└─ 把帳號分發給使用者
Step 3:使用者首次登入
└─ 強制改密碼(pending_first_login)
└─ 啟用 MFA(可選)建第一個 admin
伺服器第一次啟動時若 metastore 沒有任何 user,UI 進入 build day-1 admin 流程。這位 admin 是 canonical admin:
- 永遠不會被自動降權
- 可以指派 / 撤銷其他人的權限
- 可以開啟 / 關閉 IdP 整合
不要把 day-1 admin 當日常帳號用。建立完之後另開一個個人 admin 帳號,把 day-1 admin 收進金庫。
建立帳號(給 workspace admin)
Settings → Members → Add Member:
| 欄位 | 必填 | 說明 |
|---|---|---|
| login_id | ✅ | 唯一識別 |
| ❌ | 不填的話通知 / 密碼重設失效 | |
| password | ✅ | 初始密碼;user 首次登入會被強制改 |
| role | ✅ | 預設 workspace.member |
建好之後把 login_id + 初始密碼 透過安全管道給對方(不要 email,不要明文丟 IM)。
接企業 IdP(可選)
Argus 支援的 IdP 類型:
- OIDC(推薦)
- SAML 2.0
- LDAP(內網常見)
Settings → SSO → Add Identity Provider,每個 IdP 一筆設定。
IdP 接上後使用者長相
| user 類型 | 怎麼登入 |
|---|---|
| 本地帳號 | login_id + 密碼(仍可用) |
| IdP 帳號 | 在登入頁選 IdP → 跳轉 IdP → 回來 |
| 契約工 / 外部協力 | 永遠用本地帳號(不要接 IdP) |
IdP user 第一次登入時,Argus 會以 IdP 傳來的 sub 為基準建立 user record,login_id 取自 IdP claim(通常 preferred_username),可 admin 在事後改。
密碼政策
預設:
- 最小 12 字元
- 含大小寫 + 數字 + 符號(任三)
- 不可與前 5 次重複
- 90 天強制換(可關)
調整位置:Settings → Security → Password Policy。
MFA
支援 TOTP(Google Authenticator / 1Password / Authy)。
- 一般 user:可在 profile 啟用,admin 可強制 group 啟用
- workspace admin:建議強制
- day-1 admin:強烈建議強制
常見問題
我們有 AD,但 day-1 還沒接好,怎麼辦?
照「無 IdP day-1 流程」走,admin 先建本地帳號。AD 接通後,可:
- 為每位 AD user 建立對應的本地帳號(login_id = AD username)
- AD user 首次走 IdP 登入時,Argus 自動把 IdP claim 與既存 login_id 對應
不要 admin 帳號 / on-call 帳號接 IdP。IdP 掛掉時你還是要進 Argus 救火。
我要關掉密碼登入,只允許 IdP,怎麼辦?
Settings → Security → Allow password login 切 off。
⚠️ 不要關掉 day-1 admin 的密碼登入。建議保留至少一個可走密碼的 break-glass 帳號。
user 離職怎麼辦?
Settings → Members → <user> → Deactivate。
- 帳號保留(保留稽核軌跡 / 防止 login_id 被重用)
- 該 user 所有 session 失效
- audit log 上的
actor = <user>仍可顯示
不要 delete user,會破壞 audit log 上的指向。
我忘記 day-1 admin 密碼了
在 Argus server 機器上跑 reset CLI:
bash
./argus admin reset-password --login-id admin這個指令只在 server local 可用,遠端 API 不能呼叫,避免被攻擊面擴大。