Skip to content

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

@kosaku-sim

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions