控制台、CLI 與存取¶
控制台和 CLI 使用同一個 JSON API(參考),因此共享認證、角色和稽核日誌。
角色¶
| 角色 | 可以 |
|---|---|
viewer |
檢視目標、備份、差異、變更摘要、還原和沙盒。 |
operator |
+ 立即備份、立即驗證、暫停和繼續執行、還原到沙盒、查詢和管理沙盒、讀取稽核日誌。 |
restorer |
+ 還原到新資料庫或下載。 |
restorer-admin |
+ 原地還原、固定和取消固定備份。 |
角色在 Chart 中根據電子郵件和 Cloudflare Access 群組進行對應:
auth:
provider: cloudflare-access
roles:
viewer: ["*@example.com"]
operator: ["group:sre"]
restorer: [alice@example.com]
restorer-admin: [bob@example.com]
scopes: # optional: limit someone to some orgs or projects
contractor@example.com: { orgs: [acme] }
Tenax 在每個請求上驗證 Cf-Access-Jwt-Assertion JWT(團隊網域和受眾),因此繞過通道的請求會被拒絕。
當 Tenax 發布控制台時(見下文),它會自行找到團隊網域和受眾;對於你自己管理的 Access 應用程式,請設定
auth.cloudflareAccess.teamDomain 和 audience。使用 auth.provider: none(僅限本機開發)時,每個請求都獲得
auth.devRole。
存取控制台¶
有兩種存取方式,可以同時使用:
-
面向沒有叢集存取權限的人:位於登入之後的公共位址。 設定一個主機名,Tenax 就會透過它的 Cloudflare 通道在那裡發布控制台: 一個與沙盒路由放行同一批人的 Access 應用程式(
expose.cloudflare.allowEmails/allowGroups)、一條 DNS 記錄,以及一條指向tenax-api的路由。使用者在瀏覽器中開啟https://tenax.example.com,或執行一次tenax login --server https://tenax.example.com,然後用電子郵件登入;他們永遠不需要 kubeconfig。他們的角色來自auth.roles。auth: provider: cloudflare-access roles: { viewer: ["*@example.com"], restorer: [alice@example.com] } expose: provider: cloudflare cloudflare: { zone: example.com, apiTokenSecret: tenax-cloudflare-api, allowEmails: ["*@example.com"] } cloudflared: { enabled: true, consoleHostname: tenax.example.com }控制器會維持這條路由,並把應用程式的團隊網域和受眾儲存在 Secret
tenax-console-access中,由 tenax-api 讀取; 在它存在之前,控制台會傳回「console login not ready」。要讀取團隊網域,API 權杖需要 Access: Organizations, Identity Providers, and Groups: Read 權限;沒有該權限時,Tenax 會從控制台的登入重新導向中讀取, 或者你也可以設定auth.cloudflareAccess.teamDomain。 -
面向有叢集存取權限的人:
tenax console。 它透過你的 kubeconfig 把本機連接埠轉送到控制台,並在瀏覽器中開啟。 它會一直執行到按下 Ctrl+C;在另一個終端機中,其他命令透過export TENAX_SERVER=http://127.0.0.1:8080使用它。 使用auth.provider: cloudflare-access時,這種轉送無需 Access 登入:它存取的是 tenax-api 只在其 Pod 內127.0.0.1上提供的連接埠,只有kubectl port-forward能到達,因此由 Kubernetes RBAC(Tenax 名稱空間中的pods/portforward)決定誰能進入,所用角色為auth.portForwardRole(預設restorer-admin;留空則關閉該連接埠)。
CLI¶
稽核日誌¶
每一次寫操作(立即備份、還原、固定、沙盒變更)和每一次查詢都會連同使用者、角色、目標、結果和來源位址一起記錄在 tenax-api 的結構化日誌中,以及控制台的 稽核 頁面上。