Giao diện
⚔️ Challenge: Permission Audit (RBAC)
🚨 Security Alert
Level: Critical Scenario: Thực tập sinh mới "Huy" phàn nàn rằng anh ấy không xem được log của Backend App. Một Senior (dỏm) đã apply file YAML dưới đây để "fix nhanh" cho Huy.
1. The Dangerous Configuration
Dưới đây là file YAML đã được apply vào cluster.
yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: intern-access
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: intern-binding
subjects:
- kind: User
name: huy
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: intern-access
apiGroup: rbac.authorization.k8s.io🔻 Câu hỏi 1: Tại sao cấu hình này là "Thảm họa"?
👉 Click để xem đáp án
Nó cấp quyền "Full Admin" (God Mode) cho Huy trên toàn bộ Cluster.
resources: ["*"]+verbs: ["*"]: Cho phép làm BẤT CỨ ĐIỀU GÌ (Xóa Node, Xóa Database, Đọc Secret, Tắt Cluster).ClusterRole: Phạm vi ảnh hưởng là TOÀN BỘ CLUSTER, không chỉ riêng namespacebackend.- Huy có thể vô tình (hoặc cố ý) xóa sạch hệ thống chỉ với một lệnh.
2. The Mission: Fix the Permissions
Nhiệm vụ của bạn là viết lại file YAML trên để tuân thủ nguyên tắc Least Privilege.
Yêu cầu:
- Chỉ cho phép Huy thao tác trong namespace
backend. - Huy chỉ cần xem Log và trạng thái Pods để debug.
- Cấm Huy xóa Pod, Sửa Deployment, hoặc Đọc Secret.
- Cấm Huy truy cập các namespace khác (như
kube-system).
📝 Your Solution YAML
Hãy thử viết YAML trước khi xem đáp án. Gợi ý: Dùng Role thay vì ClusterRole.
3. The Solution (HPN Standard)
Đây là cách chúng ta cấp quyền chuẩn chỉ tại HPN.
yaml
# 1. Role: Chỉ định nghĩa QUYỀN HẠN trong phạm vi Namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: backend # 🔒 Chỉ áp dụng cho namespace này
name: pod-viewer-role
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"] # 🔒 Chỉ cho phép tác động vào Pods & Log
verbs: ["get", "list", "watch"] # 🔒 Chỉ cho phép xem (Read-Only)
---
# 2. RoleBinding: Trao Role cho Huy
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: backend
name: huy-backend-viewer
subjects:
- kind: User
name: huy
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-viewer-role
apiGroup: rbac.authorization.k8s.ioGiải thích Security Check:
- ✅ Namespace Isolation: Huy không thể động vào
databasenamespace haykube-system. - ✅ Resource Limitation: Huy không thể xem Secret (
kubectl get secrets-> Forbidden). - ✅ Verb Limitation: Huy không thể xóa Pod (
kubectl delete pod-> Forbidden). - ✅ Audit Ready: Cấu hình này an toàn và pass mọi bài audit.