المختبر 9.2 - حسابات الخدمة والصلاحيات
أهداف المختبر
في نهاية هذا المختبر، ستكون قادرًا على:
- إنشاء واستخدام حسابات الخدمة.
- تعيين الصلاحيات لحسابات الخدمة.
- استخدام حسابات الخدمة في الـ Pods.
- فهم الرموز والأسرار لحسابات الخدمة.
- اختبار الوصول إلى API من Pod باستخدام حساب خدمة.
المدة المقدرة
45-60 دقيقة
المتطلبات المسبقة
- تثبيت وتكوين kubectl.
- وجود عنقود Kubernetes محلي يعمل.
- معرفة بحسابات الخدمة (الفصل 9.2).
الجزء 1: إنشاء حساب خدمة
الخطوة 1.1: إنشاء حساب خدمة
قم بإنشاء مساحة أسماء للاختبار:
kubectl create namespace sa-test
قم بإنشاء حساب خدمة:
kubectl create serviceaccount app-sa -n sa-test
تحقق:
kubectl get serviceaccount app-sa -n sa-test
kubectl describe serviceaccount app-sa -n sa-test
الجزء 2: تعيين الصلاحيات
الخطوة 2.1: إنشاء دور مع الصلاحيات
قم بإنشاء role-app-permissions.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: sa-test
name: app-role
rules:
- apiGroups: [""]
resources: ["pods", "configmaps"]
verbs: ["get", "list", "watch", "create"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
تطبيق:
kubectl apply -f role-app-permissions.yaml
الخطوة 2.2: إنشاء RoleBinding
قم بإنشاء rolebinding-app.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app-binding
namespace: sa-test
subjects:
- kind: ServiceAccount
name: app-sa
namespace: sa-test
roleRef:
kind: Role
name: app-role
apiGroup: rbac.authorization.k8s.io
تطبيق:
kubectl apply -f rolebinding-app.yaml
الجزء 3: الاستخدام في Pod
الخطوة 3.1: إنشاء Pod مع حساب الخدمة
قم بإنشاء pod-with-sa.yaml:
apiVersion: v1
kind: Pod
metadata:
name: app-pod
namespace: sa-test
spec:
serviceAccountName: app-sa
containers:
- name: app
image: bitnami/kubectl:latest
command: ["sleep", "3600"]
تطبيق:
kubectl apply -f pod-with-sa.yaml
تحقق من أن الـ Pod يستخدم حساب الخدمة:
kubectl describe pod app-pod -n sa-test
الجزء 4: اختبار الصلاحيات
الخطوة 4.1: اختبار الوصول إلى API من الـ Pod
اختبر الصلاحيات من الـ Pod:
# اختبار قائمة الـ Pods (يجب أن يعمل)
kubectl exec -n sa-test app-pod -- kubectl get pods
# اختبار إنشاء ConfigMap (يجب أن يعمل)
kubectl exec -n sa-test app-pod -- kubectl create configmap test-cm --from-literal=key=value --dry-run=client -o yaml
# اختبار قائمة الخدمات (يجب أن يفشل - لا توجد صلاحية)
kubectl exec -n sa-test app-pod -- kubectl get services
الجزء 5: الرموز والأسرار
الخطوة 5.1: فحص الرمز
حساب الخدمة لديه رمز مخزن في سر:
# قائمة الأسرار لحساب الخدمة
kubectl get secrets -n sa-test
# الرمز مثبت في الـ Pod في /var/run/secrets/kubernetes.io/serviceaccount/token
kubectl exec -n sa-test app-pod -- cat /var/run/secrets/kubernetes.io/serviceaccount/token
الجزء 6: التنظيف
kubectl delete pod app-pod -n sa-test
kubectl delete rolebinding app-binding -n sa-test
kubectl delete role app-role -n sa-test
kubectl delete serviceaccount app-sa -n sa-test
kubectl delete namespace sa-test
ملخص المختبر
في هذا المختبر، قمت بإنشاء واستخدام حسابات الخدمة مع صلاحيات RBAC. تعلمت كيفية تعيين الصلاحيات، واستخدام حسابات الخدمة في الـ Pods، واختبار الوصول إلى API.
الخطوات التالية
المختبر التالي سيعرض لك كيفية تطبيق معايير أمان الـ Pod.
المختبر 9.3: معايير أمان الـ Pod
تم إنشاء المختبر في: ديسمبر 2024