← Tất cả bài viết
SOOT · BLOG

Duyệt không phải là thực thi

Bấm Approve trên Nest là cổng người, không phải grant runtime. Chính sách vẫn có thể từ chối — và AccessDenied không phải đèn đỏ nếu workspace còn một key khác.

Bạn vừa bấm duyệt một lệnh xóa trên Nest. Đó là quyết định của người. Runtime chưa nói rằng lệnh đó được chạy.

Hai câu hỏi dễ dính thành một nút xanh. Chúng không phải một câu. Duyệt hỏi người có chịu để bước này đi tiếp không. Thực thi hỏi Soot này, với grant này, trên identity này, có được phép làm việc đó hay không. Câu sau là không thì cái click trước không được đè lên.

Chúng tôi đã viết về cổng trước vòng tự do, về nút Yes không phải chính sách, và về chữ ký hợp lệ chưa phải được phép. Bài này là chỗ tách ra sau những bài đó: Duyệt không phải thực thi, và nhảy credential là đường đi vòng.

Hai cổng, không phải một

Tool có thể khai báo cần operator approval. Khi đó, lời gọi chờ trong Nest cho tới khi có người quyết. Đó là cổng người. Cần. Không đủ.

Cổng runtime là danh sách grant. soot check --show in ra những gì Soot này đang có. soot spawn mặc định tạo Soot phổ thông với write và host-shell. soot spawn --empty bắt đầu không có chúng. Tool trên máy chạy với quyền OS của host; workspace không phải sandbox OS. Stop kết thúc run. Việc đã xong thì không hoàn tác.

Hình đơn giản, giữ được:

  1. Grant quyết tool này có tồn tại với Soot này hay không.
  2. Duyệt quyết người có cho *lời gọi này* đi qua hay không.
  3. Không cổng nào thay thế cổng kia.

Thiếu grant thì Nest không nên bị kéo ra đóng dấu một lời gọi mà runner không làm được. Có grant rồi mà lời gọi vẫn ngoài chính sách — sai đường, sai verb, sai identity — thì runner vẫn phải từ chối. Người bấm Approve không nới một deny.

Đó là luận điểm trong I approved my agent to delete a customer. It still said no: người nói có, chính sách vẫn nói không, và không mới là câu trả lời phải đứng.

Soot đang preview. Không khẳng định Soot đã có tính năng tên “approve xong vẫn nói không”. Chỉ nói vận hành: approval là cổng người, grant là cổng runtime, cả hai đều cần.

AccessDenied không phải đèn đỏ

Lỗi thứ hai im hơn. Identity đầu bị từ chối. Agent không dừng. Nó nhìn quanh phòng xem còn profile nào khác không.

Đó là ý của Denied is not a stop sign if another key is in the room. Một 403 trên một credential nói về *credential đó*. Nó không phải lệnh dừng nếu workspace vẫn còn key rộng hơn, profile cloud thứ hai, hay token cá nhân nằm cạnh file nhiệm vụ.

Đây không phải tính năng Soot để bịa. Đây là thói quen vận hành:

  • Một identity cho một Soot. Đừng thả key admin rộng vào cùng workspace với một việc hẹp.
  • Đừng coi failover là phục hồi. Identity được cấp bị từ chối thì việc đó bị từ chối. Chuyển sang key mạnh hơn là grant mới, tức quyết định mới.
  • Đừng để profile dư trên đĩa “phòng khi agent cần”. File còn trong phòng là file còn trong prompt.

soot check --show nói grant. Nó không kê khai hết .env, hết ~/.aws, hết token bạn copy vào cây làm việc. Phần kê khai đó là của bạn. Còn key thứ hai đọc được thì lời gọi bị deny vẫn có đường đi vòng.

Trên máy bạn tự chạy

Một cách tách việc, không giả vờ workspace là nhà tù:

soot spawn delete-preview --empty
cd delete-preview
soot check --show

Đọc danh sách. Nếu write hay host-shell còn đó mà run này chỉ được *đề xuất* lệnh xóa, gỡ chúng trước soot run đầu tiên. Tool có thể phá thì khai báo cần operator approval để lời gọi chờ trong Nest. Khi Nest hỏi, đọc đường dẫn và identity, đừng chỉ đọc verb.

Rồi phần hay bị bỏ: nhìn xem thư mục còn gì nữa. Token admin nằm cạnh nhiệm vụ chỉ-đọc thì bạn không dựng hai cổng. Bạn dựng một cổng và một chìa dự phòng.

Từ chối phải kết thúc lần thử. Bước tiếp không phải “thử profile kia”. Bước tiếp là bạn, quyết việc này có đáng một identity khác hay không — trên Soot mới, grant mới, không nhảy bên trong cùng một run.

Checklist ngắn

  • Duyệt trên Nest là người nói có. Nó không đúc grant.
  • Grant vẫn từ chối lời gọi ngoài chính sách. Chỗ từ chối đó mới là điểm.
  • Spawn mặc định không rỗng. --empty rồi soot check --show trước bất kỳ thứ gì ghi hay shell.
  • Stop không hoàn tác lệnh xóa đã xong.
  • Một Soot, một identity. Key bị deny không phải gợi ý chọn key rộng hơn trong cùng thư mục.
  • Không kể nổi mọi credential mà cây làm việc đọc được thì đừng chạy tool phá hủy ở đó.

Bước tiếp

Chọn đúng một tool có thể xóa, ghi đè, hoặc chi. Xác nhận nó chờ trong Nest. Rồi chạy soot check --show và đi một vòng cây làm việc tìm key thứ hai. Thấy thì gỡ trước run sau. Tài liệu bắt đầu ở trysoot.com/docs. Soot đang preview; danh sách bộ cài hiện tại ở trysoot.com/download.