الأسرار
خزّن مفاتيح API وكلمات المرور مشفّرةً، واحقنها في تطبيقاتك كمتغيّرات بيئة.
ما الغرض من الأسرار
بعض القيم لا يصحّ أن تبقى في متغيّرات البيئة (environment variables) العادية: مفاتيح API للدفع، ورموز التوقيع، وكلمات مرور قواعد بيانات خارجية. الأسرار (Secrets) هي مخزن المنصّة المشفّر لهذه القيم تحديداً. تُنشئ كل سر داخل مشروع واحد، فتحفظه المنصّة مشفّراً عند التخزين، ولا تعرضه إلا حين تطلب ذلك صراحةً، وتحقنه في التطبيقات التي تختارها كمتغيّر بيئة عادي.
تبقى متغيّرات البيئة العادية هي المكان الصحيح للإعدادات غير الحسّاسة: مفاتيح
الميزات (feature flags)، والروابط العامة، ومستويات السجلّات. بل إن لوحة
التحكم ترفض أسماء المتغيّرات التي تبدو سرّية؛ فالأسماء التي تحمل دلالات مثل
SECRET أو TOKEN أو API_KEY مكانها هنا.
بيانات الدخول إلى قواعد البيانات المُدارة
لا تحتاج إلى الأسرار أصلاً: ربط القاعدة يحقن DATABASE_URL / REDIS_URL
عنك، ولن تتعامل مع كلمات المرور تلك يدوياً أبداً.
أين تجد الأسرار
الأسرار عنصر رئيسي في الشريط الجانبي للوحة التحكم. افتحه لترى كل سر في مشاريعك: اسمه، ومشروعه، وعدد التطبيقات المرتبطة به، وتاريخ آخر تحديث. أما القيم فلا تظهر في القائمة أبداً.
إنشاء سر
اضغط سر جديد واملأ:
- المشروع: المشروع الذي ينتمي إليه السر؛ لا تستطيع استخدامه سوى التطبيقات الموجودة في المشروع نفسه.
- الاسم: معرّف بأحرف لاتينية صغيرة وأرقام وشرطات (من 2 إلى 63 حرفاً)،
مثل
stripe-api-key. يُتحقَّق من الاسم أثناء كتابتك. - القيمة: القيمة الحسّاسة نفسها، حتى 64 كيلوبايت. يعرض عدّاد بايتات أسفل الحقل المساحة المتبقية.
- الوصف (اختياري): ملاحظة لنفسك مستقبلاً عن ماهيّة القيمة ومصدرها.
يتّسع المشروع الواحد حتى 100 سر، ويجب أن يكون الاسم فريداً داخل المشروع.
ربط سر بتطبيق
إنشاء السر يخزّنه فقط؛ الربط هو ما يوصله إلى تطبيق يعمل فعلاً. في صفحة تطبيق Docker، تعرض بطاقة الأسرار ما هو مربوط بالفعل وتتيح لك ربط المزيد:
- اضغط ربط سر واختر أحد أسرار المشروع.
- اختر اسم متغيّر البيئة الذي يقرؤه كودك، مثل
STRIPE_API_KEY. تقترح النافذة اسماً مشتقاً من اسم السر؛ يجب أن يكون الاسم بصيغةUPPER_SNAKE_CASEوألا يتعارض مع متغيّر موجود أو متغيّر تحقنه المنصّة. - أكّد بزر ربط. توصل المنصّة القيمة إلى التطبيق وتعيد نشره، فيكون المتغيّر حاضراً منذ التشغيل التالي.
يقرأ كودك متغيّر البيئة فحسب، من دون حاجة إلى تكامل خاص بالمنصّة. وتظهر الأسماء المربوطة أيضاً في محرّر متغيّرات البيئة للتطبيق كمدخلات للقراءة فقط بوسم «مُدارة من المنصّة»، فلا يمكن الكتابة فوقها بمتغيّر عادي يحمل الاسم نفسه.
الفصل من البطاقة نفسها أيضاً: اضغط فصل، ويختفي المتغيّر من التطبيق مع إعادة النشر التالية.
كشف القيمة
من صفحة الأسرار، يعرض زر كشف القيمة المخزّنة للسر (تبقى مخفيةً حتى تضغط عرض القيمة، ويمكنك نسخها بضغطة واحدة). الكشف قابل للتكرار عن قصد؛ هذا مخزنك أنت، وتستطيع قراءة ما فيه متى شئت.
كل عملية كشف تُسجَّل في سجلّ النشاط الخاص بمشروعك، فتعرف دائماً من اطّلع على أي قيمة ومتى.
تدوير القيمة
تعديل قيمة السر هو عملية تدوير (rotation): تُحفظ القيمة الجديدة، ويُعاد تشغيل كل تطبيق مربوط بالسر تلقائياً حتى تلتقط العمليات العاملة القيمة الجديدة. تقرأ التطبيقات متغيّرات البيئة عند بدء التشغيل، فلولا إعادة التشغيل لبقيت على القيمة القديمة؛ المنصّة تتولّى ذلك عنك.
وإذا تعذّر إيصال القيمة الجديدة إلى تطبيقاتك فوراً، تخبرك المنصّة بذلك صراحةً بدل أن تتظاهر بأن الأمر نجح: أعد محاولة التحديث وسيكتمل الإيصال.
حذف السر
السر الذي ما زال مربوطاً بتطبيق لا يمكن حذفه؛ تخبرك لوحة التحكم بعدد التطبيقات التي ما زالت تستخدمه. افصله من كل مكان أولاً، ثم احذفه. هكذا لن تكسر تطبيقاً يعمل دون أن تنتبه، بإزالة قيمة يعتمد عليها.
التسعير
الأسرار متاحة حالياً ضمن معاينة مجانية. لا يُخصم من رصيدك اليوم مقابل إنشاء سر أو تخزينه أو كشفه أو تحديثه أو ربطه أو فصله. إذا أُضيف تسعير حسب الاستخدام لاحقاً، فسنحدّث بطاقة الأسعار وهذه الصفحة قبل بدء أي خصم.
الأتمتة (API)
كل ما سبق متاح عبر REST API للأتمتة. أهم نقاط النهاية (endpoints)، وكلها تحت مشروعك:
# create a secret
curl -X POST https://api.alawadi.cloud/v1/projects/$PROJECT_ID/secrets \
-H "Authorization: Bearer $TOKEN" \
-d '{"name": "stripe-api-key", "value": "sk_live_...", "description": "Stripe live key"}'
# attach it to a container app as STRIPE_API_KEY
curl -X POST https://api.alawadi.cloud/v1/projects/$PROJECT_ID/containers/$CONTAINER_ID/secrets \
-H "Authorization: Bearer $TOKEN" \
-d '{"secret_id": "<secret-id>", "env_name": "STRIPE_API_KEY"}'
# read the value back (recorded in the activity log)
curl -X POST https://api.alawadi.cloud/v1/projects/$PROJECT_ID/secrets/$SECRET_ID/reveal \
-H "Authorization: Bearer $TOKEN"تجد الأشكال الكاملة للطلبات والاستجابات، مع كل رموز الأخطاء، في مرجع واجهة الأسرار.