コンテンツにスキップ

コンソール、CLI とアクセス

コンソールと CLI は同じ JSON API (リファレンス) を使うため、認証、ロール、監査ログを共有します。

ロール

ロール できること
viewer ターゲット、バックアップ、差分、変更サマリー、復元、サンドボックスを見る。
operator + 即時バックアップ、即時検証、一時停止と再開、サンドボックスへの 復元、サンドボックスへのクエリと管理、監査ログの閲覧。
restorer + 新しいデータベース または ダウンロード への復元。
restorer-admin + インプレース 復元、バックアップのピン留めと解除。

ロールはチャートで、メールアドレスと 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 がコンソールを公開する場合 (後述)、チームドメインとオーディエンスは Tenax が自分で 見つけます。自分で管理する Access アプリケーションの場合は、auth.cloudflareAccess.teamDomain と audience を設定します。 auth.provider: none (ローカル開発専用) では、すべてのリクエストに auth.devRole が付与されます。

コンソールへのアクセス

入り口は 2 つあり、併用できます。

  • クラスターへのアクセス権がない人向け: ログインの背後のパブリックアドレス。 ホスト名を設定すると、Tenax は Cloudflare トンネルを通してそこでコンソールを公開します。サンドボックスのルートと同じ人 (expose.cloudflare.allowEmails / allowGroups) を通す Access アプリケーション、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 はこれを読みます。この Secret ができるまで、コンソールは「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 の Namespace の pods/portforward) が決め、ロールは auth.portForwardRole (デフォルトは restorer-admin。空にするとポートが無効になります) です。

CLI

インストールと接続: CLI のインストール。すべてのコマンド: CLI リファレンス。

監査ログ

すべての書き込み (即時バックアップ、復元、ピン留め、サンドボックスの変更) とすべてのクエリは、ユーザー、ロール、ターゲット、 結果、送信元アドレスとともに、tenax-api の構造化ログとコンソールの 監査 ページに記録されます。