跳轉到

控制台、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

安裝和連線:安裝 CLI。全部命令:CLI 參考。

稽核日誌

每一次寫操作(立即備份、還原、固定、沙盒變更)和每一次查詢都會連同使用者、角色、目標、結果和來源位址一起記錄在 tenax-api 的結構化日誌中,以及控制台的 稽核 頁面上。