RBAC, ServiceAccount và Pod Security
Mục tiêu bài học
- Phân biệt được
Role,ClusterRole,RoleBinding,ClusterRoleBindingvà biết khi nào dùng cái nào. - Viết được
Role/RoleBindingđúng phạm vi cho mộtServiceAccountcụ thể, theo nguyên tắc least privilege. - Hiểu
ServiceAccountlà 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
baselinevàrestrictedcho một namespace, và sửa manifest để qua đượcrestricted. - Nhận ra các cạm bẫy hay gặp: bind sai namespace,
roleRefbấ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]
RoleBindingcó thể trỏ tớiClusterRole, 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ộtClusterRolechung (ví dụview), rồi bind vào từng namespace bằngRoleBinding.
This lesson is part of the paid section. Sign in and purchase the course to view the full content. Sign in