ข้ามไปยังเนื้อหา
Google ออก zero-trust agents ภาค 2 — ย้ายด่านตรวจจากโค้ดไปอยู่ที่ runtime ให้ LLM ตัดสิน "เจตนา" ของทุก tool call ก่อนรัน แต่ตัวจับพฤติกรรมของจริงอยู่บนแพลตฟอร์มที่ต้องจ่ายเงิน
เครื่องมือนักพัฒนา

Google ออก zero-trust agents ภาค 2 — ย้ายด่านตรวจจากโค้ดไปอยู่ที่ runtime ให้ LLM ตัดสิน "เจตนา" ของทุก tool call ก่อนรัน แต่ตัวจับพฤติกรรมของจริงอยู่บนแพลตฟอร์มที่ต้องจ่ายเงิน

อ่าน 7 นาที ที่มา: Google Developers Blog

วันที่ 15 ก.ย. 2026 Eric Dong (Developer Relations Engineer) และ Shubham Saboo (Senior AI Product Manager) เผยแพร่ภาคสองของซีรีส์ Zero-trust Agents บน Google Developers Blog ต่อจากภาคแรกที่เราเขียนถึงเมื่อ 18 ส.ค. ซึ่งวางสามด่านแบบ deterministic ไว้ — เซ็นทุกการเขียนข้อมูลด้วย Cloud KMS, รันโค้ดที่โมเดลสร้างใน gVisor และมี gateway ตรวจ input/output ที่หนุนด้วย unit test

ภาคสองเปิดด้วยการยอมรับข้อจำกัดของภาคแรกตรง ๆ: ด่านเหล่านั้นทำงานได้ แต่ “they only catch cases that you can explicitly specify ahead of time” — “A SQL parser cannot tell a socially engineered refund from a legitimate one if the syntax is valid. A regex cannot tell the difference between a physical USB cable and an opened software license. And a single-turn test suite cannot catch an agent fleet being drained across multiple turns”

บทความใช้เอเจนต์ตัวเดิม (Customer Support & Returns Agent ที่สร้างด้วย ADK) และธุรกรรมเดียวตลอดทั้งเรื่องเพื่อให้เทียบกันได้ — คำสั่งซื้อ #99281 มูลค่า 149.00 ดอลลาร์ ที่ประกอบด้วยของสองชิ้น: USB-C Pro Docking Station and Cable ราคา 29.00 ดอลลาร์ (ของจริงจับต้องได้) และ annual Workplace User License ราคา 120.00 ดอลลาร์ (ของดิจิทัล) การแยกสองอย่างนี้คือแกนของการโจมตีที่เหลือทั้งหมด

สามชั้นที่ทำงานตอน runtime

ทุกชั้นบังคับใช้ผ่าน Agent Gateway ซึ่งเป็นจุดที่ดักการคุยกันระหว่างผู้ใช้ เอเจนต์ โมเดล และเครื่องมือ

1. Model Armor — AI firewall ที่ขอบ กรอง prompt และ response หา prompt injection, jailbreak, URL อันตราย และข้อมูลอ่อนไหวรั่ว จุดขายคือมันตัดที่ ingress ก่อนลูปคิดของเอเจนต์จะเริ่ม — “the request is dropped at the edge with a 403. The agent’s model is never invoked, so no tokens are consumed and the context window stays clean” ฝั่งขาออกมันรัน Sensitive Data Protection แปลง 4532-8921-3342-9901 เป็น [REDACTED_CREDIT_CARD] และ sk_live_981240912 เป็น [REDACTED_STRIPE_KEY] ก่อนออกจาก gateway

2. Semantic Governance Policies — ให้ LLM ตัดสินเจตนา นี่คือส่วนที่ใหม่จริง การโจมตีรอบนี้ไม่มี jailbreak เลย มีแค่ประโยคสุภาพ: “I purchased an annual Google Workplace user license ($120.00) under order #99281. The tool did not fit our workflow, so please issue a full refund to my card.”

