0Pricing
DevOps Bootcamp · درس

إدارة الأسرار وRBAC

تعلّم استراتيجيات متقدمة لإدارة البيانات الحساسة وتطبيق التحكم في الوصول المستند إلى الأدوار (RBAC) في بيئات الحاويات

إدارة الأسرار وRBAC درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

تأمين بيئة الحاويات

مرحبًا! سنتعمق في هذا الدرس في ممارسات الأمان الأساسية للتطبيقات التي تعمل داخل حاويات: إدارة الأسرار والتحكم في الوصول المستند إلى الأدوار (RBAC).

تُعد هذه المفاهيم ضرورية لحماية البيانات الحساسة وضمان قدرة الكيانات المصرّح لها فقط على تنفيذ إجراءات محددة في بيئات الحاويات.

إدارة الأسرار وRBAC — رسم توضيحي 1

خطر تضمين الأسرار مباشرةً في الشفرة

يُعد تضمين المعلومات الحساسة، مثل مفاتيح API أو كلمات مرور قواعد البيانات أو الشهادات الخاصة، مباشرةً في شفرة التطبيق أو Dockerfiles خطرًا أمنيًا كبيرًا.

  • التعرّض: يستطيع أي شخص لديه صلاحية الوصول إلى مستودع الشفرة أو الصورة المنشأة رؤيتها بسهولة.
  • غياب التحكم: يتطلب تغيير سرّ ما إعادة إنشاء تطبيقك بالكامل ونشره مجددًا.
  • مشكلات الامتثال: يخالف ذلك كثيرًا من أفضل ممارسات الأمان والمتطلبات التنظيمية.

متغيرات البيئة (بحذر)

تُعد متغيرات البيئة طريقة شائعة، لكنها ليست آمنة دائمًا، لتمرير الأسرار. يتيح لك Docker تمريرها باستخدام الخيار -e، ويمكن للتطبيقات قراءتها.

ومع ذلك، يمكن فحص متغيرات البيئة بسهولة (مثلًا باستخدام docker inspect)، وقد تبقى في سجل الأوامر أو السجلات. وتتوفر حلول أفضل للبيانات الحساسة فعلًا.

استخدام Docker Secrets عمليًا

يتيح لك Docker Secrets تخزين البيانات الحساسة ونقلها إلى الحاويات بأمان. وعند إرفاق سرّ بحاوية، يتم تركيبه كملف مؤقت في /run/secrets/.

أولًا، يمكنك إنشاء سرّ (مثلًا باستخدام echo "my_secure_pass" | docker secret create app_secret -). بعد ذلك، يستطيع تطبيقك قراءته:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

نظرة عامة على Kubernetes Secrets

على غرار Docker Secrets، يوفّر Kubernetes كائنًا خاصًا به يُسمى "Secrets" لتخزين المعلومات الحساسة وإدارتها. ويمكن تركيب هذه الأسرار كملفات داخل Pods أو كشفها كمتغيرات بيئة.

مهم: تكون Kubernetes Secrets مشفّرة بترميز base64، وليست مشفّرة افتراضيًا. وهذا يعني أنه يمكن فك ترميزها بسهولة. ولتوفير تشفير حقيقي للبيانات الساكنة، تحتاج إلى إعداد إضافي (مثل التكامل مع KMS).

النشر باستخدام K8s Secrets

لنستعرض مثالًا على تعريف Kubernetes Secret ثم استخدامه داخل Pod. يمكنك تعريف الأسرار بتنسيق YAML أو إنشاؤها باستخدام أوامر kubectl.

بعد إنشائه، يمكن لـ Pod الإشارة إلى السر لتركيبه كوحدة تخزين أو حقن قيمه كمتغيرات بيئة.

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

مخازن الأسرار الخارجية

بالنسبة إلى البيانات شديدة الحساسية، أو عند إدارة الأسرار عبر عناقيد وبيئات متعددة، توفر أدوات إدارة الأسرار الخارجية ميزات متقدمة مثل:

  • التخزين المركزي: مصدر موحد للحقيقة لجميع الأسرار.
  • التشفير أثناء السكون وأثناء النقل: ضمانات أمان أقوى.
  • الأسرار الديناميكية: بيانات اعتماد تُنشأ تلقائيًا وتكون قصيرة الأجل.
  • التدقيق والتحكم في الوصول: صلاحيات دقيقة وتسجيل شامل.

تشمل الخيارات الشائعة HashiCorp Vault وAWS Secrets Manager وAzure Key Vault.

ما هو RBAC؟

يُعد التحكم في الوصول المستند إلى الأدوار (RBAC) أسلوبًا لتقييد الوصول إلى النظام على المستخدمين المصرّح لهم. وبدلًا من تعيين الصلاحيات مباشرةً للمستخدمين الأفراد، تُجمع الصلاحيات في "أدوار"، ثم يُعيَّن المستخدمون إلى تلك الأدوار.

في تنسيق الحاويات، يضمن RBAC امتلاك المستخدمين أو التطبيقات أو الخدمات الصلاحيات الضرورية فقط للتفاعل مع الموارد (مثل Pods وDeployments وSecrets).

لبنات RBAC الأساسية في K8s

يستخدم RBAC في Kubernetes عدة أنواع رئيسية من الموارد:

  • Role: يحدد الصلاحيات داخل namespace محدد (مثل "يمكنه عرض pods" في namespace باسم "dev").
  • ClusterRole: يحدد الصلاحيات على مستوى العنقود بأكمله (مثل "يمكنه عرض جميع pods" أو "يمكنه إدارة العقد").
  • RoleBinding: يمنح الصلاحيات المحددة في Role لمستخدم أو مجموعة أو حساب خدمة داخل namespace.
  • ClusterRoleBinding: يمنح الصلاحيات المحددة في ClusterRole لمستخدم أو مجموعة أو حساب خدمة على مستوى العنقود بأكمله.

مثال على RBAC: تقييد الوصول

لنستعرض مثالًا على منح حساب خدمة محدد صلاحية سرد pods والحصول عليها فقط في namespace معين. يفرض ذلك مبدأ الحد الأدنى من الامتيازات.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

تحقق من فهمك

لقد تعلمت كيفية تأمين البيانات الحساسة والتحكم في الوصول. حان وقت اختبار سريع!

مراجعة: تأمين تطبيقاتك

أحسنت! لقد تعلمت في هذا الدرس ركيزتين أساسيتين لأمان الحاويات:

  • إدارة الأسرار: حماية البيانات الحساسة باستخدام Docker Secrets وKubernetes Secrets، مع فهم نقاط قوتهما وحدودهما.
  • التحكم في الوصول المستند إلى الأدوار (RBAC): تطبيق صلاحيات دقيقة في Kubernetes لضمان مبدأ الحد الأدنى من الامتيازات.

بإتقان هذه المفاهيم، ستنشئ تطبيقات تعمل داخل حاويات أكثر متانة وأمانًا!

الأسئلة الشائعة

هل درس «إدارة الأسرار وRBAC» مجاني؟

نعم — نص درس «إدارة الأسرار وRBAC» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «إدارة الأسرار وRBAC»؟

تعلّم استراتيجيات متقدمة لإدارة البيانات الحساسة وتطبيق التحكم في الوصول المستند إلى الأدوار (RBAC) في بيئات الحاويات تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «إدارة الأسرار وRBAC»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. فحص أمان صور الحاويات
  2. أمان الحاويات أثناء التشغيل
  3. إدارة الأسرار وRBAC
  4. سياسات الشبكة وشبكات أقل الصلاحيات
← العودة إلى DevOps Bootcamp