Định danh AI Agent 2026: Xác thực & Phân quyền cho Tác nhân

Posted on: 6/6/2026 1:13:37 AM

Năm 2026, câu hỏi khó nhất khi đưa AI Agent lên production không còn là "model có đủ thông minh không?" mà là "khi agent gọi vào database, gửi email hay chuyển tiền — nó đang hành động dưới danh nghĩa ai, và ai chịu trách nhiệm?". Đây là bài toán định danh (identity)phân quyền (authorization) cho tác nhân tự trị — phần hạ tầng âm thầm nhưng quyết định việc một hệ thống multi-agent có thể vận hành an toàn hay không.

Nếu bài trước trong chuỗi này nói về bảo mật AI Agent ở góc độ chống prompt injection và Lethal Trifecta, thì bài này đi xuống một tầng sâu hơn: danh tính của chính agent — nó là "ai" trong con mắt của hệ thống IAM, lấy token kiểu gì, được làm gì và không được làm gì.

1. Tại sao AI Agent cần một danh tính riêng?

Trong kiến trúc truyền thống, mọi thứ chạy dưới danh nghĩa người dùng (qua session) hoặc dưới danh nghĩa dịch vụ (qua API key tĩnh). AI Agent phá vỡ cả hai mô hình: nó vừa hành động thay mặt người dùng, vừa có quyền tự chủ để gọi hàng chục công cụ, sinh ra hàng loạt sub-agent, và chạy bất đồng bộ khi người dùng đã offline. Câu hỏi "ai vừa xóa bản ghi này?" trở nên cực kỳ khó trả lời nếu agent không có danh tính độc lập, có thể truy vết.

45:1Tỷ lệ danh tính phi-người / người trong doanh nghiệp
250K+Non-Human Identity trung bình mỗi doanh nghiệp cloud
97%NHI mang quyền vượt mức cần thiết
68%Sự cố bảo mật có liên quan machine identity

Non-Human Identity bùng nổ

Danh tính phi-người (Non-Human Identity — NHI: service account, workload, bot, và giờ là AI agent) đã vượt số lượng danh tính con người trong hầu hết doanh nghiệp, với tỷ lệ phổ biến 45:1, và lên tới 144:1 ở môi trường cloud-native. Vấn đề: 97% trong số đó mang quyền vượt mức cần thiết và 71% chưa từng được xoay vòng (rotate) đúng hạn. Mỗi AI workflow có thể "đẻ" ra hàng chục NHI mới chỉ trong một buổi chiều — đây là bề mặt tấn công mới mà các công cụ IAM cũ chưa từng được thiết kế để xử lý.

2. Ba bài toán cốt lõi: Xác thực, Phân quyền, Uỷ quyền

Định danh agent không phải một bài toán, mà là ba bài toán liên quan chặt chẽ. Tách bạch chúng ngay từ đầu là chìa khoá để thiết kế đúng:

Bài toánCâu hỏi trả lờiCơ chế chuẩn
Authentication (Xác thực)"Agent này thực sự là ai?"Federated credential, OAuth client, mTLS, workload identity
Authorization (Phân quyền)"Agent được phép làm gì?"Scoped token, RBAC/ReBAC, policy engine, consent
Delegation (Uỷ quyền)"Agent hành động thay mặt ai, theo chuỗi nào?"Token Exchange (RFC 8693), on-behalf-of, act claim

Sai lầm phổ biến nhất là gộp ba thứ này vào một API key tĩnh có toàn quyền: agent vừa "là" service account đó, vừa "được phép làm mọi thứ", và "không biết đang thay mặt ai". Khi key rò rỉ — và với agent xử lý nội dung không tin cậy, rò rỉ chỉ là vấn đề thời gian — kẻ tấn công thừa hưởng trọn vẹn quyền lực đó.

3. Tại sao agent không dùng mật khẩu — hai mô hình xác thực

