🔑 RBAC, ServiceAccount và Pod Security

Mục tiêu bài học

  • Phân biệt được Role, ClusterRole, RoleBinding, ClusterRoleBinding và biết khi nào dùng cái nào.
  • Viết được Role/RoleBinding đúng phạm vi cho một ServiceAccount cụ thể, theo nguyên tắc least privilege.
  • Hiểu ServiceAccount là gì, token mount hoạt động ra sao và cách tắt khi không cần.
  • Áp được Pod Security Admission (PSA) ở mức baseline và restricted cho một namespace, và sửa manifest để qua được restricted.
  • Nhận ra các cạm bẫy hay gặp: bind sai namespace, roleRef bất biến, quyền cộng dồn không có deny.

Ôn nhanh

Bài trước ta đã chốt: mạng Pod mặc định là phẳng và mở, NetworkPolicy chỉ là allow-list theo namespace, không có rule deny. Nói cách khác, NetworkPolicy trả lời câu hỏi "Pod nào được nói chuyện với Pod nào".

Bài này là lớp bảo vệ thứ hai, ở hai trục khác: ai được gọi API server (RBAC + ServiceAccount) và container được phép làm gì trên node (Pod Security). Hai lớp này độc lập với NetworkPolicy, nên phải nghĩ tới cả ba cùng lúc khi thiết kế một namespace.

Lý thuyết

RBAC: ba mảnh ghép

RBAC luôn là công thức: Subject + Binding + Role/ClusterRole.

Mảnh Vai trò Phạm vi
Role Tập rule (cho phép làm gì) Một namespace
ClusterRole Tập rule Toàn cluster (hoặc dùng lại nhiều namespace)
RoleBinding Gắn subject vào role Một namespace
ClusterRoleBinding Gắn subject vào ClusterRole Toàn cluster

Một rule gồm bốn phần: apiGroups, resources, verbs, và tuỳ chọn resourceNames. Ví dụ đọc log Pod cần get trên subresource pods/log, không phải trên pods.

[!IMPORTANT] RoleBinding có thể trỏ tới ClusterRole, nhưng quyền vẫn chỉ có hiệu lực trong namespace của binding. Đây là mẹo hay dùng: viết một ClusterRole chung (ví dụ view), rồi bind vào từng namespace bằng RoleBinding.

This lesson is part of the paid section. Sign in and purchase the course to view the full content. Sign in