رفتن به محتوا
IROSG.
EN
مقاله‌ها

Zero Trust در شبکه؛ Identity، Policy و Automation بدون شعار

Zero Trust محصول واحد نیست. هویت، context، least privilege، segmentation و automation باید در یک چرخهٔ قابل اندازه‌گیری کنار هم قرار بگیرند.

تصویر رسمی منبع مرتبط با Zero Trust در شبکه؛ Identity، Policy و Automation بدون شعار

چرا این موضوع مهم است؟

اصل کلیدی این است که location شبکه به‌تنهایی اعتماد ایجاد نمی‌کند. identity دستگاه/کاربر، posture، resource و action باید در تصمیم policy دیده شوند. segmentation فقط یکی از ابزارهاست.

در یک سیستم واقعی، قبل از انتخاب ابزار باید مدل ذهنی درستی از لایه‌ها داشته باشید. هر بار که یک مشکل را فقط با یک command یا تنظیم حفظی حل می‌کنیم، دانش به نسخه و محیط خاص گره می‌خورد. روش بهتر این است که ورودی، state، policy، مسیر داده و خروجی را مشخص کنیم. بعد ابزار را برای مشاهدهٔ یکی از این لایه‌ها انتخاب کنیم. این رویکرد باعث می‌شود وقتی نسخه یا توزیع عوض شد، هنوز بدانیم دنبال چه evidenceای هستیم.

مدل معماری

در موضوع پیاده‌سازی اصول Zero Trust در شبکه و عملیات، componentها را روی یک مسیر ساده بکشید و مرز مسئولیت هرکدام را مشخص کنید. state پایدار، state runtime، dependency بیرونی و نقطهٔ اعمال policy را جدا کنید. وقتی diagram ساده دارید، خطا از یک «سیستم بزرگ و مبهم» به چند مرحلهٔ قابل آزمون تبدیل می‌شود.

روش عملی کار

asset و identity inventory را قبل از policy پیچیده بسازید. access flowهای واقعی را ثبت و least privilege را روی گروه کوچک اعمال کنید. automation باید drift و exception را قابل مشاهده کند.

برای Production، تغییر باید قابل اندازه‌گیری و قابل برگشت باشد. baseline قبل از تغییر شامل نسخه، config مؤثر، log سالم، metric اصلی و یک تست end-to-end است. rollout را با canary شروع کنید؛ بعد از هر مرحله هم تست مثبت و هم تست منفی داشته باشید. اگر success criterion از قبل نوشته نشده باشد، بعد از اجرا به‌سادگی هر نتیجه‌ای را می‌توان «موفق» تفسیر کرد. rollback هم باید تمرین شود، نه اینکه فقط یک دستور روی کاغذ باشد.

از دید امنیت

تبدیل Zero Trust به خرید یک محصول یا block کردن همه‌چیز failure رایج است. policy بدون owner و telemetry به exceptionهای دائمی تبدیل می‌شود.

از دید امنیت، کم‌کردن سطح دسترسی مهم است اما availability و قابلیت عیب‌یابی هم جزو امنیت عملیاتی‌اند. secretها، tokenها، capabilityها، network path و logهای حساس را جدا بررسی کنید. هر exception باید owner، دلیل و تاریخ بازبینی داشته باشد. کنترل‌هایی که هیچ‌کس نمی‌تواند اثرشان را مشاهده یا علتشان را توضیح دهد، در زمان incident به مانع تبدیل می‌شوند.

آزمایشگاه پیشنهادی

یک سرویس داخلی را پشت identity-aware policy بگذارید، دو role با دسترسی متفاوت بسازید و revoke را آزمایش کنید. سپس automation را طوری اجرا کنید که تغییر policy audit شود.

برای هر مرحله timestamp و خروجی را ذخیره کنید. یک failure کنترل‌شده ایجاد کنید تا مطمئن شوید monitoring واقعاً failure را می‌بیند. سپس سیستم را به baseline برگردانید و زمان recovery را ثبت کنید.

عیب‌یابی بر پایهٔ Evidence

Troubleshooting را با تغییر config شروع نکنید. اول محل دقیق failure را پیدا کنید: آیا ورودی وارد سیستم می‌شود؟ آیا state مورد انتظار ساخته شده؟ آیا policy اجازه می‌دهد؟ آیا خروجی از component خارج می‌شود؟ log، packet capture، metric و state API باید به یک timeline مشترک وصل شوند. نبودن event نیز evidence است؛ اگر request قبل از یک component دیده می‌شود و بعد از آن نه، دامنهٔ مسئله کوچک شده است.

