بسیاری از پروژه‌های امنیتی با انتخاب مقصد آغاز می‌شوند: لینوکس، کانتینر، ابر خصوصی یا یک توزیع استاندارد. اما مسیر گذار را فناوری مقصد تعیین نمی‌کند؛ ماهیت دارایی‌های موجود تعیین می‌کند. اگر پیش از شناخت دارایی، راه‌حل انتخاب شود، سازمان یا تغییر را روی سامانه‌ای تحمیل می‌کند که تحمل آن را ندارد، یا ریسک سامانهٔ فرسوده را پشت ظاهری مدرن پنهان می‌سازد.

زیرساخت واقعی معمولاً محصول طراحی یکپارچه نیست. در طول سال‌ها، نیاز فوری، تغییر مدیر، محدودیت بودجه و تصمیم‌های مقطعی چند توزیع، نسخه، روش نصب و سیاست امنیتی متفاوت ساخته‌اند. هر تصمیم در زمان خود شاید منطقی بوده، اما مجموعهٔ آن‌ها به ناهمگونی، فرسودگی و نبود حاکمیت عملیاتی منجر شده است.

ناهمگونی آگاهانه با ناهمگونی ناخواسته فرق دارد

تنوع آگاهانه هدف دارد، پیامد آن شناخته شده و هزینهٔ اداره‌اش پذیرفته شده است. ناهمگونی ناخواسته باقی‌ماندهٔ تصمیم‌هایی است که دیگر قابل دفاع یا حتی به‌درستی قابل یادآوری نیستند. چند توزیع برای یک کاربری، نسخه‌های متفاوت یک سرویس و تنظیماتی که فقط در ذهن افراد وجود دارند، نشانهٔ خروج زیرساخت از کنترل معماری‌اند.

این ناهمگونی هنگام اعمال یک سیاست امنیتی آشکار می‌شود. مشخص نیست کنترل روی کدام سامانه قابل اجراست، آیا نتیجه در همهٔ محیط‌ها یکسان خواهد بود و آیا آزمون موفق یک بخش قابل تعمیم است. در نتیجه تغییر یا بیش از حد محافظه‌کارانه می‌شود یا ناقص و ناهماهنگ اجرا می‌گردد.

پذیرش این واقعیت به معنای تسلیم نیست؛ نقطهٔ شروع بازگرداندن حاکمیت است. بدون inventory واقعی و شناخت وابستگی، هر برنامهٔ گذار روی فرضی سست ساخته می‌شود.

فرسودگی با یک شکست بزرگ شروع نمی‌شود

فرسودگی تدریجی است. هر به‌روزرسانی کمی پرریسک‌تر می‌شود، هر تغییر وابستگی پنهان تازه‌ای آشکار می‌کند و «دست نزدن» به سامانه به راهبرد نانوشته تبدیل می‌شود. سیستم همچنان کار می‌کند و همین کارکردن، تعویق را توجیه می‌کند.

چرخهٔ معیوب روشن است: هرچه سامانه قدیمی‌تر می‌شود، تغییر سخت‌تر است؛ و هرچه تغییر سخت‌تر می‌شود، به تعویق می‌افتد. در نهایت بخش‌هایی با برچسب «حساس»، «بحرانی» یا «Legacy» به مناطق ممنوعه تبدیل می‌شوند که همه خطرشان را می‌دانند، اما کسی مالک تصمیم دربارهٔ آن‌ها نیست.

از منظر امنیتی، خطر زمانی عادی می‌شود. runtime منسوخ، الگوریتم قدیمی و دسترسی گسترده به دلیل نبود حادثهٔ آشکار «قابل تحمل» فرض می‌شوند، بدون آنکه این پذیرش آگاهانه، مستند یا زمان‌مند باشد. نداشتن حادثه، به‌ویژه وقتی مشاهده‌پذیری ضعیف است، به معنای نداشتن ریسک نیست.

سه گروه، سه منطق تصمیم

گروهوضعیتمنطق اصلی
الف: قابل مهاجرت یا بازاستقرارمنطق کسب‌وکار از بستر اجرا قابل تفکیک استتغییر کنترل‌شده برای ساخت الگوی تکرارپذیر
ب: حساس و نیازمند انزواقابل تغییر است اما تحمل اختلال یا مهاجرت مستقیم کم استکاهش شعاع آسیب و دامنهٔ اعتماد، نه الزاماً انتقال
ج: غیرقابل ارتقارفتار امنیتی قابل اصلاح یا پشتیبانی نیستتصمیم مدیریتی برای مهار موقت، جایگزینی یا خروج

