أفضل الممارسات للتخزين الآمن لمفاتيح API

في الماضي ، رأيت العديد من الأشخاص يستخدمون مستودعات Git لتخزين المعلومات الحساسة المتعلقة بمشاريعهم.

مؤخرًا ، رأيت بعض الأشخاص يعلنون أنهم يخزنون مفاتيح API في مستودعات GitHub الخاصة بهم. أكتب هذه المقالة لأنه يجب على الأشخاص فهم مخاطر تخزين مفاتيح واجهة برمجة التطبيقات مع التعليمات البرمجية الخاصة بك.

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

إذن ، ما هي بالضبط مشكلة تخزين المعلومات الحساسة بالقرب من التعليمات البرمجية الخاصة بك في مستودع Git؟

لماذا لا يجب عليك تخزين مفاتيح API في مستودعات Git

يعد تخزين مفاتيح API ، أو أي معلومات حساسة أخرى ، على أحد gitالمستودعات أمرًا يجب تجنبه بأي ثمن. حتى إذا كان المستودع خاصًا ، يجب ألا تراه كمكان آمن لتخزين المعلومات الحساسة.

لنبدأ بالنظر في سبب فكرة سيئة تخزين مفاتيح API في المستودعات العامةgit .

بطبيعتها ، gitيمكن لأي شخص الوصول إلى مستودع عام.

بمعنى آخر ، يمكن لأي شخص لديه اتصال بالإنترنت الوصول إلى محتويات gitمستودع عام. ليس ذلك فحسب ، بل يمكنهم أيضًا تصفح جميع الأكواد الموجودة داخل المستودع وربما حتى تشغيلها. إذا قمت بتخزين مفتاح API على مستودع عام ، فأنت تقوم بالنشر في مكان مفتوح حتى يتمكن أي شخص من رؤيته.

كشفت عملية بحث حديثة عن client_secret على GitHub أن هناك أكثر من 30000 التزام من المحتمل أن يعرض مفتاح API وسرًا. في بعض الحالات ، يمكنك نسخ الرمز ولصقه فقط للوصول إلى واجهة برمجة التطبيقات على الفور.

أصبحت هذه المشكلة مهمة للغاية لدرجة أن بعض الشركات تستثمر في الموارد للتأكد من عدم وجود أي أسرار ومفاتيح API مسربة.

في العام الماضي ، بدأ Slack في البحث عن رموز API المكشوفة وإبطالها بشكل استباقي. يمنع هذا الإجراء الوصول الضار إلى حسابات Slack ولكن لا يمكن العثور على جميع الرموز المميزة المسربة.

لذلك ، هذا يحدث في مستودعات Git العامة. ماذا عن الخاصين ؟ لماذا هذه مشكلة؟

تتعرض مستودعات Git الخاصة المستضافة على خدمات مثل GitHub و GitLab و Bitbucket لنوع مختلف من المخاطر. عندما تقوم بدمج تطبيق جهة خارجية مع إحدى الخدمات المذكورة ، فقد تفتح مستودعاتك الخاصة لتلك الأطراف الثالثة. ستتمكن هذه التطبيقات من الوصول إلى مستودعاتك الخاصة وقراءة المعلومات الواردة بداخلها.

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

لذا ، أين يجب تخزين مفاتيح API؟

هناك العديد من البدائل للتخزين الآمن لمفاتيح وأسرار واجهة برمجة التطبيقات. يتيح لك بعضها استخدام مستودع Git الخاص بك وتشفير البيانات الحساسة. تعتبر الأدوات الأخرى أكثر تعقيدًا وتقوم بفك تشفير المعلومات الحساسة كجزء من سير عمل النشر. لنلقِ نظرة على بعض الحلول المتاحة.

git-remote-gcrypt

يتيح لك الحل الأول تشفير مستودع Git بالكامل. يقوم git-remote-gcrypt بعمل ذلك عن طريق إضافة وظائف إلى مساعدي Git عن بُعد بحيث تصبح طبقة نقل مشفرة جديدة متاحة. يتعين على المستخدمين فقط إعداد جهاز تحكم عن بعد جديد مشفر ودفع الكود إليه.

