الدرس 12 من 24

أمان التخزين والبيانات

النسخ الاحتياطي والتعافي من الكوارث ودورة حياة البيانات

4 دقيقة للقراءة

هجوم فدية Codefinger في يناير 2025 أظهر درساً حاسماً: بدون نسخ احتياطية وقدرات استعادة مناسبة، البيانات السحابية المشفرة تعني نهاية اللعبة. مجموعات الفدية تستهدف بشكل خاص المؤسسات ذات استراتيجيات النسخ الاحتياطي الضعيفة.

استراتيجيات النسخ الاحتياطي

قاعدة 3-2-1 للسحابة

  • 3 نسخ من البيانات
  • 2 أنواع/مواقع تخزين مختلفة
  • 1 نسخة خارج الموقع (منطقة/حساب مختلف)

التكيف السحابي الحديث: 3-2-1-1-0

  • 3 نسخ
  • 2 أنواع وسائط مختلفة
  • 1 خارج الموقع
  • 1 غير قابل للتغيير/معزول
  • 0 أخطاء (نسخ احتياطية موثقة)

AWS Backup

خدمة نسخ احتياطي مركزية عبر AWS:

# إنشاء vault للنسخ الاحتياطي مع التشفير
aws backup create-backup-vault \
    --backup-vault-name my-vault \
    --encryption-key-arn arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012

# إنشاء خطة النسخ الاحتياطي
aws backup create-backup-plan --backup-plan '{
    "BackupPlanName": "DailyBackup",
    "Rules": [{
        "RuleName": "DailyRule",
        "TargetBackupVaultName": "my-vault",
        "ScheduleExpression": "cron(0 5 ? * * *)",
        "StartWindowMinutes": 60,
        "CompletionWindowMinutes": 180,
        "Lifecycle": {
            "MoveToColdStorageAfterDays": 30,
            "DeleteAfterDays": 365
        },
        "CopyActions": [{
            "DestinationBackupVaultArn": "arn:aws:backup:us-west-2:123456789012:backup-vault:dr-vault",
            "Lifecycle": {
                "DeleteAfterDays": 365
            }
        }]
    }]
}'

إصدارات كائنات S3

حماية ضد الحذف العرضي وبرامج الفدية:

# تفعيل الإصدارات
aws s3api put-bucket-versioning \
    --bucket my-bucket \
    --versioning-configuration Status=Enabled

# تفعيل حذف MFA للـ buckets الحرجة
aws s3api put-bucket-versioning \
    --bucket my-bucket \
    --versioning-configuration Status=Enabled,MFADelete=Enabled \
    --mfa "arn:aws:iam::123456789012:mfa/root-account 123456"

قفل كائنات S3 (تخزين غير قابل للتغيير)

تخزين مقاوم لبرامج الفدية:

# إنشاء bucket مع قفل الكائنات
aws s3api create-bucket \
    --bucket immutable-backup \
    --object-lock-enabled-for-bucket

# تعيين الاحتفاظ الافتراضي
aws s3api put-object-lock-configuration \
    --bucket immutable-backup \
    --object-lock-configuration '{
        "ObjectLockEnabled": "Enabled",
        "Rule": {
            "DefaultRetention": {
                "Mode": "GOVERNANCE",
                "Days": 365
            }
        }
    }'

أوضاع الاحتفاظ:

  • Governance: يمكن تجاوزه بصلاحيات خاصة
  • Compliance: لا يمكن تجاوزه من أي شخص، بما في ذلك root

النسخ الاحتياطي والاستعادة في Azure

Azure Backup

# إنشاء Recovery Services vault
az backup vault create \
    --name myVault \
    --resource-group myRG \
    --location eastus

# تفعيل الحذف الناعم (افتراضي: 14 يوم احتفاظ)
az backup vault backup-properties set \
    --name myVault \
    --resource-group myRG \
    --soft-delete-feature-state Enable

