الأمان

    كيفية تسليم ملف الإعدادات إلى مطوّر بأمان

    افصل الإعدادات عن الأسرار، وأرسل القيم السرية عبر رابط لمرة واحدة أو مرفق يُحذف نهائيًا بعد تنزيل واحد، وأبقِ ملف .env خارج git.

    LinkPilot Team · الفريق الذي يطور LinkPilot ويديره في TetraCore, LLC · عن LinkPilot

    ينضم مطوّر جديد أو يبدأ متعاقد عمله، فيكون أول ما يحتاجه ملف .env الذي يجعل المشروع يعمل. وهذا الملف في العادة خليط من إعدادات لا ضرر منها ومن أكثر القيم حساسية لدى الفريق، ولهذا كثيرًا ما ينتهي في رسالة مباشرة أو مرفقًا برسالة بريد إلكتروني عنوانها «config».

    لكي تسلّم ملف الإعدادات إلى مطوّر بأمان، تعامل معه على أنه شيئان: إعدادات يمكن أن تنتقل عبر أي طريق، وأسرار تنتقل مرة واحدة عبر قناة لا تحتفظ بنسخ. يشرح هذا الدليل كيف تفصل بينهما، وكيف ترسل النصف السري، وما الذي تقوله للمطوّر كي يبقى الملف آمنًا بعد وصوله.

    اقرأ الملف كأن كل سطر فيه منشور للعموم

    افتح الملف وصنّف كل سطر في واحدة من مجموعتين.

    • الإعدادات: مستويات السجلات، والمنافذ، ومفاتيح تفعيل الميزات، ونقاط الاتصال غير الإنتاجية، ومعرّفات العملاء العامة. مكانها المستودع في ملف مثال، ويمكن إرسالها بأي طريقة تشاء.
    • الأسرار: كلمات مرور قواعد البيانات، ومفاتيح API، وأسرار التوقيع، والمفاتيح الخاصة، وأسرار عملاء OAuth، وكل ما يمنح وصولًا. ابحث عن PASSWORD و SECRET و TOKEN و KEY و PRIVATE، ثم اقرأ بقية الملف، لأن سلسلة الاتصال التي تتضمن كلمة المرور لا تعلن عن نفسها.

    ثم اسأل عمّا سيفعله المطوّر. التطوير المحلي على بيئة الاختبار (staging) يحتاج إلى قيم تلك البيئة. ولا يحتاج إلى مفاتيح الإنتاج، ولا إلى المفتاح الفعلي لمزود الدفع لمجرد أن الملف يحتوي عليه.

    أبقِ الأسرار خارج الملف المحفوظ في المستودع

    يوثّق الملف .env.example المحفوظ في المستودع كل متغير بقيمة مؤقتة. وتُحقن القيم الحقيقية وقت التشغيل من متغيرات البيئة أو من مدير أسرار أو من مخزن الأسرار الخاص بالمنصة. بهذا النمط يقتصر ما تسلّمه على القيم السرية، وتكون النسخة المحلية لدى المطوّر هي المكان الوحيد الذي تجتمع فيه كلها.

    # .env.example (committed)
    DATABASE_URL=postgres://app:CHANGE_ME@staging-db.internal:5432/app
    STRIPE_SECRET_KEY=sk_test_CHANGE_ME
    SESSION_SECRET=CHANGE_ME
    LOG_LEVEL=debug
    

    أضف .env إلى .gitignore قبل أن يملك أحد نسخة حقيقية منه، وفكّر في خطاف pre-commit مثل gitleaks حتى يفشل أي commit عابر فورًا.

    أعطِ المطوّر بيانات دخول خاصة به حيثما أمكن

    التسليم فرصة أيضًا للتوقف عن المشاركة. إذا كانت قاعدة البيانات تدعم مستخدمين أفرادًا، فأنشئ للمطوّر مستخدمًا بالصلاحيات التي يحتاجها عمله وبتاريخ انتهاء. وإذا كانت واجهة API تقدم مفاتيح مقيدة، فأصدر له مفتاحًا باسمه. ويشرح دليل بيانات دخول قاعدة البيانات للمتعاقدين هذا النمط. فبيانات الدخول المصنوعة لشخص واحد يمكن سحبها من شخص واحد.

    كيف تسلّم القيم السرية

    ينجح طريقان، وكلاهما لا يترك الملف في رسالة.

    الصق الأسطر السرية في رابط لمرة واحدة. افتح أداة الرابط السري، والصق الأسطر التي تحتوي على أسرار فقط، وأنشئ الرابط. يُشفَّر النص في متصفحك قبل تخزينه، وتُحذف النسخة المخزنة نهائيًا عند أول فتح للرابط، وتنتهي صلاحية الرابط بعد ساعة واحدة أو 24 ساعة أو سبعة أيام إن لم يفتحه أحد. ويتسع الرابط بدون حساب لما يصل إلى 10,000 حرف، وهذا يكفي معظم ملفات .env عدة مرات.

    أرفق الملف كاملًا برابط سري. من حساب LinkPilot بعد تسجيل الدخول يمكنك إرفاق ما يصل إلى ثلاثة ملفات بحجم 9 MB لكل منها بالسر. يُشفَّر كل ملف في متصفحك بمفتاح مشتق من مفتاح السر نفسه، فلا يحتفظ الخادم أبدًا بالملف غير مشفر، ويُحذف المرفق بعد التنزيل الوحيد. وهذا الطريق أفضل حين يجب أن يصل الملف مطابقًا بايتًا ببايت، مثل ملف JSON لحساب خدمة أو مخزن مفاتيح.

    وفي الحالتين:

    1. تحقق من هوية المطوّر عبر قناة التوظيف أو التعاقد، لا عبر العنوان الذي طلب الملف.
    2. اضبط مدة الصلاحية على الفترة التي سيستخدمها فعلًا: ساعة واحدة إن كان ينتظر، ويومًا إن كان في منطقة زمنية أخرى.
    3. اضبط حد المشاهدات على مرة واحدة.
    4. أضف عبارة مرور في حساب Pro لقيم الإنتاج، وأرسلها عبر قناة مختلفة.
    5. أرسل الرابط مع ملاحظة من سطر واحد تقول ما هو وأين يوضع الملف. وأرسل الإعدادات غير السرية منفصلة، أو أشر إلى ملف المثال في المستودع.

    دعوة إلى خزنة هي الطريق الأفضل حين يكون المطوّر موظفًا دائمًا وفريقك يستخدم أصلًا مدير أسرار بصلاحيات لكل مطوّر. استخدم الرابط لمرة واحدة في الفترة التي تسبق إعداد ذلك، ولكل من لن يدخل الخزنة أبدًا.

    أخبر المطوّر أين يضع الملف

    قد ينتهي تسليم نظيف نهاية سيئة إذا وصل الملف إلى مجلد مشترك. أرسل هذه التعليمات مع بيانات الاتصال:

    • احفظه باسم .env في جذر المشروع ولا مكان غيره. وتأكد أن .gitignore يشمله قبل أول commit.
    • لا تلصق القيم في التذاكر أو المحادثات لتسأل إن كانت صحيحة. أبلغ عن المتغير الناقص أو غير الصالح باسمه فقط، وسيصدر المرسل قيمة جديدة.
    • التغيير عند المغادرة. حين ينتهي التعاقد تُغيَّر القيم الموجودة في ذلك الملف. قل ذلك من البداية حتى لا يتفاجأ أحد.

    تأكد ثم نظّف

    اطلب من المطوّر أن يؤكد اسم الملف والبيئة وعلامة غير سرية، مثل تعليق برقم الإصدار في السطر الأول. وإذا أظهر رابط لمرة واحدة أنه فُتح قبل أن يصل إليه المطوّر، فاعتبر كل قيمة فيه مكشوفة وغيّرها.

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

    أدوات لهذا المقال

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

    يرسل LinkPilot رابطًا سريًا يختفي بعد فتحه.

    يُشفَّر في متصفحك، ويظهر محتواه مرة واحدة، ثم يُحذف نهائيًا. بدون حساب.

    إنشاء رابط سري

    اقرأ أيضًا

    الأمان

    مشاركة الأسرار بأمان في فرق العمل عن بُعد

    مشاركة الأسرار بأمان في فرق العمل عن بُعد في خمس خطوات: الجرد، والخزنة أو الرابط لمرة واحدة حسب العمر، وثلاث قواعد، والأداة داخل Slack، وخطة للتسريبات.

    الأمان

    طريقة آمنة لتسليم بيانات الدخول بين الفرق

    طريقة آمنة لتسليم بيانات الدخول بين الفرق: اختر الخزنة أو الرابط لمرة واحدة حسب الاستخدام، وحدّد الصلاحيات، وعيّن مسؤولًا، وأبطل الوصول في موعده.

    تتبع الروابط

    كيفية إدارة الروابط بنطاقات العملاء عبر حسابات متعددة

    إعداد الوكالة لروابط عملائها على نطاقاتهم: مساحة عمل ونطاق لكل عميل، وأدوار تفصل الوكالة عن العميل، وقائمة تحقق لإنهاء العلاقة مع العميل.