Harness Academy
Tài liệu gốc 37 3 phútTiếng Việt + English
docs/notes/sandboxing_seatbelt_bwrap.mdXem bản gốc
Ngôn ngữ bài đọc
Bản dịch tiếng Việt

Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.

Seatbelt/bwrap là gì?

Trong ngữ cảnh của Node.js, Seatbelt và bwrap không phải là các mô-đun JavaScript tích hợp hoặc API Node cốt lõi. Thay vào đó, chúng là các nguyên mẫu hộp cát cấp hệ điều hành mà các ứng dụng Node.js hiện đại—đặc biệt là các AI coding assistant và công cụ CLI—dựa vào để thực thi mã hoặc lệnh không đáng tin cậy một cách an toàn thông qua các tiến trình con.

Vì các công cụ như AI agent (ví dụ: Claude Code, OpenAI Codex hoặc khung Mastra) cần chạy các lệnh đầu cuối trên máy cục bộ của bạn nên chúng sử dụng các công cụ này để cách ly môi trường thực thi và ngăn các tập lệnh không đáng tin cậy truy cập vào toàn bộ hệ thống tệp của bạn, sửa đổi cài đặt hệ thống hoặc rò rỉ bí mật.

Dưới đây là bảng phân tích về từng công cụ và cách chúng hoạt động:

1. Thắt dây an toàn (macOS)

Dây an toàn là tên mã nội bộ cho cơ chế hộp cát ứng dụng gốc của macOS.

  • Cách thức hoạt động: Nó sử dụng sandbox-exec lệnh cùng với các cấu hình cấu hình được tạo động (cấu hình Dây an toàn) được viết bằng ngôn ngữ giống như Đề án.
  • Công dụng: Nó chặn các cuộc gọi hệ thống ở cấp kernel. Khi ứng dụng Node.js tạo ra một quy trình được đóng hộp cát trên máy Mac, Dây an toàn đóng vai trò là người bảo vệ, thực thi nghiêm ngặt những thư mục cụ thể nào mà quy trình có thể đọc hoặc ghi vào (ví dụ: cho phép truy cập vào thư mục dự án hiện tại nhưng chặn ~/.ssh hoặc /etc) và hạn chế quyền truy cập mạng vào các cổng localhost cụ thể.

2. bwrap / Bubblewrap (Linux & WSL2)

Bọc bong bóng (bwrap) là một công cụ hộp cát cốt lõi cho môi trường Linux.

  • Cách thức hoạt động: Nó tạo ra các môi trường không có đặc quyền, bị hạn chế sử dụng không gian tên người dùng và gắn kết Linux.
  • Công dụng: Thay vì yêu cầu quyền truy cập Docker hoặc root, bwrap quay một thùng chứa nhẹ, biệt lập cho một quy trình duy nhất. Các ứng dụng nút sử dụng nó để chỉ gắn kết các tệp dự án cần thiết, các tệp nhạy cảm với bóng (bằng cách gắn hệ thống tệp tạm thời trống lên chúng) và xóa các không gian tên mạng để mã hộp cát không thể thực hiện các yêu cầu web bên ngoài trái phép.

Cách chúng được sử dụng trong Hệ sinh thái Node.js

Nếu bạn đang xem các gói như @anthropic-ai/sandbox-runtime hoặc xây dựng môi trường thực thi cục bộ an toàn, Node đóng vai trò là người điều phối. Quy trình làm việc thường trông như thế này:

  1. Cấu hình: Ứng dụng Node xác định một chính sách nghiêm ngặt (ví dụ: "Chỉ cho phép đọc/ghi trong ./workspace, chặn truy cập mạng").
  2. Phát hiện: Ứng dụng phát hiện hệ điều hành chủ. Nếu là macOS, nó sẽ tạo cấu hình Dây an toàn. Nếu là Linux, nó sẽ xây dựng một mảng bwrap lý lẽ.
  3. Thực thi: Nút child_process.spawn() được sử dụng để thực thi lệnh, nhưng thay vì chạy bash script.sh trực tiếp, nó bao bọc nó:
  • macOS: spawn('sandbox-exec', ['-f', 'profile.sb', 'bash', 'script.sh'])
  • Linux: spawn('bwrap', ['--ro-bind', '/', '/', '--bind', './workspace', './workspace', 'bash', 'script.sh'])

So sánh tóm tắt

Tính năngThắt dây an toànbwrap (Bong bóng)
Hệ điều hành mục tiêumacOSLinux, WSL2
Công nghệ cơ bảnChặn cuộc gọi tòa nhà cấp hạt nhânKhông gian tên Linux (Người dùng, Mount, Mạng)
Triển khai CLIsandbox-execbwrap
Yêu cầu thiết lậpĐược tích hợp sẵn theo mặc địnhThường yêu cầu cài đặt gói (ví dụ: apt install bubblewrap)

Nói tóm lại, nếu bạn thấy các thuật ngữ này trong repository Node, thì các nhà phát triển đang triển khai tính năng ngăn chặn an toàn, gốc, ở cấp độ hệ điều hành để đảm bảo rằng các tiến trình con được sinh ra không thể thoát khỏi ranh giới được chỉ định của chúng.

Mục lục nguồn