# قائمة تدقيق أمني لتطبيق على منصة غيمة (ghaymah.systems) ## قائمة من 15 بنداً للتدقيق الأمني | # | البند | الفئة | الأولوية | |---|-------|-------|----------| | 1 | التحقق من تفعيل شهادة SSL التلقائية من غيمة | Data | عالية | | 2 | تشفير البيانات في PostgreSQL المُدارة (Encryption at Rest) | Data | عالية | | 3 | تشفير اتصالات Redis/Valkey | Data | متوسطة | | 4 | مراجعة صلاحيات الوصول للـ Git Repository المرتبط بالنشر | IAM | عالية | | 5 | تفعيل MFA على حساب غيمة (deploy.ghaymah.systems) | IAM | عالية | | 6 | فحص Docker Images المستخدمة من الثغرات (Trivy/Snyk) | Container Security | عالية | | 7 | عدم تشغيل الحاويات بصلاحيات root | Container Security | عالية | | 8 | تقييد المنافذ المفتوحة (فقط 80/443) | Network | عالية | | 9 | تكوين Network Policies بين الخدمات | Network | متوسطة | | 10 | الحماية من SQL Injection | OWASP | عالية | | 11 | الحماية من XSS وتفعيل CSP Headers | OWASP | عالية | | 12 | تفعيل Rate Limiting على APIs | OWASP | عالية | | 13 | إخفاء Server Headers (X-Powered-By) | OWASP | متوسطة | | 14 | التحقق من تفعيل النسخ الاحتياطي التلقائي | Data | عالية | | 15 | مراجعة سجلات المراقبة والتنبيهات | Data | متوسطة | --- ## شرح تطبيق كل بند على منصة غيمة تحديداً ### 1. SSL التلقائية غيمة توفر شهادة SSL تلقائية لجميع الخطط. للتحقق: - تأكد من أن الدومين يعمل على HTTPS فقط - أضف redirect من HTTP إلى HTTPS - تحقق من صلاحية الشهادة عبر المتصفح ### 2. PostgreSQL المُدارة - تفعيل خيار "اتصالات مشفّرة" في إعدادات قاعدة البيانات - استخدام SSL mode في connection string: ``` postgresql://user:pass@host:5432/db?sslmode=require ``` ### 3. Redis/Valkey - استخدام الاتصال المشفر الافتراضي من غيمة - التأكد من أن Redis غير مكشوف للإنترنت ### 4. Git Repository - مراجعة من لديه صلاحية push على الـ repo - تفعيل branch protection على main/master - استخدام deploy keys بدلاً من personal tokens ### 5. MFA - تفعيله من إعدادات حساب غيمة - استخدام تطبيق authenticator (Google/Microsoft) ### 6. Container Scanning إضافة في CI/CD pipeline: ```yaml - name: Scan image run: trivy image myapp:latest --severity HIGH,CRITICAL ``` ### 7. Non-root Containers في Dockerfile: ```dockerfile USER nonroot:nonroot # أو USER 1000:1000 ``` ### 8. المنافذ - غيمة تدير هذا تلقائياً - تأكد من عدم expose منافذ إضافية في Dockerfile - لا تستخدم `EXPOSE` لمنافذ حساسة ### 9. Network Policies - فصل PostgreSQL عن الإنترنت العام (internal only) - السماح فقط للـ backend بالوصول لقاعدة البيانات ### 10. SQL Injection - استخدام ORM (Prisma, Sequelize, SQLAlchemy) - أو Prepared Statements: ```javascript db.query('SELECT * FROM users WHERE id = $1', [userId]) ``` ### 11. XSS/CSP إضافة headers في التطبيق: ```javascript app.use(helmet({ contentSecurityPolicy: { directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'"] } } })); ``` ### 12. Rate Limiting ```javascript const rateLimit = require('express-rate-limit'); app.use('/api/login', rateLimit({ windowMs: 15 * 60 * 1000, max: 5 })); ``` ### 13. Server Headers ```javascript app.disable('x-powered-by'); // أو استخدام helmet app.use(helmet.hidePoweredBy()); ``` ### 14. النسخ الاحتياطي - خطة g4.medium: نسخ يومي - خطة g5.large: نسخ كل ساعة - تحقق من إعدادات النسخ في لوحة التحكم ### 15. المراقبة - استخدام أدوات الذكاء الاصطناعي والمراقبة المتوفرة في غيمة - إعداد تنبيهات للأحداث المشبوهة