コンソール、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 の構造化ログとコンソールの 監査 ページに記録されます。