این دسته‌بندی برای مستندسازی نیست؛ برای جداکردن مسیر تصمیم است. همهٔ دارایی‌ها نباید با یک الگوی مهاجرت، یک سرعت یا یک معیار موفقیت مواجه شوند.

گروه الف؛ جایی برای ساخت الگوی واقعی

دارایی گروه الف الزاماً جدید نیست. ویژگی آن این است که بدون تغییر بنیادین منطق کسب‌وکار می‌تواند بازاستقرار یابد. وب‌سرور، API، سرویس پردازشی، صف و حتی برخی پایگاه‌های داده ممکن است به سیستم‌عامل یا محیط فعلی وابستگی سطحی داشته باشند.

نمونهٔ مناسب باید به اندازه‌ای واقعی باشد که چرخهٔ کامل استقرار، پشتیبان‌گیری، پایش، به‌روزرسانی و بازیابی را بیازماید، اما آن‌قدر بحرانی نباشد که هر خطا غیرقابل پذیرش شود. انتقال مکانیکی یک سرویس از Windows Server به لینوکس، بدون بازبینی کاربر سرویس، دسترسی‌ها، پیکربندی و مشاهده‌پذیری، فقط محل ریسک را عوض می‌کند.

معیار موفقیت «بالا آمدن سرویس» نیست. پس از گذار باید پاسخ روشن باشد:

  • سرویس قابل کنترل‌تر و قابل مشاهده‌تر شده است؟
  • روش استقرار برای دارایی بعدی قابل تکرار است؟
  • تنظیمات و secrets از دستکاری دستی خارج شده‌اند؟
  • بازگشت و بازیابی واقعاً آزموده شده‌اند؟
  • ریسک کم شده یا دست‌کم شفاف و صاحب‌دار شده است؟

گروه الف سکوی یادگیری است. اگر هر دارایی به مجموعه‌ای تازه از استثناها نیاز داشته باشد، الگو ساخته نشده است.

گروه ب؛ مهاجرت همیشه پاسخ درست نیست

دیتابیس مرکزی، سامانهٔ هویت، سرویس مالی یا صنعتی ممکن است از نظر فنی قابل انتقال باشد، اما تحمل عملیاتی آن را نداشته باشد. خطای رایج، نگاه صفر و یکی است: یا مهاجرت کامل یا رهاکردن کامل.

در این گروه، هدف اصلی کاهش blast radius است. مسیرهای دسترسی باید محدود و مستند شوند، شبکه تفکیک شود، اعتماد پیش‌فرض کاهش یابد و رفتار سامانه قابل مشاهده گردد. ممکن است سیستم‌عامل یا برنامه همان بماند، اما اگر نفوذ یا شکست رخ داد، اثر آن نباید به کل زیرساخت سرایت کند.

برای سامانهٔ هویت، انزوا یعنی هر سرویس فقط به همان بخش از اطلاعات و اختیار هویتی دسترسی داشته باشد که نیاز دارد. برای دیتابیس مرکزی، به معنای کاهش مصرف‌کنندگان مستقیم، کنترل مسیرهای اتصال و حذف دسترسی عمومی تیم‌هاست. برای سامانهٔ صنعتی، ممکن است اولویت با تثبیت محیط، bastion کنترل‌شده و پایش غیرفعال باشد، نه نصب سریع نسخهٔ جدید.

انزوا زمانی واقعی است که دقیقاً معلوم باشد چه ریسکی را کم می‌کند. قرار دادن سامانه در VLAN جدا بدون تعریف ارتباط مجاز، خیلی زود با استثناهای عملیاتی سوراخ می‌شود. تصمیم «فعلاً مهاجرت نمی‌دهیم» نیز باید صاحب، بازهٔ اعتبار و شرط بازبینی داشته باشد؛ وگرنه تعویق به پذیرش دائمی ریسک تبدیل می‌شود.

گروه ج؛ مسئلهٔ امنیتی، نه پروژهٔ فنی

دارایی گروه ج قدیمی است، اما قدیمی‌بودن معیار اصلی نیست. معیار، ناتوانی ساختاری در اصلاح رفتار امنیتی است. نسخهٔ پشتیبانی‌شده وجود ندارد، runtime قابل ارتقا نیست، وابستگی با کتابخانه و دیتابیس منسوخ گره خورده یا فعال‌کردن کنترل‌های جدید سامانه را از کار می‌اندازد.

