跳转至

控制台、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 的结构化日志中,以及控制台的 审计 页面上。