Skip to content

認證模式

Argus 為私有部署設計,預設不依賴任何外部 IdP。Day-1 上線時用 admin 建帳號 + 密碼即可;之後再依需求接 OIDC / SAML / LDAP。

詳細設計:docs/modules/auth-internal-deployment.md(內部工程文件)。

核心模型

名詞一句話
login_id主識別。登入時輸入的 ID,唯一不可變alice / alice.chen@corp / emp001
email選填。用於通知、密碼重設;作為登入識別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唯一識別
email不填的話通知 / 密碼重設失效
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 接通後,可:

  1. 為每位 AD user 建立對應的本地帳號(login_id = AD username)
  2. 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 不能呼叫,避免被攻擊面擴大。

相關

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