Performance و ظرفیت

عملکرد را فقط با average نسنجید. p95/p99 latency، saturation، queue depth، retry و resource pressure تصویر بهتری می‌دهند. تغییری که در lab کوچک سریع است ممکن است زیر concurrency یا dataset واقعی bottleneck متفاوتی نشان دهد. capacity limitها را قبل از rollout بزرگ شناسایی کنید و alert را به thresholdهای قابل اقدام وصل کنید.

Production readiness

قبل از rollout نهایی، owner، change window، blast radius، success metric و rollback trigger باید مشخص باشند. اگر dependency خارجی دارید، رفتار هنگام timeout یا unavailable شدن آن را تست کنید. اگر config به چند host می‌رود، rollout مرحله‌ای و inventory دقیق لازم است. یک تغییر خوب باید observable، explainable و reversible باشد.

Runbook و انتقال دانش

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

قبل از Production چه چیزی را اعتبارسنجی کنیم؟

نتیجهٔ Lab را مستقیم به Production تعمیم ندهید. یک change plan کوتاه بسازید که در آن دامنهٔ تغییر، owner، زمان اجرا، dependencyها، success metric و rollback trigger مشخص باشد. ابتدا روی canary یا درصد کوچکی از workload اجرا کنید و حداقل یک چرخهٔ واقعی restart، credential rotation یا deploy دوم را ببینید؛ بسیاری از خطاها در اولین اجرای سالم ظاهر نمی‌شوند. رفتار هنگام unavailable شدن dependency خارجی، پر شدن disk، timeout شبکه و ورودی نامعتبر را نیز بررسی کنید. اگر feature امنیتی است، test منفی باید نشان دهد مسیر غیرمجاز واقعاً بسته است؛ اگر feature performance است، benchmark باید با load و dataset نزدیک به واقعیت اجرا شود. در پایان، تصمیم rollout را با evidence ثبت کنید، نه با جملهٔ مبهم «به‌نظر خوب است».

نگهداری بلندمدت و بازبینی دوره‌ای

معماری بعد از deploy ثابت نمی‌ماند. نسخهٔ سیستم‌عامل، dependency، policy سازمان، certificate، endpoint و حجم workload تغییر می‌کنند. برای همین باید بازبینی دوره‌ای تعریف شود: نسخه‌های پشتیبانی‌نشده را پیدا کنید، exceptionهای قدیمی را ببندید، alertهای بی‌ارزش را حذف کنید و recovery را دوباره تمرین کنید. اگر configuration در Git نگه‌داری می‌شود، drift میان state واقعی و repository را اندازه بگیرید. اگر ابزار SaaS یا سرویس خارجی است، تغییر API، pricing، limit و مدل permission را دنبال کنید. مستندات باید تاریخ review داشته باشند تا تیم بداند کدام فرض‌ها هنوز معتبرند. نگهداری خوب یعنی سیستم بعد از شش ماه هم قابل توضیح و قابل بازیابی باشد، نه اینکه فقط روز اول deploy موفق بوده باشد.

جمع‌بندی

هدف این مقاله دربارهٔ پیاده‌سازی اصول Zero Trust در شبکه و عملیات ارائهٔ یک دستور جادویی نیست؛ هدف ساختن مدل ذهنی است. وقتی معماری را بفهمید، baseline داشته باشید و تغییر را با evidence کوچک کنید، ابزارها قابل تعویض می‌شوند اما روش حل مسئله باقی می‌ماند. منبع اصلی این مقاله از Red Hat انتخاب شده تا جزئیات فنی قابل پیگیری باشند.

چک‌لیست سریع

  • مسئله را در یک جمله تعریف کن.
  • component و مرز اعتماد را مشخص کن.
  • baseline را قبل از تغییر ذخیره کن.
  • یک test مثبت و یک test منفی بساز.
  • تغییر را با canary شروع کن.
  • evidence را timestampدار نگه دار.
  • rollback را واقعاً تمرین کن.
  • نتیجه و exceptionها را در runbook ثبت کن.

از فهرست دارایی به قانون قابل اجرا

