Skip to content

NemoClaw + LiteLLM 統合: セキュアな組織向けBedrock環境の構築 #1

Description

@kosaku-sim

目的

AWS CloudFormation テンプレートに NVIDIA NemoClaw(OpenShell)サンドボックスと LiteLLM プロキシを統合し、カーネルレベルで隔離されたセキュアな AI エージェント基盤を構築する。

アーキテクチャ

Browser → SSM Port Forward → host:18789 (SSH LocalForward)
  → Sandbox:18789 (OpenClaw Gateway)
  → https://inference.local (OpenShell managed inference proxy)
  → host.openshell.internal:4000 (LiteLLM on host)
  → Amazon Bedrock (IAM Role)

コンポーネント構成

コンポーネント 実行場所 役割
OpenClaw sandbox 内 AI エージェント。チャット、コード実行、ツール呼び出し
OpenShell k3s クラスタ (Docker) サンドボックスのライフサイクル管理、inference proxy、ネットワークポリシー
LiteLLM ホスト OS (systemd) OpenAI API 形式 → Bedrock API のプロトコル変換
Amazon Bedrock AWS LLM推論(Nova Lite 2、Claude 等)

セキュリティモデル(3層のLinuxカーネル隔離)

  • Landlock LSM: /sandbox/tmp のみ書き込み可。ホストの SSH キーや .env は不可視
  • seccomp-BPF: mount, ptrace, reboot 等の危険なシステムコールをブロック
  • Network Namespace: デフォルトで全アウトバウンド通信を遮断。https://inference.local のみ許可
  • クレデンシャル注入: API キーはホスト側の OpenShell プロキシが保持。sandbox 内には存在しない

従来方式(EnableSandbox=false)との比較

項目 従来(Docker sandbox) 本実装(NemoClaw sandbox)
OpenClaw の場所 ホストに直接インストール (npm, 22GB) sandbox イメージに内蔵(~5GB)
コード実行の隔離 OpenClaw 内蔵の Docker sandbox(アプリレベル) Landlock + seccomp + Network Namespace(カーネルレベル)
ネットワーク隔離 Docker network(インターネット到達可能) デフォルト全遮断、allowlist のみ
API キーの保護 コンテナ内の環境変数に存在 sandbox 内に存在しない(プロキシが注入)
LLM アクセス経路 OpenClaw → Bedrock(直接) OpenClaw → inference.local → LiteLLM → Bedrock

NemoClaw sandbox は OpenClaw 自体をカーネルレベルで隔離するため、従来の Docker sandbox(Docker-in-Docker)は不要。

実装内容

scripts/setup-nemoclaw-litellm.sh — セットアップスクリプト

  1. inotify 制限設定(k3s 安定動作に必須)
  2. LiteLLM プロキシのインストールと systemd サービス化
  3. OpenShell CLI のインストール(NemoClaw installer 経由)
  4. OpenShell ゲートウェイ起動
  5. host.openshell.internal の IP 修正(Docker network gateway IP を動的検出)
  6. LiteLLM を OpenAI 互換プロバイダーとして登録 + inference route 設定
  7. Sandbox policy 作成
  8. サンドボックス作成 + CRD hostAliases パッチ + Pod 再作成
  9. SSH 経由で OpenClaw 設定配信 + ゲートウェイ起動
  10. SSH LocalForward の systemd サービス化

clawdbot-bedrock.yaml — CloudFormation テンプレート

  • EnableSandbox パラメータ(デフォルト: true)で NemoClaw+LiteLLM を制御
  • sandbox mode 時に inotify 制限を自動設定
  • EnableSandbox=false は従来通り Bedrock 直接接続

ドキュメント

  • SECURITY.md, TROUBLESHOOTING.md, README.md, DEPLOYMENT.md を更新

対象ファイル

  • clawdbot-bedrock.yaml (Linux template)
  • scripts/setup-nemoclaw-litellm.sh (セットアップスクリプト)
  • 関連ドキュメント (README.md, DEPLOYMENT.md, SECURITY.md, TROUBLESHOOTING.md)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions