المستوى: متوسط — هذا المقال يفترض إنك شغّلت service واحد على الأقل في production واتعاملت مع environment variables، لكن لسّه ما طبّقتش solution مركزي للـ secrets.
لو عندك 8 services شغّالين على Kubernetes وكل واحد فيهم بياخد DB_PASSWORD من Secret object منفصل، يوم اللي هتغيّر فيه باسورد الـ DB هتدخل 8 places وتعمل rollout restart 8 مرات. HashiCorp Vault بيخلّي العملية دي 8 ثوانٍ بدل ساعة، مع audit log كامل لكل قراءة.
المشكلة باختصار
الطريقة الشائعة في إدارة الـ secrets داخل المؤسسات الصغيرة بتعتمد على Kubernetes Secrets أو env files مرفوعة من الـ CI. ده شغّال لما عندك 2 أو 3 services. لمّا الفريق يكبر والـ services توصل لـ 15 وأكتر، ثلاث مشاكل بتظهر في وقت واحد:
- الـ secret rotation بياخد ساعات لأن لازم تعدّل في كذا مكان وتعمل deploy لكل واحد.
- مفيش audit log حقيقي. مين قرأ الباسورد امبارح الساعة 3 الفجر؟ مفيش جواب.
- الـ developer لازم يكون عنده الباسورد في حاجة على لاب توبه علشان يعمل debug، ده breach صغير في حدّ ذاته.
المثال للمبتدئ: خزنة البنك
تخيّل عمارة فيها 8 شقق. كل شقة عندها مفتاح للسرداب اللي فيه الذهب. لو ضاعت نسخة من المفتاح من ساكن واحد، لازم تغيّر الترباس وتوزّع 8 مفاتيح جديدة على كل الشقق. ده اللي بيحصل بالظبط مع Kubernetes Secrets.
بدّل الموديل ده. خلّي السرداب نفسه في البنك. كل ساكن لازم يروح للبنك بهويته، الموظف يفتح الخزنة، يديله الذهب اللي يحتاجه فقط، ويسجّل في لوج إن فلان دخل الساعة كذا وأخد كذا. ده Vault بالظبط: مكان واحد بيحفظ السرّ، أي تطبيق محتاج يفتح بهوية مصدّقة، وكل دخول بيتسجّل.
التعريف العلمي الدقيق
HashiCorp Vault هو centralized secrets management system بيوفّر 4 capabilities أساسية:
- Static secrets storage (KV engine): تخزين مشفّر باستخدام AES-256-GCM مع master key مفصول عن الـ data.
- Dynamic secrets: توليد credentials قصيرة العمر (TTL غالباً ≤ 1 ساعة) لـ databases و cloud providers لحظياً عند الطلب.
- Identity-based access: authentication عبر Kubernetes ServiceAccount أو AWS IAM أو OIDC، بدل ما يكون فيه shared password بين كل التطبيقات.
- Audit logging: لوج كامل لكل عملية قراءة وكتابة، بصيغة JSON قابلة لـ ingestion مباشرة في SIEM زي Splunk أو ELK.
المعمارية مبنية على Shamir's Secret Sharing لتقسيم الـ master key على 5 unseal keys (الافتراضي)، ولازم 3 منهم لفك تشفير الخزنة بعد كل restart. ده بيمنع إن شخص واحد لوحده يقدر يفتح الـ Vault.