เอกสารสรุปทางเทคนิคของ Workstation ฉบับนี้ครอบคลุมความปลอดภัยและการยืนยันตัวตนของ agentic AI: การปกป้อง enterprise agent ที่เรียกใช้เครื่องมือผ่าน MCP (Model Context Protocol) ด้วย OAuth 2.1 การวาง MCP endpoint ความเสี่ยงสูงไว้หลัง VPN / เครือข่ายส่วนตัว และการจัดการ credential ของเครื่องมือด้วย HashiCorp Vault — dynamic secrets, leases, การหมุนเวียนอัตโนมัติ และการเพิกถอนทันที พร้อมแนะนำการตั้งค่าที่สอดคล้องกับมาตรฐานอุตสาหกรรมสำหรับ Claude, OpenAI และ Cursor
- ปัญหา: Agent ที่ใช้คีย์เครื่องมืออายุยาวแบบคงที่ + MCP สาธารณะ = การกระจาย credential และการเคลื่อนที่ด้านข้าง
- Auth: Remote MCP = OAuth 2.1 resource server + RFC 9728 PRM + RFC 8707 audience; PKCE เป็นข้อบังคับ
- องค์กร: ควรใช้ MCP Enterprise-Managed Authorization (EMA / ID-JAG) ผ่าน IdP ขององค์กร
- เครือข่าย: MCP และ Vault ภายในอยู่บน VPN/private link; egress allowlist ตามเครื่องมือ
- Secrets: Vault dynamic secrets + lease TTL; หมุนเวียน static roles อัตโนมัติ; เพิกถอนเมื่อจบเซสชัน
- แยกชั้น: LLM provider API keys != MCP access tokens != backend tool secrets
แหล่งข้อมูล: MCP Authorization, Vault leases, Vault AI agent validated pattern, Claude connector auth ตรวจสอบเอกสารผู้ขายปัจจุบันก่อนนำไปใช้งานจริง
1. Threat model สำหรับ enterprise agents
Agent คือ principal ของระบบอัตโนมัติที่มีสิทธิพิเศษ รูปแบบความล้มเหลวทั่วไป:
- Secret sprawl — API keys ใน MCP JSON,
.envที่ commit ลง git หรือวางในพรอมต์ - Token substitution — access token ที่ออกสำหรับเซิร์ฟเวอร์ A ถูกเซิร์ฟเวอร์ B ยอมรับ (ขาด audience binding)
- เครื่องมือที่ขอบเขตกว้างเกิน — MCP เดียวสามารถเขียนฐานข้อมูล prod และเปิด firewall ในเซสชันเดียวกัน
- OBO ที่ไม่ถูกตรวจสอบ — agent ทำงานโดยไม่เชื่อมโยงการกระทำกับตัวตนของมนุษย์
- Public MCP — เครื่องมือภายในเข้าถึงได้จากอินเทอร์เน็ตโดยไม่มี VPN หรือ private link
การควบคุมต้องครอบคลุมตัวตน (ใคร), การอนุญาต (เครื่องมือใด), secrets (ด้วย credential อะไร) และเครือข่าย (จากที่ใด)
2. การยืนยันตัวตน MCP: มาตรฐานอุตสาหกรรม
สำหรับ remote MCP แบบ HTTP สเปกสอดคล้องกับ OAuth 2.1:
- MCP server = OAuth resource server; ไคลเอนต์ส่ง
Authorization: Bearer - PKCE เป็นข้อบังคับ; ห้ามใช้ implicit grant
- เซิร์ฟเวอร์ MUST เผยแพร่ Protected Resource Metadata (RFC 9728) เพื่อให้ไคลเอนต์ค้นพบ authorization server
- ใช้ Resource Indicators (RFC 8707) เพื่อให้โทเค็นผูก audience กับ MCP server นั้น
- Authorization Server Metadata (RFC 8414) และ/หรือ OIDC discovery สำหรับความสามารถของ AS
- แนะนำ Dynamic Client Registration (RFC 7591) เมื่อไคลเอนต์ต้อง onboard โดยไม่มี client ID แบบแมนนวล
# Protected Resource Metadata (conceptual)
{
"resource": "https://mcp.internal.example/mcp",
"authorization_servers": ["https://auth.example.com"],
"scopes_supported": ["mcp:tools", "mcp:resources"]
}
STDIO / local MCP แตกต่าง: ควรใช้ environment credentials ที่ฉีดโดย Vault Agent — อย่าบังคับ browser OAuth กับเครื่องมือเดสก์ท็อปทุกตัว Remote/public MCP ควรใช้งาน OAuth 2.1
2.1 Enterprise-Managed Authorization (zero-touch)
ส่วนขยาย MCP Enterprise-Managed Authorization ให้ IdP ขององค์กร (Okta, Entra ID ฯลฯ) มอบสิทธิ์เข้าถึง MCP servers ที่อนุมัติแล้วตอน SSO โดยใช้ ID-JAG (Identity Assertion JWT Authorization Grant) หลีกเลี่ยงความเหนื่อยล้าจากการยินยอมทีละเซิร์ฟเวอร์ นำ EMA มาใช้กับ Claude / IDE / กองเรือ agent ทั้งองค์กร
3. การผสาน VPN และ private MCP
OAuth ยืนยันตัวตนไคลเอนต์; มันไม่ได้แทนที่การแยกเครือข่าย
- โฮสต์ MCP servers ภายในและ Vault บน private CIDR (VPN, PrivateLink, เมช Tailscale/WireGuard หรือ service mesh mTLS)
- ผูก MCP listeners กับอินเทอร์เฟซส่วนตัว; บล็อกพอร์ต 443 สาธารณะ เว้นแต่ผลิตภัณฑ์ตั้งใจเปิดสู่สาธารณะ
- ใช้ egress allowlists จาก agent runtime: เฉพาะ API/MCP hosts ที่อนุมัติ
- แยกระนาบ: แล็ปท็อปนักพัฒนาบน corp VPN สำหรับ Cursor; agent ฝั่งเซิร์ฟเวอร์ใน VPC โดยไม่มี internet MCP ยกเว้น SaaS ที่อนุมัติ
รูปแบบ: VPN สำหรับการเข้าถึง + OAuth สำหรับการอนุญาต + Vault สำหรับ secrets
4. HashiCorp Vault สำหรับ agent secrets
คีย์เครื่องมืออายุยาวแบบคงที่ไม่เข้ากับรัศมีความเสียหายของ agent Vault ให้:
4.1 Dynamic secrets + leases
ทุก dynamic secret คืนค่า lease_id และ TTL ผู้บริโภคต้องต่ออายุ (หากอนุญาต) หรือขอทดแทนก่อนหมดอายุ เมื่อ lease สิ้นสุด Vault สามารถเพิกถอน credential ที่ผู้ให้บริการได้ สิ่งนี้บังคับการเช็คอิน ปรับปรุงบันทึก audit และลดช่วงการเปิดเผย
4.2 การหมุนเวียนอัตโนมัติ
สำหรับ static roles (เช่น รหัสผ่านฐานข้อมูลที่มี rotation_period) Vault หมุนเวียนตามกำหนดเวลา เทมเพลต Vault Agent ดึงใหม่ใกล้สิ้นอายุ (ค่าเริ่มต้น lease_renewal_threshold ~0.9 ของ TTL) และสามารถรีสตาร์ตโพรเซสลูกเมื่อ credential เปลี่ยน
4.3 TTL ที่แนะนำสำหรับ agents
| ระดับความเสี่ยง | ตัวอย่าง | แนวทาง TTL |
|---|---|---|
| การเขียนวิกฤต | แก้ไขฐานข้อมูล Prod, IAM admin | 5–15 นาที; เพิกถอนเมื่อจบเครื่องมือ |
| อ่าน / staging | รีดเรพลิกา, ticket APIs | 30–60 นาที |
| คีย์ LLM provider | คีย์องค์กร OpenAI / Anthropic | จัดการด้วย Vault; หมุนเวียนตามกำหนด; ห้ามใส่ใน MCP JSON |
4.4 Vault + การระบุผู้ใช้ (validated pattern)
Validated pattern ของ HashiCorp: ผู้ใช้ยืนยันตัวตน; agent ได้รับโทเค็น on-behalf-of (OBO); เครื่องมือยืนยันตัวตนกับ Vault ด้วย JWT; Vault แมป claims เป็นนโยบายและออกdynamic secrets ที่มีขอบเขต เส้นทาง audit เชื่อมโยงการออก secret กับมนุษย์ ไม่ใช่บัญชีหุ่นยนต์ร่วม
Vault Enterprise เพิ่ม Agent Registry และโปรไฟล์ OAuth resource server เพื่อให้ agent ที่ลงทะเบียนแสดง OAuth JWTs โดยไม่ต้องล็อกอิน Vault แยก — พร้อมข้อจำกัดเฉพาะ agent สำหรับการมอบหมาย / OBO
# Conceptual agent tool hook (do not ship secrets to the model)
vault_token = login_jwt(obo_token) # Vault auth
secret = vault.read("database/creds/agent-ro")
lease_id, ttl = secret["lease_id"], secret["lease_duration"]
try:
run_tool(db_url=secret["data"]) # use within TTL
finally:
vault.lease.revoke(lease_id) # or let TTL expire
5. การตั้งค่าที่แนะนำตามผู้ขาย
5.1 Claude (Anthropic)
- ควรใช้ OAuth สำหรับ remote MCP connectors; คืน 401 พร้อม
WWW-Authenticateที่ชี้ไปยัง PRM เพื่อให้ไคลเอนต์ค้นพบ auth - ห้ามใส่โทเค็น/API keys ใน query string ของ URL คอนเนกเตอร์ (ถูกบันทึก แคช และห้ามตามกฎโทเค็น MCP)
- Claude Code: local OAuth พร้อมที่เก็บโทเค็นที่ปลอดภัยและการรีเฟรช; ปลั๊กอินต้องไม่อ่านโทเค็น
- Hosted Claude: client credentials ที่ Anthropic จัดการสำหรับผู้ใช้ที่ยินยอม; ยังคงเก็บ secrets ของเครื่องมือใน Vault หลัง MCP ของคุณ
- องค์กร: จัด IdP ให้สอดคล้องกับ MCP EMA สำหรับการเข้าถึงเซิร์ฟเวอร์แบบ zero-touch
5.2 OpenAI (Agents / tools)
- แยก model API keys จาก tool credentials; การหมุนเวียนและรัศมีความเสียหายต่างกัน
- รัน agent runtimes ใน VPC; เรียก private MCP ผ่านเครือข่ายส่วนตัว
- ส่งโทเค็นที่ระบุผู้ใช้เข้าไปในเครื่องมือ; ยืนยันตัวตนกับ Vault ด้วย JWT; สร้าง dynamic secrets ต่อการเรียกใช้
- บันทึกทุกการเรียกเครื่องมือพร้อมผู้ใช้ + agent + lease_id เพื่อการปฏิบัติตามข้อกำหนด
5.3 Cursor
- การตั้งค่า MCP server: อ้างอิงเฉพาะตัวแปรสภาพแวดล้อม — ห้าม hardcode secrets ใน
mcp.json - STDIO servers: รันภายใต้ Vault Agent (เทมเพลตหรือ env) เพื่อให้ leases หมุนเวียนโดยนักพัฒนาไม่ต้องคัดลอกรหัสผ่าน
- Remote MCP: OAuth เมื่อเซิร์ฟเวอร์รองรับ; ไม่เช่นนั้นใช้ corp VPN + bearer อายุสั้นจาก Vault
- นโยบายทีม: allowlist MCP servers ที่อนุมัติ; บล็อก community MCPs ที่ไม่น่าเชื่อถือบนโค้ดเบส prod
- เก็บไฟล์
.env/ secret ออกจากบริบทด้วยกฎ ignore; กฎโปรเจกต์: ห้ามวาง secrets ในแชท
6. เมทริกซ์การควบคุมอ้างอิง
| ชั้น | การควบคุม | รูปแบบที่ควรหลีกเลี่ยง |
|---|---|---|
| ตัวตน | SSO IdP + EMA / OAuth PKCE | รหัสผ่านหุ่นยนต์ร่วม |
| MCP | PRM + โทเค็นผูก audience | โทเค็นใน URL; ไม่มีวันหมดอายุ |
| เครือข่าย | VPN / PrivateLink + egress ACL | Public MCP สำหรับเครื่องมือ prod |
| Secrets | Vault lease + หมุนเวียน + เพิกถอน | คีย์อายุปีใน mcp.json |
| Ops | Audit IdP+MCP+Vault; ประตูมนุษย์ | ดีพลอย / ชำระเงิน prod โดยไม่มีเกต |
7. รายการตรวจสอบการนำไปใช้
- สำรวจ MCP server ทุกตัวและจำแนกสาธารณะกับส่วนตัว
- ใช้ OAuth 2.1 + PRM บน remote MCP ทั้งหมด; เปิด EMA กับ IdP ขององค์กร
- ย้าย MCP + Vault ไปหลัง VPN/เครือข่ายส่วนตัว; บันทึกวิธีที่ Cursor/Claude เข้าร่วมเครือข่าย
- แทนที่คีย์เครื่องมือคงที่ด้วย Vault dynamic secrets; ตั้ง TTL ตามระดับความเสี่ยง
- เชื่อม Vault Agent (หรือ SDK renew/revoke) เข้ากับ agent runtimes; เพิกถอน leases เมื่อจบเซสชัน
- แยกคีย์ LLM provider; เก็บและหมุนเวียนใน Vault — ห้ามใส่ในพรอมต์หรือการตั้งค่า MCP
- เพิ่มเกตอนุมัติโดยมนุษย์สำหรับเงิน การเปลี่ยนตัวตน และการดีพลอย production
- ทดสอบ: lease หมดอายุล้มแบบปิดสนิท; โทเค็น audience ผิดถูกปฏิเสธ; เส้นทางสาธารณะถูกบล็อก
เผยแพร่โดย Workstation — ระบบอัตโนมัติองค์กร แพลตฟอร์ม multi-agent และการส่งมอบที่ปลอดภัยบน Kubernetes