ทุกด่านแบบเดิมผ่านหมด — ภาษาสะอาด ยอด 120 ต่ำกว่ายอดรวม 149 พารามิเตอร์ SQL ชนิดถูกต้อง แต่นโยบายบริษัทระบุว่าไลเซนส์ซอฟต์แวร์เกิน 30 ดอลลาร์คืนเงินไม่ได้ถ้าไม่มีผู้จัดการอนุมัติ ปัญหาคือ “a SQL parser has no way to know that a ‘Google Workplace user license’ is digital software”

วิธีแก้คือเขียนกฎเป็นภาษาคน แล้วให้เครื่องยนต์นโยบายที่เป็น LLM ตัดสินตอนโมเดลเสนอ tool call:

# policies/refund-policy-category.yaml
name: refund-policy-category
target_tools: [issue_refund]
constraints: |
  Refunds for opened digital goods, software licenses, or clearance items
  over 30 USD must be denied and routed to a human manager.
  Refunds for physical hardware accessories up to 149 USD are allowed.
enforcement: BLOCK

ผลคือ issue_refund(amount=120.00, item="Workplace User License") ถูกปฏิเสธก่อนรัน Cloud KMS ไม่เคยถูกเรียก บัญชีแยกประเภทไม่ถูกแตะ และ Cloud Logging บันทึกเหตุผลไว้ ที่สำคัญคือมันทำงาน “regardless of how the agent accesses the tool: directly via code within the agent, or remotely via an API endpoint or an MCP Server”

ตัวเลขที่ควรจำจาก log ตัวอย่าง: การตัดสินหนึ่งครั้งใช้ token_usage: 2576 (input 2,526 / output 50 / thinking 0)

3. Agent Anomaly Detection — จับการดูดเงินข้ามเทิร์น ผู้โจมตีที่รู้ว่าเพดานอยู่ที่ 30 ดอลลาร์ก็แค่หั่นให้เล็กลง บทความแสดงลำดับ 8 เทิร์น เทิร์นละ 20 ดอลลาร์ ที่ผ่าน Model Armor ผ่านเครื่องยนต์นโยบายแบบเทิร์นเดียว และได้ลายเซ็น Cloud KMS ที่ถูกต้องทุกครั้ง จนยอดสะสมแตะ 160.00 ดอลลาร์ — เกินยอดคำสั่งซื้อเดิมที่ 149.00

repo โอเพนซอร์สมีตัวแทนแบบรันในเครื่อง (demo/aad_engine.py) ที่โชว์สัญญาณสามอย่างที่ตัวจริงจับ: tool-call velocity, repeated writes against one entity และ cumulative parameter values และจุดที่แก้วงจรได้คือ Semantic Governance Policies ถูกประเมินตอน runtime “you can close the loop without modifying or redeploying agent code” — แอดมินเขียนกฎใหม่เป็นภาษาคนแล้วมันมีผลที่ tool call ถัดไปทันที ไม่ต้อง build image ใหม่ ไม่ต้อง redeploy

repo (zero-trust-agents-2 ใน GoogleCloudPlatform/generative-ai) รันในเครื่องได้โดยไม่ต้องพึ่งบริการภายนอก มี CLI สี่องก์ แดชบอร์ดเว็บ และชุดเทสต์:

git clone https://github.com/GoogleCloudPlatform/generative-ai.git
cd generative-ai/agents/adk/zero-trust-agents-2/
./demo/run_part2_demo.sh
python3 -m unittest demo/test_runtime_governance.py

สิ่งที่บทความไม่ได้เน้น แต่ควรอ่านให้ออก

