تصميم البنى الآمنة · الدرس 18

احتفاظ النسخ المحمية واستعادتها

5 دقيقة قراءة

أهداف الدرس

  • يحلل احتفاظ النسخ المحمية واستعادتها ويبرر القرار وحدوده وفق مهمة 1.3.

المهارة والحد

يحمي S3 Object Lock نسخة كائن محددة من الحذف أو الكتابة فوقها خلال مدة احتفاظ أو حجز قانوني، ويعمل مع تفعيل Versioning. لا تجعل اسم الكائن وحده وحدة الإثبات: قد تُنشأ نسخة جديدة بالاسم نفسه وقد يظهر delete marker فوق نسخة محمية. لهذا يختلف سؤال «هل يعيد GetObject الاسم الحالي البيانات؟» عن سؤال «هل بقيت النسخة المحمية ذات versionId قابلة للاستعادة؟». ضع في سجل التعافي معرّف النسخة وتاريخ الاحتفاظ والمفتاح المستخدم للتشفير وسياسة الوصول. لا تكفي علامة retention لإثبات أن الفريق يستطيع فك التشفير أو أن النسخة موجودة في منطقة التعافي المطلوبة.

نموذج القرار

قارن بين مدة الاحتفاظ والحجز القانوني: الأولى تنتهي بحسب التاريخ المحدد، والثاني يستمر حتى رفعه صراحةً من جهة مخولة. لا تضف رقم سنوات تنظيميًا افتراضيًا؛ المدة تأتي من سياسة المؤسسة والمتطلبات السارية خارج هذا المثال. إذا استخدمت النسخ المتماثل مع Object Lock، ينبغي إعداد وجهة تدعم Object Lock أيضًا وتقييم أذونات نسخ معلومات الاحتفاظ والحجز. النسخ المتماثل غير متزامن، فلا تفترض أن وجود سياسة replication يعني وصول آخر نسخة عند لحظة عطل المصدر. افحص حالة النسخ للنسخة المطلوبة وفجوة الزمن وحقوق فك التشفير في الوجهة. الحماية من حذف غير مقصود والاستعادة عند عطل منطقة هدفان مرتبطان لكن لهما اختبارات مختلفة.

حالة محلولة

خطة الحل: اعزل التطبيق المعيب أولًا كي لا يستمر في كتابة نسخ مضللة. دوّن `versionId` وسبب اختيارها وتاريخ احتفاظها، ثم استعد محتواها إلى مفتاح عمل جديد بعد مراجعة الحقوق؛ لا تغيّر النسخة المحمية نفسها. تحقق من hash للبيانات أو خاصية تحقق معتمدة لدى المؤسسة، ومن قدرة المستهلك على قراءة الملف المستعاد، وسجل أثر العملية. إذا كانت الوجهة هدف التعافي، كرر الاختبار باستخدام النسخة الواصلة إليها لا افتراضًا مبنيًا على المصدر. راجع سياسة المفتاح في المنطقة المطلوبة لأن بقاء البايتات المشفرة بلا حق فك تشفير لا يحقق التعافي. احتفظ باختبار رفض حذف النسخة الأصلية طوال فترة الحماية.

الشرط المضاد الذي يغير المسار: إذا لم تصل `v17` بعد إلى الوجهة عند تعطل منطقة المصدر، فلا يصلح تقرير replication المفعّل دليلًا على RPO صفري؛ ابحث عن آخر نسخة متحققة بالوجهة وقس خسارة الزمن، ثم قارنه بالهدف المتفق عليه. وإذا كان المفتاح المخصص للوجهة غير متاح أو أُلغيت صلاحية استخدامه، يصبح إصلاح أذونات KMS جزءًا من الاستعادة، ولا تفيد زيادة أذونات S3 وحدها. وإذا لم تكن Versioning مفعلة في الحاوية وقت الكتابة القديمة، فلا تخترع versionId محميًا. حدود الإجابة يجب أن تستند إلى سجل النسخ الفعلي. ليكن محضر الاستعادة سلسلة أدلة: معرّف الكائن والنسخة، سبب الثقة في محتواها، تاريخ الاحتفاظ أو الحجز، هوية من قرأها، مفتاح التشفير الفعلي، ونتيجة مقارنة البيانات بعد النسخ إلى مسار العمل. إذا طُلبت استعادة نسخة قديمة إلى الاسم الأصلي، حدد أثر ذلك على المستهلكين وعلى أحدث نسخة قبل التنفيذ؛ قد يكون المسار الجديد أكثر أمانًا للمراجعة. اختبر بعد الاستعادة حق الموظف العادي في القراءة المطلوبة، لا حق مسؤول يملك صلاحيات أوسع فقط. ولا تحذف علامة الحذف في بيئة إنتاجية لمجرد أن التدريب أثبت وجود نسخة محمية؛ قرار تغيير العرض الحالي يحتاج مالك بيانات.

تمرين وناتج

مراجعة الحل

خلاصة الدرس

خطة الحل: اعزل التطبيق المعيب أولًا كي لا يستمر في كتابة نسخ مضللة. الشرط المضاد الذي يغير المسار: إذا لم تصل `v17` بعد إلى الوجهة عند تعطل منطقة المصدر، فلا يصلح تقرير replication المفعّل دليلًا على RPO صفري؛ ابحث عن آخر نسخة متحققة بالوجهة وقس خسارة الزمن، ثم قارنه بالهدف المتفق عليه.