شروع عملی Zero Trust تهیه یک نقشه ارتباطی کوچک است. برای نمونه، سرویس گزارش باید به پایگاه داده خواندنی متصل شود، اما نیازی به دسترسی مدیریتی میزبان پایگاه داده ندارد. این دو نیاز را در دو سطر مستقل بنویسید: چه هویتی، برای چه عملی، به کدام منبع و در چه شرایطی مجاز است. اگر پاسخ فقط «شبکه داخلی مجاز است» باشد، تصمیم هنوز بر محل قرارگیری تکیه دارد. نشانی شبکه می‌تواند یکی از ورودی‌های سیاست باشد، ولی جای هویت و هدف ارتباط را نمی‌گیرد.
در مرحله شناسایی، مشاهده جریان‌های موجود کمک می‌کند وابستگی‌های فراموش‌شده پیدا شوند. با این حال، هر ارتباط مشاهده‌شده نباید خودکار به مجوز دائمی تبدیل شود. شاید ارتباط مربوط به یک اسکریپت قدیمی یا حساب مشترک باشد. مالک سرویس باید نیاز را تأیید کند و مدت اعتبار آن را مشخص سازد. اگر وابستگی مالک ندارد، تبدیل آن به استثنا مشکل را پنهان می‌کند. سیاست خوب علاوه بر مجوز، مسئول پاسخ‌گویی هنگام تغییر یا خرابی را روشن می‌سازد.

هویت انسان و هویت ماشین را جدا کنیم

کاربر انسانی ممکن است با احراز هویت چندعاملی و تأیید وضعیت دستگاه وارد شود. سرویس پس‌زمینه به سازوکار متفاوتی مانند اعتبار کوتاه‌عمر و احراز هویت مبتنی بر محیط اجرا نیاز دارد. کپی کردن گذرواژه شخصی مدیر در اسکریپت، هویت ماشین ایجاد نمی‌کند. در مثال گزارش‌گیری، حساب سرویس باید تنها مجوز خواندن داده لازم را داشته باشد و امکان استفاده از همان اعتبار برای ورود تعاملی محدود شود. رخدادهای آن حساب نیز باید به برنامه و محیط مشخص قابل نسبت دادن باشند.
چرخه عمر هویت به اندازه صدور آن مهم است. حذف یک برنامه، جابه‌جایی مالک یا پایان همکاری باید به لغو مجوز مربوط منجر شود. برای آزمون، یک حساب آزمایشی را غیرفعال کنید و ببینید دسترسی‌های فعال چه زمانی قطع می‌شوند. اعتبار کوتاه‌عمر می‌تواند دامنه زمانی سوءاستفاده را کم کند، اما اگر مجوز تازه بدون بررسی مناسب صادر شود، کوتاه بودن اعتبار مشکل اصلی را حل نمی‌کند. نقطه صدور و سیاست آن نیز باید قابل مشاهده و محدود باشد.

خودکارسازی بدون تبدیل اشتباه به حادثه بزرگ

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

رفتار هنگام خرابی سامانه تصمیم‌گیری

اگر سامانه هویت یا ارزیابی سیاست در دسترس نباشد، سرویس چه می‌کند؟ پاسخ برای صفحه عمومی، سامانه پرداخت و دسترسی مدیریتی یکسان نیست. باز ماندن نامحدود دسترسی خطر ایجاد می‌کند؛ بسته شدن ناگهانی همه مسیرها هم می‌تواند عملیات حیاتی را متوقف کند. تصمیم باید صریح، محدود و همراه با مدت اعتبار باشد. مسیر اضطراری نیز باید حساب مشخص، ثبت رخداد و روند لغو داشته باشد. دسترسی اضطراری دائمی و مشترک، به مرور به مسیر عادی و خارج از نظارت تبدیل می‌شود.

TRACEABLE KNOWLEDGE

منابع و مطالعهٔ بیشتر

01
Red Hat — مرجع فنیhttps://www.redhat.com/en/blog/building-zero-trust-networks-red-hat-ansible

آخرین بررسی تحریریه:

IROSG / EDITORIAL

خبرها و معرفی مشاهیر با نگارش مستقل و ذکر منبع تهیه شده‌اند. اعتبار و مجوز تصاویر در بخش منابع همین صفحه نگه‌داری می‌شود تا متن زیر عکس‌ها شلوغ نشود. داده‌های مرجع CVE با اعتباردهی به منابع اصلی ارائه می‌شوند.

سیاست تألیف و حقوق تصاویر ↗

ادامهٔ کشف.

مقاله‌ها ↗