← Về danh sách bài học Bài 21/25

👤 Bài 21: RBAC - Quản Lý Quyền

⏱️ Thời gian: 25 phút | 📚 Độ khó: Nâng cao

🎯 Sau bài học này, bạn sẽ:

1. RBAC Components

Resource Scope Mô tả
Role Namespace Quyền trong 1 namespace
ClusterRole Cluster Quyền toàn cluster
RoleBinding Namespace Gán Role cho user
ClusterRoleBinding Cluster Gán ClusterRole

2. Role (Namespace-scoped)

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: default
rules:
  - apiGroups: [""]           # "" = core API
    resources: ["pods"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["get", "list"]
💡 Verbs phổ biến: get, list, watch, create, update, patch, delete

3. RoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
  - kind: User
    name: jane
    apiGroup: rbac.authorization.k8s.io
  - kind: ServiceAccount
    name: my-app
    namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

4. ClusterRole

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: secret-reader
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "list"]

5. ServiceAccount

# Tạo ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-app
  namespace: default
---
# Pod sử dụng ServiceAccount
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  serviceAccountName: my-app
  containers:
    - name: app
      image: myapp:1.0

6. Kiểm Tra Quyền

# Kiểm tra quyền của mình
kubectl auth can-i create pods
kubectl auth can-i delete deployments -n production

# Kiểm tra quyền của user khác (admin)
kubectl auth can-i create pods --as jane
kubectl auth can-i list secrets --as system:serviceaccount:default:my-app

📝 Tóm Tắt