Java 6 یا 7، نسخه‌های قدیمی .NET Framework، سرویس وابسته به glibc یا OpenSSL منسوخ، schema ناسازگار با نسخهٔ جدید دیتابیس و برنامه‌ای که فقط با دسترسی گسترده کار می‌کند، نمونه‌های رایج‌اند. چنین سامانه‌ای ممکن است روی لینوکس جدید یا داخل کانتینر اجرا شود، اما رفتار امنیتی آن اصلاح نشده است.

اگر یک برنامهٔ آسیب‌پذیر داخل image قرار گیرد، کانتینر فقط بسته‌بندی و توزیع آن را آسان کرده است. اگر برای کارکرد برنامه مجبور شویم seccomp، LSM یا اسکن را غیرفعال کنیم، زیرساخت مدرن سپر دفاعی خود را برای حفظ Legacy کنار گذاشته است. کانتینر مرز امنیتی مستقل نیست و نمی‌تواند runtime آسیب‌پذیر را سالم کند.

چرا مهاجرت ریسک گروه ج را حذف نمی‌کند؟

مهاجرت زمانی کاهش ریسک ایجاد می‌کند که رفتار امنیتی پس از آن قابل اصلاح، قابل به‌روزرسانی و قابل اتکا شود. اگر همان runtime، همان الگوی دسترسی و همان وابستگی باقی بماند، تغییر سیستم‌عامل یا محل اجرا فقط سطح حمله را جابه‌جا می‌کند.

خطر بزرگ‌تر، شکاف میان تصور و واقعیت است. مدیران سامانه را «مهاجرت‌داده‌شده» و بنابراین امن‌تر می‌بینند، در حالی که هستهٔ آسیب‌پذیر پنهان شده است. پروژه از نظر تحویل موفق گزارش می‌شود و سؤال اصلی—آیا این سامانه باید همچنان فعال بماند؟—بی‌پاسخ می‌ماند.

برای گروه ج، مهاجرت فقط وقتی معنا دارد که بخشی از بازطراحی، جایگزینی یا خروج تدریجی باشد. در غیر این صورت بازآرایی ریسک است، نه کاهش آن.

خطاهای رایج در مواجهه با Legacy

  • پنهان‌کردن در زیرساخت جدید: ماشین مجازی، کانتینر یا cloud نام ریسک را عوض می‌کند، نه ماهیت آن را.
  • تبدیل انزوا به راه‌حل دائمی: برای گروه ج، انزوا کنترل موقت است و باید برنامهٔ خروج داشته باشد.
  • افزودن وابستگی تازه: هر اتصال و قابلیت جدید، هزینهٔ حذف آینده را بیشتر می‌کند.
  • نبود مالک ریسک: تیم فنی تحویل گرفته، امنیت هشدار داده و مدیریت تحمل کرده، اما کسی تصمیم را نپذیرفته است.
  • تفسیر سکوت به‌عنوان ثبات: نبود لاگ و مشاهده‌پذیری می‌تواند حادثه را پنهان کند، نه حذف.
  • توجیه با هزینهٔ گذشته: سرمایه‌گذاری انجام‌شده دلیل ادامهٔ وابستگی نیست؛ باید هزینهٔ آینده و پیامد شکست سنجیده شود.

کادر تصمیم مدیریتی

برای هر دارایی گروه ج باید پاسخ صریح وجود داشته باشد:

  1. آیا مسیر ارتقا یا جایگزینی واقعی و آزموده‌شده وجود دارد؟
  2. اگر نه، ادامهٔ فعالیت چه ریسک و چه پیامد مأموریتی دارد؟
  3. چه کنترل جبرانی‌ای واقعاً شعاع آسیب را کم می‌کند؟
  4. مالک رسمی پذیرش ریسک چه کسی است؟
  5. این پذیرش تا چه تاریخی معتبر است و چه رخدادی آن را باطل می‌کند؟
  6. چه اتصال یا قابلیت تازه‌ای از امروز ممنوع می‌شود تا هزینهٔ خروج افزایش نیابد؟
  7. برنامهٔ خروج، جایگزینی یا بازطراحی چه نقطهٔ تصمیم بعدی دارد؟

امنیت Legacy با «تمیزکردن» ظاهر آن حل نمی‌شود. تصمیم درست ممکن است مهاجرت، انزوا، بازطراحی یا حتی ادامهٔ موقت فعالیت باشد؛ اما باید روشن، صاحب‌دار، زمان‌مند و قابل بازبینی باشد. همان‌گونه که در مقالهٔ استاندارد، کنترل و مکانیزم گفته شد، استثنا نشانهٔ ضعف نیست؛ استثنایی که بی‌صاحب و بی‌پایان بماند، ضعف حاکمیت است.