AI agent không gõ mật khẩu, không nhận SMS OTP, không bấm passkey. Nó xác thực bằng thông tin định danh liên kết (federated credential) hoặc chứng chỉ workload — những thứ máy-có-thể-chứng-minh chứ không phải con-người-ghi-nhớ. Có hai mô hình truy cập, và việc chọn đúng mô hình cho từng thao tác là quyết định kiến trúc quan trọng nhất:

graph TD
    U["Nguoi dung"] -->|"uy quyen"| AG["AI Agent
(co danh tinh rieng)"] AG -->|"Mo hinh 1:
Delegated / On-Behalf-Of"| R1["Tai nguyen voi
quyen CUA NGUOI DUNG"] AG -->|"Mo hinh 2:
App-only / Workload"| R2["Tai nguyen voi
quyen RIENG CUA AGENT"] R1 --> NOTE1["VD: doc email cua chinh user,
tao file trong drive cua user"] R2 --> NOTE2["VD: ghi log he thong,
goi internal service"] style U fill:#e94560,stroke:#fff,color:#fff style AG fill:#16213e,stroke:#fff,color:#fff style R1 fill:#4CAF50,stroke:#fff,color:#fff style R2 fill:#2c3e50,stroke:#fff,color:#fff style NOTE1 fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style NOTE2 fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50

Hình 1: Hai mô hình truy cập của agent — Delegated (mượn quyền người dùng) và App-only (quyền riêng của agent)

Delegated access dùng khi agent làm việc thay mặt một người dùng cụ thể: quyền bị giới hạn bởi giao của quyền người dùngquyền agent. App-only / workload access dùng cho tác vụ nền không gắn người dùng nào. Nguyên tắc vàng: thao tác đụng tới dữ liệu của người dùng phải đi qua delegated access — đừng để agent dùng quyền hệ thống "thần thánh" để lách qua kiểm soát truy cập của chính người dùng đó.

4. OAuth 2.1 cho Agent: Authorization Code + PKCE

Chuẩn de-facto để agent lấy token thay mặt người dùng là OAuth 2.1 Authorization Code Flow với PKCE. Vì agent là public client — không thể giữ bí mật một client secret một cách an toàn — PKCE (Proof Key for Code Exchange) là bắt buộc, không còn là tuỳ chọn như thời OAuth 2.0.

sequenceDiagram
    participant U as Nguoi dung
    participant A as AI Agent (client)
    participant AS as Authorization Server
    participant RS as Resource Server (MCP/API)
    A->>AS: 1. Authorize + code_challenge (PKCE)
resource=https://mcp.example.com AS->>U: 2. Man hinh consent
(hien danh tinh agent) U->>AS: 3. Chap thuan scope toi thieu AS->>A: 4. Authorization code A->>AS: 5. Doi code + code_verifier AS->>A: 6. Access token (short-lived)
+ refresh token A->>RS: 7. Goi API kem Bearer token RS->>RS: 8. Validate aud == chinh minh
(RFC 8707 resource binding) RS->>A: 9. Ket qua

Hình 2: Luồng OAuth 2.1 Authorization Code + PKCE cho AI Agent

Một yêu cầu token điển hình của agent (bước 5) trông như sau — chú ý resource (RFC 8707 Resource Indicators) gắn token vào đúng một server, và PKCE code_verifier:

POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
&redirect_uri=https://agent.example.com/callback
&resource=https://mcp.example.com
&client_id=agent-orchestrator

Bốn quy tắc vàng cho token của agent

1. Token sống ngắn. Spec MCP 2025-06-18 khuyến nghị access token ngắn hạn để giảm thiệt hại khi rò rỉ. 2. Resource binding (RFC 8707). Token phải khai báo aud/resource là URI của đúng server; server từ chối token không trỏ về mình — chặn replay chéo-server. 3. Step-up authorization. Bản spec 11/2025 cho phép xin thêm scope chỉ khi thao tác thực sự cần, thay vì cấp dư quyền từ đầu. 4. PKCE bắt buộc vì agent là public client.

5. Uỷ quyền theo chuỗi: Token Exchange & On-Behalf-Of

Hệ thống multi-agent hiếm khi phẳng: một orchestrator gọi sub-agent, sub-agent gọi tiếp một tool-agent... Mỗi chặng cần trả lời được: "token này rốt cuộc đại diện cho ai, qua tay những ai?". Câu trả lời là OAuth 2.0 Token Exchange (RFC 8693).

Token Exchange cho phép một bên đổi token hiện có lấy token mới có phạm vi hẹp hơn, kèm thông tin actor (bên đang muốn hành động thay) qua tham số actor_token. Chuỗi uỷ quyền được biểu diễn bằng cách lồng claim act: claim ngoài cùng là actor hiện tại, các claim lồng bên trong là các actor trước đó.

graph LR
    U["Nguoi dung
(subject)"] -->|"delegate"| O["Orchestrator
Agent"] O -->|"token exchange"| S["Sub-Agent
(scope hep hon)"] S -->|"token exchange"| T["Tool-Agent
(1 hanh dong)"] T --> API["Resource Server"] style U fill:#e94560,stroke:#fff,color:#fff style O fill:#16213e,stroke:#fff,color:#fff style S fill:#2c3e50,stroke:#fff,color:#fff style T fill:#2c3e50,stroke:#fff,color:#fff style API fill:#4CAF50,stroke:#fff,color:#fff

Hình 3: Chuỗi uỷ quyền multi-agent — mỗi chặng thu hẹp scope và ghi lại actor

Payload của access token cuối chuỗi mang nguyên vẹn lịch sử uỷ quyền nhờ claim act lồng nhau — đây chính là thứ giúp audit "ai-thay-mặt-ai" sau sự cố trở nên khả thi:

{
  "sub": "user-8842",
  "aud": "https://mcp.example.com",
  "scope": "files:read calendar:write",
  "act": {
    "sub": "agent://orchestrator-prod",
    "act": {
      "sub": "agent://subagent-scheduler"
    }
  }
}

Chuẩn hoá đang diễn ra: draft IETF cho agent

Có một bản draft IETF đang hoạt động — draft-oauth-ai-agents-on-behalf-of-user — mở rộng OAuth riêng cho uỷ quyền agent: tham số requested_actor để màn hình consent hiển thị rõ danh tính agent, và actor_token để agent tự xác thực khi đổi authorization code. Kết quả là một access token ghi lại đầy đủ chuỗi uỷ quyền: người dùng → ứng dụng → agent cụ thể này.

6. Danh tính trong MCP và A2A

Hai giao thức nền tảng của hệ sinh thái agent 2026 — MCP (agent ↔ tool) và A2A (agent ↔ agent) — đều đã đặt định danh làm công dân hạng nhất, nhưng theo cách khác nhau:

Khía cạnhMCP (Model Context Protocol)A2A (Agent-to-Agent)
Vai trò OAuthMCP Server = Resource Server thuần; Authorization Server tách biệtMỗi agent vừa là client vừa là resource của agent khác
Xác thựcBearer token + resource indicator (RFC 8707)Agent Card công bố scheme xác thực; mTLS/OIDC giữa các agent
Token discoveryProtected Resource Metadata trỏ tới ASTrao đổi capability + yêu cầu auth trong handshake
Nguyên tắc chungTách bạch danh tính người dùng và danh tính agent; token ngắn hạn; scope tối thiểu

Điểm thiết kế quan trọng trong spec MCP 06/2025: MCP Server chỉ đóng vai resource server, không tự phát hành token mà chỉ validate token do một Authorization Server chuyên biệt cấp. Sự tách bạch này tránh được phản-mẫu "mỗi server tự làm IAM" — vốn là nguồn gốc của vô số lỗ hổng.

7. Bức tranh nhà cung cấp: Entra Agent ID và bạn bè

Các ông lớn IAM đã nhảy vào. Tháng 4/2026, Microsoft Entra Agent ID đạt General Availability — một nền tảng định danh dành riêng cho agent, mở rộng nguyên tắc Zero Trust (xác thực, phân quyền, governance, lifecycle) sang non-human identity bằng các chuẩn mở OAuth 2.0, MCP và A2A.

06/2025
MCP spec tách vai trò Authorization Server khỏi Resource Server — agent xác thực qua AS chuyên biệt.
11/2025
MCP bổ sung step-up authorization và server identity; draft IETF on-behalf-of cho agent được thúc đẩy.
04/2026
Microsoft Entra Agent ID GA: mỗi agent có object ID/app ID ổn định, xác thực bằng Federated Identity Credential, không dùng mật khẩu.
2026
Hệ sinh thái NHI governance (phát hiện, xoay vòng, thu hồi quyền) trở thành hạng mục bắt buộc khi triển khai agent ở quy mô doanh nghiệp.

Entra Agent ID — điểm cốt lõi

Agent identity có object ID và app ID luôn trùng giá trị, dùng tin cậy cho quyết định xác thực/phân quyền. Khác con người, agent không dùng password, SMS, passkey — chỉ xác thực bằng Federated Identity Credential do "agent blueprint" cấp. Dịch vụ tuân thủ OAuth 2.0 + OIDC, hỗ trợ cả app-only lẫn delegated, và cho admin một nơi tập trung để giám sát + kiểm soát hành vi agent.

8. Nguyên tắc thiết kế: quyền tối thiểu, tức thời, có cổng người

Công nghệ chỉ là một nửa; nửa còn lại là kỷ luật thiết kế. Bốn nguyên tắc nên áp dụng cho mọi agent production:

  • Least privilege theo scope: mỗi token chỉ chứa đúng scope cho tác vụ trước mắt. Đừng cấp admin:* khi agent chỉ cần files:read.
  • Just-in-time & step-up: nâng quyền đúng lúc cần, hết việc thì token hết hạn. Thao tác nhạy cảm kích hoạt step-up authorization.
  • Human-in-the-loop làm cổng phân quyền: những hành động không thể đảo ngược (chuyển tiền, xoá dữ liệu, gửi mail ra ngoài) phải qua phê duyệt của con người — chính là tầng authorization cuối cùng.
  • Truy vết được mọi hành động: mọi lời gọi đều mang danh tính agent + chuỗi act, đẩy vào audit log bất biến để trả lời "ai làm gì" sau sự cố.

Phản-mẫu cần tránh

API key tĩnh, toàn quyền, sống mãi nhúng trong biến môi trường — rò rỉ là mất tất cả. Dùng chung một service account cho mọi agent — mất khả năng truy vết và least privilege. Agent dùng quyền hệ thống để truy cập dữ liệu người dùng — bỏ qua access control của chính người dùng đó. Token sống nhiều ngày không xoay vòng — kéo dài cửa sổ tấn công. Mỗi phản-mẫu này đều xuất hiện trong thống kê 97% NHI quá-quyền và 71% chưa xoay vòng.

9. Kết luận

Khi AI agent chuyển từ demo sang production, danh tính trở thành chu vi an ninh mới. Một agent không có danh tính riêng là một agent không thể truy vết, không thể giới hạn quyền, và không thể audit — ba điều kiện tối thiểu để bất kỳ hệ thống tự trị nào được tin tưởng.

Tin tốt: ta không cần phát minh lại bánh xe. OAuth 2.1 + PKCE cho xác thực, RFC 8707 cho resource binding, RFC 8693 Token Exchange cho chuỗi uỷ quyền, draft on-behalf-of cho danh tính agent trên màn consent, và các nền tảng như Entra Agent ID cho governance — bộ công cụ đã sẵn sàng. Việc còn lại là kỷ luật: cấp quyền tối thiểu, token ngắn hạn, và đặt con người ở đúng những cánh cổng không thể đảo ngược. Trong kỷ nguyên mà danh tính phi-người áp đảo con người 45:1, đây không còn là "nice to have" — đó là điều kiện sống còn.


Nguồn tham khảo