TL;DR

Kubernetes v1.36 "Haru" ra mắt ngày 22/04/2026 và ngày hôm sau SIG Node công bố một cột mốc lớn: User Namespaces cho Pod chính thức GA (Stable). Một tính năng được đề xuất lần đầu cách đây khoảng 10 năm, alpha trong v1.25 (tháng 8/2022), beta trong v1.30, bật mặc định từ v1.33 — nay cuối cùng đã ổn định cho production.

Cách dùng đơn giản đến bất ngờ: thêm hostUsers: false vào spec của Pod. Container chạy UID 0 bên trong nhưng trên host nó là một UID không đặc quyền. Nếu attacker thoát container, họ không còn là root của node.

Có gì mới

Ba thay đổi cốt lõi đi kèm với trạng thái GA:

  • API ổn định: spec.hostUsers không còn feature gate — an toàn để bật trong cluster production mà không cần flag thử nghiệm.
  • ID-mapped mounts là mặc định: kernel ≥ 5.12 dịch UID/GID tại thời điểm mount. Không cần chown đệ quy volume khi pod khởi động.
  • Capabilities bị namespaced: các quyền như CAP_NET_ADMIN chỉ có hiệu lực trong phạm vi pod, không vượt ra host.

Không cần đổi image. Không cần đổi ứng dụng. Legacy workload chạy UID 0 vẫn chạy như cũ — chỉ là host không còn coi nó là root.

Vì sao quan trọng

Trong suốt một thập kỷ, container trên Linux có một lỗ hổng kiến trúc quen thuộc: UID 0 bên trong container chính là UID 0 của host kernel. Mọi CVE kernel escape, mọi misconfig mount, mọi flaw trong runtime đều biến thành root trên node. Rootless images và runAsNonRoot giúp giảm rủi ro nhưng không phải image nào cũng viết lại được.

User namespaces là câu trả lời kiến trúc cho vấn đề đó. Đây không phải một layer monitoring — đây là kernel-enforced isolation. Với multi-tenant clusters, build farms, CI runners, hay workload fintech/healthcare, đây là thứ lẽ ra container đã nên có từ lâu.

Thông số kỹ thuật

Hạng mụcGiá trị
Phiên bản GAv1.36 "Haru"
Ngày release22/04/2026 (blog userns: 23/04/2026)
Alpha lần đầuv1.25 — tháng 8/2022
Betav1.30 — tháng 4/2024
Enabled by defaultv1.33 — tháng 4/2025
Kernel tối thiểuLinux 5.12+
API fieldspec.hostUsers: false
PlatformLinux only (không hỗ trợ Windows)
Mount remap costO(1) qua ID-mapped mounts

So sánh: trước và sau

Khía cạnhTrước GA (hostUsers mặc định true)Với hostUsers: false GA
UID 0 trong container= UID 0 của hostMap sang UID không đặc quyền trên host
Container escapeAttacker thành host rootAttacker chỉ có quyền pod-local
Volume UID remapRecursive chown khi start podID-mapped mount, O(1), không ghi đĩa
Linux capabilitiesPhạm vi hostPhạm vi namespace của pod
Cần đổi imageThường phải viết rootlessKhông — image cũ chạy UID 0 vẫn ok

So với gVisor hay Kata Containers, userns không cần runtime khác và không gánh overhead syscall interception. Nó đóng vector breakout phổ biến nhất (UID confusion) với chi phí gần như bằng không.

Ai hưởng lợi nhiều nhất

  • Multi-tenant platforms: SaaS nội bộ, internal PaaS — cô lập tenant mạnh hơn mà không ép mọi đội viết rootless image.
  • Workload tuân thủ (compliance): fintech, healthcare, chính phủ — defense-in-depth cho audit và giảm blast radius khi có CVE kernel.
  • CI runners & build systems: sandbox job do người dùng submit, giới hạn thiệt hại nếu build script độc hại.
  • Legacy workload chạy root: image cũ không đổi được nay có thể chạy an toàn hơn mà không cần patch app.
  • Platform engineers: dùng Kyverno/OPA ép hostUsers: false làm default trong Pod Security policy.

Giới hạn & điều kiện

  • Linux only. Windows không được hỗ trợ.
  • Kernel ≥ 5.12 trên mọi node dự kiến schedule pod userns.
  • CRI runtime phải hỗ trợ user namespace và idmap mounts — check version containerd / CRI-O đang chạy.
  • Không retroactive: workload hiện có phải opt-in bằng hostUsers: false.
  • HostNetwork pods với userns vẫn đang alpha trong v1.36 — có cải tiến nhưng chưa GA.
  • Phí: miễn phí, upstream OSS — không license gate. Các managed K8s (GKE/EKS/AKS) sẽ rollout theo cadence riêng.

Tiếp theo là gì

Roadmap sắp tới tập trung vào: graduate userns cho HostNetwork pods lên beta/GA, cập nhật Pod Security Standards để khuyến nghị hostUsers: false trong profile Restricted, và xuất xưởng policy templates Kyverno/OPA để ép default ở scale. Các managed offering sẽ bật mặc định dần khi node pool đáp ứng kernel tối thiểu.

Nếu bạn vận hành cluster production, câu hỏi giờ không còn là "có nên bật không" mà là "bật trước ở namespace nào". Bắt đầu từ namespace multi-tenant hoặc workload untrusted, đo impact, rồi mở rộng.

Nguồn: kubernetes.io — User Namespaces GA, v1.36 Haru release, KEP-127, User Namespaces docs.