Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
167 changes: 167 additions & 0 deletions 208/read.md
Original file line number Diff line number Diff line change
@@ -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 به‌صورت امن پیکربندی شود

- تمام خطاهای امنیتی ثبت و قابل تحلیل هستند
6 changes: 6 additions & 0 deletions 208/requirments.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
fastapi
uvicorn
pip-audit
python-multipart
requests
setuptools