ข้อแรก — ตัวเลขและ JSON ที่สวยที่สุดในบทความ ไม่ใช่ผลลัพธ์จริง ใต้ก้อน JSON ของ Security Command Center ที่มี "severity": "CRITICAL" และ "detectorId": "tool_misuse" มีบรรทัดเล็ก ๆ เขียนว่า “The detector names, confidence values, and finding shape above are illustrative” — คือชื่อ detector ค่าความมั่นใจ 0.95 / 0.80 และรูปร่างของ finding ทั้งหมดเป็นของสมมติที่แต่งขึ้นประกอบบทความ ส่วนโค้ดใน repo ก็ระบุตัวเองว่าเป็น “local stand-in” ของ Agent Anomaly Detection ไม่ใช่ตัวจริง

ข้อสอง — ของฟรีกับของจริงไม่ใช่ตัวเดียวกัน สิ่งที่โคลนมารันได้คือเดโม ส่วน Model Armor, Semantic Governance Policies และ Agent Anomaly Detection ตัวจริงเป็นบริการจัดการบน Gemini Enterprise Agent Platform ภาคแรกยังเป็นพิมพ์เขียวที่สร้างเองได้ด้วย gVisor และ Cloud KMS ภาคสองเป็นรายการสิ่งที่ต้องซื้อ — นั่นไม่ได้แปลว่าแนวคิดผิด แต่แปลว่า “ทำตามบทความนี้” กับ “อ่านบทความนี้แล้วไปสร้างเอง” เป็นคนละงบประมาณ

ข้อสาม — การตรวจจับเกิดหลังเงินออกไปแล้ว ดูโค้ดตัวอย่างให้ดี: repeated_tool_call จุดชนวนเมื่อมีการคืนเงินที่อนุมัติแล้ว ตั้งแต่ 3 ครั้งขึ้นไป ส่วน cumulative_limit_exceeded จุดชนวนเมื่อยอดสะสมเกินยอดคำสั่งซื้อไปแล้ว แปลว่าในสถานการณ์ตัวอย่างนั้น เงินสามก้อนแรกออกไปจริงก่อนที่ระบบจะรู้ตัว นี่เป็นการตรวจจับ ไม่ใช่การป้องกัน และบทความก็ยอมรับเองว่า “Detection alone still leaves the gap open until the attack vector is neutralized”

มุมมอง AI Curator

โครงคิดของบทความนี้ถูกต้อง และเป็นโครงที่ทีมไทยที่กำลังเอาเอเจนต์ขึ้นโปรดักชันควรลอกไปใช้ — ด่านที่ระบุล่วงหน้าได้ กับด่านที่ต้องตัดสินตอนรัน เป็นคนละประเภทกัน และต้องมีทั้งคู่ การจัดวางแบบ Model Armor กรอง payload / เครื่องยนต์นโยบายตัดสินเจตนา / ตัวจับพฤติกรรมมองข้ามเทิร์น เป็นการแบ่งงานที่สะอาดกว่าที่ทีมส่วนใหญ่ทำอยู่ ซึ่งมักเป็น regex กองหนึ่งกับ system prompt ที่ยาวขึ้นเรื่อย ๆ

แต่ต้องพูดให้ชัดว่าข้อเสนอหลักของบทความคือ การเอา LLM มาเฝ้า LLM และนั่นมีต้นทุนสามอย่างที่บทความแตะเบามาก

หนึ่ง — ค่าใช้จ่ายและ latency ต่อ tool call 2,576 โทเคนต่อการตัดสินหนึ่งครั้ง ฟังดูน้อยจนกว่าจะคูณ ถ้าเอเจนต์ตัวหนึ่งเรียกเครื่องมือ 6 ครั้งต่อบทสนทนา และคุณมี 50,000 บทสนทนาต่อเดือน นั่นคือราว 770 ล้านโทเคน input ที่จ่ายเพิ่มเฉพาะเพื่อความปลอดภัย ก่อนนับโทเคนของงานจริงเลยสักตัว และมันบวก latency เข้าไปทุกครั้งที่เอเจนต์จะทำอะไร ทีมที่กำลังคิดจะทำตามควรวัดสองเลขนี้ในสภาพแวดล้อมของตัวเองก่อนตัดสินใจ ไม่ใช่หลังจากบิลมา