تابع القراءة إذا كنت تبحث عن حل أكثر دقة يتيح لك تشفير الملفات الفردية.

git-secret

git-secretهي أداة تعمل على جهازك المحلي وتقوم بتشفير ملفات معينة قبل دفعها إلى مستودعك. وراء الكواليس ، git-secretهناك برنامج نصي شيل يستخدم GNU Privacy Guard (GPG) لتشفير وفك تشفير الملفات التي قد تحتوي على معلومات حساسة.

git-crypt

حل آخر هو git-crypt. إنه مشابه جدًا لـ git-secret في طريقة عمله ، لكن لديه بعض الاختلافات المثيرة للاهتمام.

أول شيء يجب ملاحظته git-cryptهو أنه ملف ثنائي قابل للتنفيذ وليس برنامج نصي شل ، مثل git-secret. كونك ملفًا ثنائيًا قابل للتنفيذ يعني أنه لاستخدامه عليك أولاً تجميعه ، أو أنك بحاجة إلى إيجاد توزيع ثنائي لجهازك.

إذا كنت تستخدم جهاز Mac ، فأنت محظوظ لأن HomeBrew يقدم حزمة git-cryptجاهزة للتثبيت. كل ما عليك فعله هو تشغيل تثبيت الشراب git-cryptعلى محطة طرفية.

صندوق اسود

BlackBox هي أداة تم إنشاؤها بواسطة Stack Overflow. هذه هي الشركة التي تقف وراء مجتمعات الأسئلة والأجوبة الشائعة مثل Stack Overflow نفسها و Server Fault و Super User. تعد BlackBox أداة قوية لأنها تعمل مع Git بالإضافة إلى أنظمة التحكم في الإصدارات الأخرى مثل Mercurial و Subversion.

كما أنه يدعم تشفير سلاسل صغيرة وليس فقط ملفات كاملة. يفعل ذلك عند العمل مع Puppet ويستخدم Puppet's Hiera ، أداة البحث عن القيمة الرئيسية لبيانات التكوين.

إن امتلاك القدرة على تشفير وفك تشفير السلاسل الفردية يجعل BlackBox حلاً رائعًا لتأمين مفاتيح وأسرار API.

تكوين Heroku وتكوين Vars

إذا كنت تعمل مع Heroku ، فيجب ألا تخزن أي معلومات حساسة مثل مفاتيح API والأسرار في مستودعات Git الخاصة بك. يقدم Heroku حلاً يتيح لك ضبط متغيرات التكوين.

يمكن للتطبيق الخاص بك بعد ذلك الوصول إلى محتويات متغيرات التكوين هذه أثناء وقت التشغيل من خلال الوصول إلى متغيرات البيئة المقابلة. على الرغم من عدم تشفير القيم ، يتيح لك هذا الحل تجنب استخدام مستودع Git لتخزين مفاتيح واجهة برمجة التطبيقات.

يوفر Dokku ، وهو حل مفتوح المصدر مثل Heroku ، نفس الإمكانات.

أسرار عامل ميناء

في نهاية مجموعة الحلول الممكنة توجد أسرار Docker. تم تقديم هذا الحل بواسطة Docker في فبراير 2017. وقد اكتسب شعبية منذ ذلك الحين.

تتيح لك Docker Secrets تحديد المتغيرات المشفرة وإتاحتها لخدمات معينة أثناء وقت التشغيل. يتم تشفير الأسرار أثناء النقل وأثناء الراحة.

هذا النهج يجعل Docker secrets الحل الأمثل لتخزين واستخدام مفاتيح وأسرار API بطريقة آمنة ومشفرة.

ملخص

الآن يجب أن تكون على دراية بمخاطر تخزين المعلومات الحساسة مثل مفاتيح API والأسرار في مستودعات Git العامة والخاصة.

يعد فهم الطرق المحتملة التي قد تتعرض بها مستودعاتك أمرًا أساسيًا لتقييم وتخفيف المخاطر المرتبطة بتسرب المعلومات.

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

أنا متأكد من أن هناك المزيد من الحلول التي يمكن أن تساعدك في تحقيق نفس النتائج.