الملفات

4.3 KiB

قائمة تدقيق أمني لتطبيق على منصة غيمة (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:

- name: Scan image
  run: trivy image myapp:latest --severity HIGH,CRITICAL

7. Non-root Containers

في 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:
db.query('SELECT * FROM users WHERE id = $1', [userId])

11. XSS/CSP

إضافة headers في التطبيق:

app.use(helmet({
  contentSecurityPolicy: {
    directives: {
      defaultSrc: ["'self'"],
      scriptSrc: ["'self'"]
    }
  }
}));

12. Rate Limiting

const rateLimit = require('express-rate-limit');
app.use('/api/login', rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 5
}));

13. Server Headers

app.disable('x-powered-by');
// أو استخدام helmet
app.use(helmet.hidePoweredBy());

14. النسخ الاحتياطي

  • خطة g4.medium: نسخ يومي
  • خطة g5.large: نسخ كل ساعة
  • تحقق من إعدادات النسخ في لوحة التحكم

15. المراقبة

  • استخدام أدوات الذكاء الاصطناعي والمراقبة المتوفرة في غيمة
  • إعداد تنبيهات للأحداث المشبوهة