Tai Link は一つの原則に基づいて設計されています:**あなたのデータはあなたのデバイスに留まる**。すべての通信は Tai Link と Yao Agents インスタンスの間で直接行われ、サードパーティのサーバーを経由しません。
## 認証
Tai Link は **OAuth 2.0 デバイスフロー**で Yao に認証します:
1. 初回起動時に、Tai Link が一意のクライアント ID とマシン ID を生成します。
2. ブラウザでデバイスを承認します(一回限りの操作)。
3. Tai Link がアクセストークンとリフレッシュトークンを受け取り、ローカルの認証ファイルに保存します。
4. トークンは自動的に更新されます——再ログインは不要。
いつでもアクセスを取り消せます:
```bash
tai logout
```
これによりローカルの認証情報が削除され、Yao サーバー上のトークンも失効します。
## 暗号化トンネル
Tai Link と Yao 間のすべての通信は gRPC チャネルを通じて行われます:
- コントロールメッセージ(登録・ハートビート・チャネルオープンコマンド)
- データチャネル(ファイル同期・VNC・コンテナプロキシ)
- 認証のために各 RPC に Bearer Token が含まれます
本番環境では Yao の gRPC エンドポイントで TLS を有効にすることでエンドツーエンドの暗号化が実現します。
## Host Exec のセキュリティポリシー
Host Exec——リモート OS 上で直接コマンドを実行する機能——は**デフォルトで無効**です。有効にした場合、設定可能なポリシーで許可される操作を制御します:
```yaml
host_exec:
enabled: true
allowed_commands:
- ls
- cat
- python3
- node
allowed_dirs:
- /home/projects
- /data
denied_dirs:
- /etc
- /root
- /var
```
| ポリシーフィールド | 役割 |
|----------------|------|
| `allowed_commands` | Agent が実行できる実行ファイルのホワイトリスト |
| `allowed_dirs` | Agent が読み書きできるディレクトリ |
| `denied_dirs` | 親ディレクトリが許可されていても明示的にブロックするディレクトリ |
| `full_access` | すべての制限をバイパス——信頼された隔離マシン専用 |
> ⚠️ Tai Link は自身のプロセス権限でコマンドを実行します。共有マシンでは、権限を制限した専用ユーザーアカウントで Tai Link を実行することをお勧めします。
## データの分離
- **ファイル同期**はファイルをローカルディレクトリ(デフォルト `/data/volumes`)に保存します。明示的にプルしない限りファイルはデバイスの外に出ません。
- **コンテナ**は Docker または K8s で標準的な分離環境で動作し、各 Agent セッションに独立したコンテナが割り当てられます。
- **VNC** は WebSocket でピクセルストリームを転送します——画面録画はどこにも保存されません。
## デバイスを切断する
デバイスを即座にオフラインにするには:
1. リモートマシンで Tai Link プロセスを停止します(`Ctrl+C` または `docker stop tai`)。
2. `tai logout` を実行して認証情報を削除します。
3. Yao Agents でデバイスが**オフライン**と表示され、以降コマンドを受け付けなくなります。
## 次のステップ
- [トンネルモード](/docs/ja-jp/tai-link/tunnel-mode) — NAT トラバーサルの仕組み
- [インストール](/docs/ja-jp/tai-link/installation) — 本番環境でのデプロイのベストプラクティス