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.hostUserskhô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_ADMINchỉ 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ục | Giá trị |
|---|---|
| Phiên bản GA | v1.36 "Haru" |
| Ngày release | 22/04/2026 (blog userns: 23/04/2026) |
| Alpha lần đầu | v1.25 — tháng 8/2022 |
| Beta | v1.30 — tháng 4/2024 |
| Enabled by default | v1.33 — tháng 4/2025 |
| Kernel tối thiểu | Linux 5.12+ |
| API field | spec.hostUsers: false |
| Platform | Linux only (không hỗ trợ Windows) |
| Mount remap cost | O(1) qua ID-mapped mounts |
So sánh: trước và sau
| Khía cạnh | Trước GA (hostUsers mặc định true) | Với hostUsers: false GA |
|---|---|---|
| UID 0 trong container | = UID 0 của host | Map sang UID không đặc quyền trên host |
| Container escape | Attacker thành host root | Attacker chỉ có quyền pod-local |
| Volume UID remap | Recursive chown khi start pod | ID-mapped mount, O(1), không ghi đĩa |
| Linux capabilities | Phạm vi host | Phạm vi namespace của pod |
| Cần đổi image | Thường phải viết rootless | Khô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: falselà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.