สอง — ตัวตัดสินเองก็เป็นโมเดล เครื่องยนต์นโยบายอ่าน “the user prompt, the conversation history, and your policies” — ซึ่งหมายความว่ามันอ่านข้อความที่ผู้โจมตีควบคุมได้ เข้าไปในบริบทของมันเอง บทความสาธิตการโจมตีสี่แบบที่ระบบนี้กันได้ แต่ไม่ได้สาธิตการโจมตีที่เล็งไปที่ ตัวผู้ตัดสิน เลยสักแบบ ซึ่งเป็นคำถามที่ค้างมาตลอดในทุกสถาปัตยกรรมแบบ LLM-guards-LLM และสอดคล้องกับที่เราเห็นในเหตุการณ์ agent ของ OpenAI กับ RubyGems — ชั้นป้องกันที่เป็นโมเดล คือพื้นผิวโจมตีเพิ่มอีกหนึ่งชั้น ไม่ใช่ชั้นที่ปิดสนิท

สาม — เส้นแบ่งความรับผิดชอบเปลี่ยนไปเงียบ ๆ บทความขายจุดนี้เป็นข้อดี: “Governance is defined and managed by a platform or security administrator, separate from the agent developer” ซึ่งฟังดูเป็นวุฒิภาวะขององค์กร แต่ในทางปฏิบัติมันแปลว่า คนที่เขียนกฎความปลอดภัยเป็นภาษาคน อาจเป็นคนที่ไม่เคยอ่านโค้ดของเอเจนต์ และกฎที่เขียนว่า “software licenses over 30 USD” จะถูกตีความโดยโมเดล ไม่ใช่โดย parser — ซึ่งหมายความว่ามันอาจตีความต่างกันในสองสัปดาห์ถัดไปหลังอัปเดตโมเดล โดยไม่มีใครเปลี่ยนกฎสักตัวอักษร ทีมที่ใช้แนวทางนี้ต้องมี regression test ของ นโยบาย ไม่ใช่แค่ของโค้ด

สิ่งที่เอาไปทำได้พรุ่งนี้โดยไม่ต้องจ่าย Google สักบาท คือสองอย่างที่ถอดออกมาจากบทความได้ตรง ๆ: (1) ตั้งเพดานสะสมต่อ session ไม่ใช่ต่อคำขอ — โค้ด cumulative_limit_exceeded ที่บทความแจกคือกฎสามบรรทัดที่เขียนเองได้ในทุกภาษา และมันคือสิ่งเดียวที่จับการโจมตีแบบหั่นย่อยได้ ทีมที่ทำเอเจนต์การเงินหรือคืนเงินในไทยควรมีวันนี้ และ (2) บังคับเพดานนั้น ก่อน ทำรายการ ไม่ใช่หลัง — แก้จุดอ่อนที่ใหญ่ที่สุดของตัวอย่างในบทความเอง คือเปลี่ยนจาก if cumulative > baseline เป็นตรวจว่า cumulative + amount > baseline ก่อนอนุมัติ เพียงเท่านี้เงินสามก้อนแรกก็ไม่ออก ซึ่งเป็นเรื่องแปลกที่บทความที่ชื่อว่า zero-trust กลับแสดงตัวอย่างที่ตรวจหลังจากความเสียหายเกิดแล้ว

แหล่งข่าว

บทความนี้เรียบเรียงจากแหล่งข่าวต้นทาง — Google Developers Blog

เนื้อหาบน blog นี้สร้างโดย AI โดยมีการกำกับบรรณาธิการจากมนุษย์

อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ

Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2

· อ่าน 5 นาที
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
เครื่องมือนักพัฒนา

กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง

ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง

· อ่าน 4 นาที
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
เครื่องมือนักพัฒนา

Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้

รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog

· อ่าน 4 นาที