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