Bài 21. ServiceAccount - Pod cũng cần có danh tính
"Con người có tài khoản để đăng nhập hệ thống. Vậy Pod thì sao?"
Khi một Pod chạy trong Kubernetes, đôi khi nó cần giao tiếp với Kubernetes API.
Ví dụ:
- Đọc danh sách Pod.
- Tạo ConfigMap.
- Lấy thông tin Secret.
- Xem trạng thái Node.
Lúc này Kubernetes phải trả lời một câu hỏi rất quan trọng:
"Pod này là ai? Nó có được phép làm việc đó không?"
Đó chính là lý do ServiceAccount ra đời.
Hãy tưởng tượng như trong một công ty
Mỗi nhân viên đều có một chiếc thẻ nhân viên.
- Người thường chỉ được vào văn phòng.
- Quản lý được vào phòng họp.
- Kế toán được truy cập hệ thống tài chính.
Chiếc thẻ đó chính là danh tính (Identity).
Trong Kubernetes cũng vậy.
Mỗi Pod sẽ "đeo" một ServiceAccount để chứng minh mình là ai khi làm việc với Kubernetes API.
Nếu không tạo ServiceAccount thì sao?
Kubernetes sẽ tự động gán cho Pod một ServiceAccount có tên:
default
Điều đó có nghĩa là mọi Pod đều có danh tính, kể cả khi bạn không khai báo.
ServiceAccount làm được gì?
Bản thân ServiceAccount không quyết định quyền hạn.
Nó chỉ cung cấp danh tính cho Pod.
Quyền thực sự được quyết định bởi RBAC (Role-Based Access Control), chúng ta sẽ tìm hiểu ở bài tiếp theo.
Có thể hình dung như sau:
Pod
│
▼
ServiceAccount
│
▼
RBAC
│
▼
Được phép hay bị từ chối
ServiceAccount trả lời câu hỏi:
"Bạn là ai?"
RBAC trả lời câu hỏi:
"Bạn được phép làm gì?"
Hai thành phần này luôn đi cùng nhau.
Khi nào cần tạo ServiceAccount riêng?
Trong thực tế, rất nhiều ứng dụng cần một ServiceAccount riêng, chẳng hạn:
- ArgoCD
- Prometheus
- External DNS
- Cert Manager
- CSI Driver
Mỗi ứng dụng chỉ nên được cấp đúng những quyền mà nó thực sự cần.
Đây là nguyên tắc Least Privilege (cấp ít quyền nhất có thể), giúp giảm thiểu rủi ro nếu ứng dụng bị khai thác.
Tổng kết
ServiceAccount là danh tính của Pod khi giao tiếp với Kubernetes API.
Hãy nhớ một quy tắc đơn giản:
- Pod → Chạy ứng dụng.
- ServiceAccount → Cho biết Pod là ai.
- RBAC → Quy định Pod được làm gì.
Ở bài tiếp theo, chúng ta sẽ tìm hiểu RBAC và xem cách Kubernetes kiểm soát quyền truy cập để đảm bảo mỗi Pod chỉ có thể thực hiện đúng những gì được cho phép.
All rights reserved