انتقل إلى المحتوى الرئيسي

المختبر 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