Secrets للبيانات الحساسة
خزّن المعلومات الحساسة، مثل كلمات المرور ومفاتيح API، وأدِرها بأمان باستخدام Secrets
Secrets للبيانات الحساسة درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
حماية المعلومات الحساسة
عند إنشاء التطبيقات، غالبًا ما تتعاملون مع معلومات حساسة مثل كلمات مرور قواعد البيانات، أو مفاتيح API، أو الشهادات الخاصة.
يُعد تخزين هذه المعلومات مباشرةً في شيفرة التطبيق أو ملفات الإعدادات خطرًا أمنيًا كبيرًا! فقد يؤدي ذلك إلى حدوث اختراقات للبيانات وكشف نظامكم.
التعريف بـ Kubernetes Secrets
إن Kubernetes Secrets هي كائنات مصممة لتخزين البيانات الحساسة بأمان داخل العنقود.
تساعدكم على إبقاء المعلومات الحساسة منفصلة عن تعريفات Pod وشيفرة التطبيق، مما يجعل عمليات النشر أكثر أمانًا وأسهل في الإدارة.
- منفصلة: أبقوا البيانات الحساسة خارج صور الحاويات وملفات YAML الخاصة بـ Pod.
- قابلة للوصول: يمكن لـ Pods استخدامها كمتغيرات بيئية أو كملفات مُحمّلة.
Secrets مقارنةً بـ ConfigMaps
قد تتذكرون ConfigMaps من درس سابق، وقد استُخدمت لبيانات الإعدادات غير الحساسة.
تشبهها Secrets، لكنها مخصصة للبيانات الحساسة تحديدًا. يخزن كلاهما أزواج المفتاح والقيمة، لكن Secrets تتعامل مع طبيعة البيانات الحساسة.
- ConfigMaps: للإعدادات العامة غير الحساسة (مثل مستويات السجل ونقاط نهاية API).
- Secrets: للبيانات الحساسة (مثل كلمات المرور والرموز والمفاتيح الخاصة).
تذكروا أن Secrets تكون مُرمّزة بـ base64، وليست مشفّرة افتراضيًا!
إنشاء Secret من قيمة حرفية
إن أبسط طريقة لإنشاء Secret هي من قيمة حرفية باستخدام kubectl create secret generic.
يفيد ذلك مع أجزاء صغيرة ومفردة من البيانات الحساسة، مثل كلمة مرور بسيطة.
kubectl create secret generic my-db-secret \
--from-literal=username=admin \
--from-literal=password=SuperSecretP@ssw0rd!إنشاء Secret من ملفات
بالنسبة إلى البيانات الحساسة الأكبر حجمًا أو متعددة الأسطر، مثل مفتاح خاص أو ملف إعدادات كامل، من الأفضل إنشاء Secret من ملفات.
أنشئوا الملفات محليًا أولًا، ثم أشيروا إليها. سيقرأ Kubernetes محتوى الملفات ويخزّنه.
# Create local files first
echo "my-api-key-12345" > api-key.txt
echo "my-token-abcde" > auth-token.txt
# Create the Secret
kubectl create secret generic app-credentials \
--from-file=api-key.txt \
--from-file=auth-token.txtاستخدام Secrets كمتغيرات بيئية
يمكن لـ Pods استهلاك بيانات Secret بحقنها مباشرةً في متغيراتها البيئية. وهذا شائع مع أزواج المفتاح والقيمة البسيطة.
يمكنكم الإشارة إلى مفاتيح فردية من Secret، أو إلى جميع المفاتيح باستخدام envFrom.
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-env
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: my-db-secret
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: my-db-secret
key: passwordاستخدام Secrets كملفات مُحمّلة
بالنسبة إلى الملفات الحساسة، مثل الشهادات والمفاتيح الخاصة، أو عندما يتوقع التطبيق إعدادات من مسارات ملفات محددة، يمكنكم تحميل Secrets كملفات داخل Pod.
يتحول كل مفتاح في Secret إلى ملف في الدليل المُحمّل، وتكون قيمته هي محتوى الملف.
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-vol
spec:
containers:
- name: my-app
image: nginx:latest
volumeMounts:
- name: app-secret-volume
mountPath: "/etc/secrets"
readOnly: true
volumes:
- name: app-secret-volume
secret:
secretName: app-credentialsأمان Secrets
رغم أن Secrets تحمي البيانات من الاطلاع العرضي، فإنها ليست حلًا شاملًا. تذكروا النقاط التالية:
- ترميز Base64: تكون Secrets مُرمّزة بـ base64، وليست مشفّرة. ويمكن لأي شخص لديه صلاحية الوصول إلى Secret فك ترميزها.
- RBAC: استخدموا التحكم بالوصول المستند إلى الأدوار (RBAC) لتقييد من يمكنه قراءة Secrets أو إنشاؤها أو تعديلها.
- التشفير أثناء التخزين: لتحقيق أمان فعلي، فعّلوا التشفير أثناء التخزين لبيانات etcd (مخزن Kubernetes الداعم). وغالبًا ما يوفر موفرو الخدمات السحابية هذه الميزة.
تحديث Secrets
إذا تغيرت بياناتكم الحساسة، فستحتاجون إلى تحديث Secret. سيؤدي ببساطة إلى إعادة تشغيل kubectl create secret باستخدام القيم الجديدة إلى تحديثها، أو يمكنكم استخدام kubectl apply -f مع ملف YAML محدّث.
لكن Pods قيد التشغيل التي تستهلك Secret لن تلتقط التغييرات تلقائيًا. لتطبيق التغييرات، تحتاجون عادةً إلى إعادة تشغيل Pods التي تستخدم Secret أو إعادة نشرها.
تحقق سريع: Secrets
تخيلوا أن لديكم مفتاح API خاصًا يحتاج تطبيقكم إلى الوصول إليه. ما الطريقة الأكثر أمانًا وملاءمةً لتخزين هذا المفتاح وتوفيره إلى Pod في Kubernetes؟
مراجعة: Secrets للبيانات الحساسة
أحسنتم! لقد تعلمتم كيفية التعامل مع البيانات الحساسة في Kubernetes!
- تخزن Secrets معلومات حساسة مثل كلمات المرور ومفاتيح API.
- تكون مُرمّزة بـ base64، ويمكن استهلاكها كـ متغيرات بيئية أو ملفات مُحمّلة.
- طبّقوا دائمًا RBAC وفكروا في التشفير أثناء التخزين لتحقيق أقصى قدر من الأمان.
- تذكروا أن Pods تحتاج إلى إعادة التشغيل لالتقاط تحديثات Secret.
الأسئلة الشائعة
هل درس «Secrets للبيانات الحساسة» مجاني؟
نعم — نص درس «Secrets للبيانات الحساسة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «Secrets للبيانات الحساسة»؟
خزّن المعلومات الحساسة، مثل كلمات المرور ومفاتيح API، وأدِرها بأمان باستخدام Secrets تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «Secrets للبيانات الحساسة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ConfigMaps للإعدادات
- Secrets للبيانات الحساسة
- وحدات التخزين الدائمة ومطالباتها
- StorageClasses والتوفير الديناميكي