概要

SSH-Frontière概要

課題

Linuxサーバーにおいて、SSHサービスアカウント(CIランナー、AIエージェント、メンテナンススクリプト)は通常、ログインシェルとして/bin/bashを使用しています。これにはいくつかの問題があります:

従来のソリューション(authorized_keyscommand=、bashラッパースクリプト、SSH踏み台サーバー)にはそれぞれ限界があります:脆弱、監査が困難、またはニーズに対して過大。

SSH-Frontièreが行うこと

SSH-Frontièreは置換ログインシェルです。sshdとシステムコマンドの間に位置します:

SSHクライアント
    |
    v
sshd(鍵認証)
    |
    v
ssh-frontiere(ログインシェル)
    |
    ├── TOML設定に対してコマンドを検証
    ├── アクセスレベルを確認(read / ops / admin)
    ├── 許可されたコマンドを実行
    └── 構造化JSONで結果を返却

各SSH接続は新しいssh-frontiereプロセスを作成し、以下を行います:

  1. バナーとサーバー機能を表示
  2. クライアントヘッダを読み取り(認証、セッションモード)
  3. コマンドを読み取り(ドメイン アクション [引数]、プレーンテキスト)
  4. TOMLホワイトリストに対して検証
  5. 許可された場合は実行、そうでなければ拒否
  6. JSONレスポンスを返して終了

プログラムは同期的かつ一時的です:デーモンなし、サービスなし、永続的な状態なし。

SSH-Frontièreが行わないこと

具体的なユースケース

CI/CD自動化

Forgejo Actionsランナーが、SSH経由でアプリケーションをデプロイする場合:

# ランナーがSSH経由でコマンドを送信
{
  echo "forgejo deploy version=stable"
  echo "."
} | ssh forge-runner@server

SSH-Frontièreは、ランナーがadminレベルを持っていること、deployアクションがforgejoドメインに存在すること、version=stable引数が許可された値であることを確認した上で、設定されたデプロイスクリプトを実行します。

AIエージェント

Claude Codeエージェントが、制限された権限でサーバーを操作する場合:

# エージェントが利用可能なコマンドを発見
{ echo "list"; echo "."; } | ssh agent-ia@server

# エージェントが特定のアクションを実行
{ echo "infra healthcheck"; echo "."; } | ssh agent-ia@server

エージェントは、設定されたreadレベルのアクションにのみアクセスできます。helplistコマンドにより、利用可能なアクションとそのパラメータを発見できます — ネイティブに解析可能なJSON形式です。

自動メンテナンス

cronスクリプトがSSH経由でバックアップを実行する場合:

# 夜間バックアップ
{ echo "forgejo backup-config"; echo "."; } | ssh backup@server

# デプロイ後の通知
{ echo 'notify send message="Deployment complete"'; echo "."; } | ssh notify@server

通知

Slack、Olvid、メールなどの通知を標準的なSSH-Frontièreアクションとしてトリガーする場合:

{ echo 'notify slack channel=ops message="Build OK"'; echo "."; } | ssh notify@server

なぜSSH-Frontièreを選ぶのか

authorized_keysのbashスクリプトではなく?

authorized_keyscommand=オプションはコマンドの強制を可能にしますが:

SSH-Frontièreは宣言的設定、RBAC、JSONログ、インジェクションを排除する文法パーサーを提供します。

…SSH踏み台サーバー(Teleport、Boundary)ではなく?

SSH踏み台サーバーは人間のサーバーアクセスを管理するために設計されています:

SSH-Frontièreはサービスアカウントのために設計された軽量コンポーネント(約1 MB)です:対話セッションなし、プロキシなし、コマンド検証のみ。

sudo単体ではなく?

sudoは権限昇格を制御しますが:

SSH-Frontièreとsudoは補完的です:SSH-Frontièreは受信コマンドを検証し、sudoはシステム権限を制御します。これは多層防御の第2層と第3層です。

プロダクトの価値

SSH-Frontièreは、SSHサービスアクセスに宣言的ガバナンスをもたらします:

  1. すべてが1つのTOMLファイルに集約:ドメイン、アクション、引数、アクセスレベル。スクリプトに分散したロジックなし。

  2. 即座のデプロイ:設定全体が1つのTOMLファイルに集約されているため、新しいバージョンのデプロイは容易です。各SSH接続は設定を再読み込みする新しいプロセスを作成します — 変更は現在のセッション終了時、または新しいクライアントに対しては即座に反映されます。

  3. デフォルトでゼロトラスト:明示的に設定されていないものは実行されません。シェルなし、インジェクション不可能。

  4. 監査可能:すべての試行(許可または拒否)が、タイムスタンプ、コマンド、引数、レベル、結果を含む構造化JSONでログに記録されます。

  5. LLM対応:AIエージェントはhelp/listで利用可能なアクションを発見し、構造化JSONプロトコルで対話できます — フリーテキストの解析は不要です。

  6. ヨーロッパ発のオープンソース:EUPL-1.2ライセンス、フランスで開発、プロプライエタリエコシステムへの依存なし。


詳しくは:インストール | アーキテクチャ | セキュリティ | 代替手段