# تكوين النسخ الاحتياطي غير القابل للتغيير
az backup vault backup-properties set \
    --name myVault \
    --resource-group myRG \
    --soft-delete-feature-state AlwaysOn

الحذف الناعم والإصدارات للـ Blob

# تفعيل الحذف الناعم
az storage blob service-properties delete-policy update \
    --account-name mystorageaccount \
    --enable true \
    --days-retained 30

# تفعيل الإصدارات
az storage account blob-service-properties update \
    --account-name mystorageaccount \
    --resource-group myRG \
    --enable-versioning true

التخزين غير القابل للتغيير

# تعيين سياسة الاحتفاظ المبنية على الوقت
az storage container immutability-policy create \
    --container-name mycontainer \
    --account-name mystorageaccount \
    --period 365

النسخ الاحتياطي والاستعادة في GCP

إصدارات Cloud Storage

# تفعيل الإصدارات
gcloud storage buckets update gs://my-bucket --versioning

# تعيين قاعدة دورة الحياة للاحتفاظ بالإصدارات
gcloud storage buckets update gs://my-bucket --lifecycle-file=lifecycle.json

lifecycle.json:

{
  "rule": [
    {
      "action": {"type": "Delete"},
      "condition": {
        "age": 365,
        "isLive": false
      }
    }
  ]
}

سياسات الاحتفاظ

# تعيين سياسة احتفاظ الـ bucket (غير قابل للتغيير لفترة الاحتفاظ)
gcloud storage buckets update gs://my-bucket --retention-period=365d

# قفل سياسة الاحتفاظ (دائم - لا يمكن تقصيره)
gcloud storage buckets update gs://my-bucket --lock-retention-period

إدارة دورة حياة البيانات

سياسات دورة حياة AWS S3

{
  "Rules": [
    {
      "ID": "MoveToIA",
      "Status": "Enabled",
      "Filter": {"Prefix": "logs/"},
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER"
        },
        {
          "Days": 365,
          "StorageClass": "DEEP_ARCHIVE"
        }
      ],
      "NoncurrentVersionTransitions": [
        {
          "NoncurrentDays": 30,
          "StorageClass": "GLACIER"
        }
      ],
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 730
      }
    }
  ]
}

مقايضات التكلفة مقابل الحماية

الطبقة AWS Azure GCP حالة الاستخدام
ساخن S3 Standard Hot Standard وصول متكرر
دافئ S3-IA Cool Nearline غير متكرر (30+ يوم)
بارد Glacier Cold Coldline أرشيفي (90+ يوم)
أرشيف Deep Archive Archive Archive طويل المدى (365+ يوم)

اختبار التعافي من الكوارث

هدف نقطة الاستعادة (RPO) وهدف وقت الاستعادة (RTO)

مستوى DR RPO RTO التكلفة الاستراتيجية
النسخ/الاستعادة ساعات-أيام ساعات-أيام $ نسخ احتياطية دورية
ضوء تجريبي دقائق-ساعات ساعات $$ الأنظمة الأساسية تعمل
احتياطي دافئ ثوانٍ-دقائق دقائق $$$ نسخة مصغرة
احتياطي ساخن قريب من الصفر دقائق $$$$ نشط-نشط كامل

قائمة تحقق اختبار DR

- [ ] استعادة النسخ الاحتياطي مختبرة شهرياً
- [ ] الاستعادة عبر المناطق موثقة ربع سنوياً
- [ ] النسخ الاحتياطية غير القابلة للتغيير موثقة (لا يمكن حذفها)
- [ ] مقاييس RTO/RPO مقاسة وموثقة
- [ ] كتب التشغيل محدثة ومتاحة
- [ ] الفريق مدرب على إجراءات الاستعادة
- [ ] النسخ الاحتياطية الخارجية (إن استخدمت) مختبرة

الوحدة التالية: أمان الشبكة والبنية التحتية—VPCs، مجموعات الأمان، والدفاع في العمق. :::

اختبار

الوحدة 3: أمان التخزين والبيانات

خذ الاختبار