diff --git a/208/read.md b/208/read.md new file mode 100644 index 0000000..0f29170 --- /dev/null +++ b/208/read.md @@ -0,0 +1,167 @@ +# 🛡 پلتفرم پایش و امنیت نرم‌افزار (FastAPI) + +این پروژه یک پلتفرم امنیتی مبتنی بر **FastAPI** است که با هدف پیاده‌سازی و ارزیابی مفاهیم امنیت نرم‌افزار طراحی شده و شامل کنترل دسترسی، شناسایی نفوذ، اسکن آسیب‌پذیری وابستگی‌ها و داشبورد امنیتی می‌باشد. + +این سیستم برای **اهداف آموزشی، تحقیقاتی و تست امنیتی** توسعه داده شده است. + +## 🧱 معماری امنیتی سیستم + +معماری پروژه بر پایه چند ماژول امنیتی مستقل ولی یکپارچه طراحی شده است: + +- **کنترل دسترسی مبتنی بر نقش (RBAC)** + +- **سیستم تشخیص نفوذ (IDS)** + +- **اسکن دوره‌ای وابستگی‌ها (Dependency Scan)** + +- **داشبورد امنیتی ویژه ادمین** + +- **مدیریت کلیدهای رمزنگاری با HashiCorp Vault** + +- **نگهداری موقت داده‌ها و پاکسازی خودکار** + + +| تسک | توضیح | +| ----------------- | ----------------------------------------- | +| کنترل دسترسی | تعیین نقش از طریق Header به‌صورت `X-Role` | +| اسکن وابستگی‌ها | شناسایی آسیب‌پذیری‌ها با `pip-audit` | +| IDS | ثبت و تحلیل رویدادهای امنیتی | +| داشبورد امنیتی | نمایش تلاش‌های ناموفق و حملات شناسایی‌شده | +| Vault | نگهداری امن کلیدهای رمزنگاری | +| نگهداری موقت فایل | حذف خودکار داده‌ها پس از زمان مشخص | +| انطباق امنیتی | هم‌راستا با GDPR و FIPPA | + +## 🚀 نصب و اجرای پروژه + +### 1️⃣ نصب پیش‌نیازها + +`pip install -r requirements.txt + +### 2️⃣ اجرای Vault (حالت توسعه) + +`vault server -dev` +### 3️⃣ تنظیم متغیر محیطی Vault + +`set VAULT_ADDR=http://127.0.0.1:8200` +### 4️⃣ اجرای برنامه + +`uvicorn app.main:app --reload` +## 👤 کنترل دسترسی مبتنی بر نقش (RBAC) + +تمام Endpointهای امنیتی فقط با تعیین نقش قابل استفاده هستند. + +### نمونه Header: + +`X-Role: admin` + +### نقش‌های پشتیبانی‌شده: + +- **admin** → دسترسی کامل + +- **writer** → دسترسی محدود + +- **viewer** → فقط مشاهده + + +در صورت عدم تطابق نقش، درخواست رد شده و توسط **IDS ثبت می‌شود**. +## 📊 داشبورد امنیتی + +داشبورد امنیتی فقط توسط نقش **admin** قابل دسترسی است و اطلاعات زیر را نمایش می‌دهد: + +- تعداد تلاش‌های ناموفق + +- حملات و رخدادهای شناسایی‌شده + +- خطاهای اسکن امنیتی + +- رویدادهای ثبت‌شده توسط IDS + + +### تست داشبورد: + +`curl -H "X-Role: admin" http://127.0.0.1:8000/dashboard` + +--- + +## 🔍 اسکن امنیتی وابستگی‌ها + +در این سیستم از ابزار `pip-audit` برای شناسایی آسیب‌پذیری‌های کتابخانه‌ها استفاده شده است. + +### تست اسکن وابستگی‌ها: + +`curl -H "X-Role: admin" http://127.0.0.1:8000/security/dependency-scan` + +### رفتار سیستم: + +- در صورت وجود آسیب‌پذیری → خطای `409` + +- ثبت رویداد در IDS + +- نمایش در داشبورد امنیتی + + +--- + +## 🔐 مدیریت کلیدهای رمزنگاری (Vault) + +- کلیدهای رمزنگاری در **HashiCorp Vault** نگهداری می‌شوند + +- فقط نقش **admin** اجازه دسترسی دارد + +- هیچ کلیدی به‌صورت Hardcode در پروژه وجود ندارد + + +--- + +## 📜 حریم خصوصی و انطباق امنیتی + +این پروژه مطابق اصول زیر طراحی شده است: + +- عدم ذخیره اطلاعات شخصی (PII) + +- پاکسازی خودکار داده‌های موقت + +- لاگ‌های امنیتی بدون اطلاعات حساس + +- انطباق با اصول **GDPR** و **FIPPA** + + +--- + +## 🧪 تست‌های امنیتی پیاده‌سازی‌شده + +- تست کنترل دسترسی نقش‌ها + +- تست اسکن آسیب‌پذیری‌ها + +- تست تشخیص نفوذ + +- تست داشبورد امنیتی + +- تست مدیریت امن کلیدها + + +--- + +## 🧰 فناوری‌های استفاده‌شده + +- Python + +- FastAPI + +- HashiCorp Vault + +- pip-audit + +- Uvicorn + + +--- + +## ⚠ نکات امنیتی + +- Vault در حالت dev فقط برای تست استفاده شده است + +- در محیط عملیاتی باید Vault به‌صورت امن پیکربندی شود + +- تمام خطاهای امنیتی ثبت و قابل تحلیل هستند \ No newline at end of file diff --git a/208/requirments.txt b/208/requirments.txt new file mode 100644 index 0000000..324bb81 --- /dev/null +++ b/208/requirments.txt @@ -0,0 +1,6 @@ +fastapi +uvicorn +pip-audit +python-multipart +requests +setuptools \ No newline at end of file