目次

権限と承認

すべてのツール呼び出しには、互いに独立した複数の制限が適用され、最も厳しいものが優先されます。どの制限も、AI が正しくふるまうことを前提にしていません。

制限の層

  1. アカウントでのあなたの役割。オーナーと管理者はすべてを管理します。メンバーはマシンを表示し、AI クライアントを接続できます。独自の役割では、リクエストの承認や監査ログの閲覧など、個別の権限を付与します。グループはマシンを専有でき、その場合はグループのメンバーだけがそのマシンにアクセスできます。
  2. 接続。クライアントを承認するときに、そのスコープ、アクセスできるマシン、ポリシーを選びます。
  3. ポリシーのコマンドルールと承認。どのコマンドを実行し、どれを拒否し、どれを人の承認まで待たせるかを決めます。
  4. マシン自身の上限。マシン上の ceiling.toml は、そのマシンでどのポリシーが許可できる範囲にも上限を設けます。エージェントがこれをマシン上で適用するため、ゲートウェイであってもこれを超えることはできません。
  5. OS のアカウント。コマンドは、エージェントまたは SSH 接続が使うアカウントとして、そのアカウントの権限で実行されます。

ポリシー

ポリシーはアカウントに属し、接続ごとに選びます。ポリシーでは次の項目を設定します:

キー制御する内容
shelloff、sandboxed(Linux では Landlock、macOS では Seatbelt)、full のいずれか。Windows では off と full を使えます。
filesファイルツールが使えるパス。それぞれ読み取り専用か読み書き可能かを指定します。* ですべてを対象にします。
deny存在しないように見せるパス(鍵ファイルなど)。
gui画面ツール:off、observe、act のいずれか。指定したアプリだけに限定することもできます。
tunnel_targetsポート転送と Web 共有がアクセスできるアドレス。
commandsコマンドルール。
approval承認:常に承認が必要なツール、承認する人、リクエストが待機する時間。

すべてのアカウントには 2 つのポリシーが用意されています:full(シェルとファイルは無制限、画面はオフ)と read-only(シェルなし、ファイルは読み取り専用、一般的な機密ファイルは非表示、画面はオフ)です。画面ツールはポリシーでオンにしない限りオフで、それまでは AI に一覧表示すらされません。

コマンドルール

  • シェルモード(既定):ルールはパターンでコマンドに一致し、最初に一致したルールが適用されます。各ルールは allow、deny、approve、confirm のいずれかを指定します。ほかのコマンドの中に入れ子になったコマンド($(…)、sudo、bash -c、PowerShell の -EncodedCommand)も確認され、最も厳しい結果が優先されます。シェルは柔軟なため、シェルモードのルールはガードレールであり、セキュリティの境界ではありません。
  • 許可リストモード:リストにあるプログラムだけが、シェルを介さずに直接起動されて実行されるため、リストが厳格な境界になります。このモードでは、シェルセッションとターミナルは使えません。
  • 用意されたルールセット:linux-readonly、windows-readonly、no-destructive、deploy。
  • ルールはゲートウェイで確認され、マシン上のエージェントでも再度確認されます。

ポリシーとは別に、LetKite はシステムを消去するコマンド(たとえば rm -rf /、mkfs、ディスクへの直接書き込み)を拒否し、再起動、サービスの停止、パッケージの削除、再帰的な削除などのリスクの高いコマンドには confirm=true を求めます。AI は、確認する前に正確なコマンドをあなたに示すよう指示されます。

承認

コマンドルールが approve を指定している場合、またはポリシーの approval.tools にツールが記載されている場合、その呼び出しには人の承認が必要です。承認を必要とするよう設定できるツール:exec、exec_many、shell_run、job_start、write_file、delete_path、copy_between_hosts、transfer_start、gui_act、tunnel_open、terminal_open、wake_node、wake_device。

  • 承認する人:AI を接続した人(オーナーと管理者も承認できます)、任意の管理者、またはリクエストした人以外の人(二者確認)。
  • 承認の方法:承認者にはメールでリンクが届きます。LetKite の Web アプリをインストールしている場合は、スマートフォンにもプッシュ通知で届きます。承認にはパスキーまたは認証アプリのコードが必要ですが、却下には必要ありません。
  • 求められた内容のみ:承認の対象は 1 件のリクエスト(同じツール、マシン、引数)で、使えるのは 1 回だけです。
  • 有効期限:既定では 10 分です(ポリシーで 1 分〜24 時間の範囲で設定)。1 つの接続で同時に待機できるリクエストは最大 20 件です。

呼び出しが待機しているあいだ、AI クライアントには誰に承認を求めたかといつまで待つかを伝えるメッセージが届き、そのことをあなたに伝えるよう指示されます。AI クライアントは approval_wait ツールで待機し、その後まったく同じ引数で呼び出しを繰り返すことができます。却下されたリクエストは再試行してはいけません。

マシンの上限

各マシンには、そのマシンの管理者だけが編集できるローカルファイルがあります:Linux と macOS では /etc/letkite/ceiling.toml、Windows では %ProgramData%\letkite\ceiling.toml です。このファイルは、そのマシンでのシェル、ファイル、非表示のパス、画面へのアクセス、ポート転送などに上限を設けます。エージェントはすべてのリクエストをこのファイルと照らし合わせるため、仮にゲートウェイが侵害されたとしても、最終的な決定権はマシンの所有者にあります。