DVFaaS - دوال هشّة للغاية كخدمة
مشروع DHIY (انشرها واخترقها بنفسك) يمكنك من نشر وتشغيل مجموعة من الدوال غير الآمنة بشكل فظيع على AWS Lambda

الهدف والجمهور
- نحن في we45 نقدّم الكثير من التدريب حول أمن Serverless وأمن السحابة وأمن الحزم التقنية الحديثة لتطبيقات الويب.
- نؤمن بشدة بوجود حاجة كبيرة للمطورين والمعماريين وDevOps وأفراد الأمن لتعلّم وفهم المخاطر المرتبطة بهذه المكونات الحديثة.
- هذا المشروع هو تتويج لجهودنا التدريبية في تطوير تطبيقات Serverless (FaaS) هشّة عن قصد، وقد قررنا فتحه للمجتمع ككل.
هذا المشروع مثالي لك إذا:
- كنت تريد تعلّم الثغرات الأمنية في تطبيقات Serverless، وتحديداً تطبيقات FaaS.
هذا المشروع ليس مناسباً لك إذا:
- كنت لا تريد نشر (وتشغيل) الدوال الخاصة بك. الفكرة هنا هي أن تتعلم من خلال الممارسة.
يرجى الملاحظة:
- الدوال مصممة للنشر على AWS Lambda. لكن المبادئ والمفاهيم تنطبق على جميع الأنظمة.
- معظم الدوال مكتوبة بلغة Python، وتحديداً في إطار عمل يُسمى
chalice (مخصص لـ Python على AWS Lambda). نشر هذه الدوال في بيئة Lambda الخاصة بك بسيط إلى حد معقول.
- في النهاية، يعتمد المشروع على OWASP Serverless Top 10، الموجود هنا، لكن بعض الأمثلة قد تختلف.
- عمليات (النشر) لهذا المشروع تتم إلى حد كبير باستخدام Terraform. يرجى الاطلاع على الوثائق هنا.
- كل مثال يحتوي على README يتضمن تعليمات التثبيت، وما إلى ذلك. في كثير من الحالات، يكون نشر الأمثلة المتعددة ove
المتطلبات
الكود
- Python 3.6
- Pipenv (إدارة الاعتماديات)
- Chalice
- PyYAML
- HTTPie
- AWS CLI بصلاحيات جذر أو صلاحيات عالية مطلوبة لنشر/إعداد مكونات AWS المختلفة
- jq
موارد AWS
- RDS => MySQL (مؤهل للطبقة المجانية)
- DynamoDB (مؤهل للطبقة المجانية)
- Amazon SNS (نشر/اشتراك للموضوعات)
- Amazon Lambda، كما تعلم.... من أجل الدوال
- Amazon Cloudwatch Logs
إخلاء المسؤولية
يُرجى استخدامها في الحسابات الشخصية/غير الإنتاجية فقط
نحن لا نتحمل المسؤولية عن الطريقة التي يستخدم بها أي شخص هذه الدوال (DVFaaS). لقد أوضحنا أغراض التطبيق ولا ينبغي استخدامه بشكل خبيث. لقد قدّمنا تحذيرات واتخذنا إجراءات لمنع المستخدمين من تثبيت DVFaaS على الحسابات الإنتاجية.
أنت مسؤول عن التفويضات المطلوبة (إن وجدت) التي ستحتاجها لتشغيل هذا على حساب AWS الخاص بك.
التثبيت والإعداد
- استنساخ المشروع عبر Git
git clone <URL>
- نستخدم pipenv لإدارة اعتماديات المشروع. يمكنك استخدام
pipenv install لتثبيت جميع الاعتماديات.
- كل مختبر له مواصفات النشر الخاصة به. في معظم الحالات، يوجد دليل نشر محدد في كل مختبر باسم
ops
والذي يُستخدم لإدارة عمليات النشر
- نوصي بشدة باستخدام
httpie كعميل HTTP لأنه يعمل عبر سطر الأوامر وسهل الاستخدام حقاً
- لبعض عمليات النشر، نستخدم Terraform لتنفيذ النشر وإعداد أدوار AWS IAM وما إلى ذلك.
- يُرجى ملاحظة أنك ستحتاج إلى صلاحيات عالية/جذر على AWS مع aws cli حتى يعمل كل هذا.
- حالياً، نستخدم Chalice (إطار عمل AWS Lambda في Python) لجميع التمارين.
- تحتوي جميع المختبرات على مجلد
.chalice الذي يتعرف عليه chalice لأغراض النشر.
- بالنسبة لمعظم المختبرات، ستحتاج إلى تكوين ملف
.chalice/config.json لضبط النشر. يُرجى قراءة README الخاص بكل مختبر للحصول على هذه المعلومات.
يجب القيام بذلك بعد النشر (أي في أدلة ops حيثما ينطبق ذلك)
- بمجرد الانتهاء، يصبح النشر سهلاً إلى حد معقول، بأمر
chalice deploy بسيط سيدفع دالة Lambda الخاصة بك إلى حساب AWS الخاص بك:
- يُرجى ملاحظة أنك ستحتاج إلى صلاحيات عالية/جذر على AWS مع aws cli حتى يعمل كل هذا.
المهام القادمة
- سلسلة فيديوهات تشرح النشر وتنفيذ الهجمات
- أمثلة GraphQL
- أمثلة NodeJS