بینش مهندسی / ۰۳

امنیت باید داخل طراحی سیستم باشد

وقتی امنیت به بازرسی نهایی تبدیل شود، کار سخت‌تر می‌شود. دسترسی، مرزهای داده، یکپارچه‌سازی‌ها و انتخاب‌های بازیابی، خیلی قبل از تبدیل شدن به چک‌لیست، تصمیم‌های معماری هستند.

همه بینش‌های مهندسی ↗
تصویر مفهومی مهندسی امنیت از مرزهای سیستم و دسترسی کنترل‌شده.

خلاصه تصمیم

نسخه مفید،
بدون نمایش اضافه.

امنیت زمانی قوی‌تر است که سیستم با مرزهای اعتماد روشن شروع شود: چه کسی به چه چیزی دسترسی دارد، چه داده‌ای واقعاً لازم است، داده کجا حرکت می‌کند و هنگام شکست چه اتفاقی می‌افتد.

هیچ معماری‌ای ریسک را صفر نمی‌کند. طراحی خوب کمک می‌کند ریسک را بهتر بفهمیم، محدود کنیم، پایش کنیم و از خطا بازیابی شویم.

نشانه‌هایی که ارزش دیدن دارند

الگوی عملیاتی را ببینید،
نه پاسخ مد روز را.

۰۱نقش‌ها بعد از ساخت رابط تعریف می‌شوند

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

۰۲داده حساس «برای احتیاط» جمع می‌شود

سیستم بدون نیاز عملیاتی روشن، حجم اطلاعاتی را که باید محافظت کند بیشتر می‌کند.

۰۳یکپارچه‌سازی‌های خارجی به‌صورت پیش‌فرض قابل اعتماد فرض می‌شوند

API، Webhook و سرویس شخص ثالث به مرز، اعتبارسنجی و مدیریت خطای صریح نیاز دارند.

۰۴لاگ وجود دارد اما هدف رخداد مشخص نیست

رویدادها ذخیره می‌شوند ولی مشخص نشده چه چیزی باید کشف، بررسی یا نگهداری شود.

۰۵از Backup صحبت می‌شود اما Recovery نه

پشتیبان زمانی ارزش دارد که بازیابی ممکن، فهم‌شده و متناسب با نیاز کسب‌وکار آزموده شده باشد.

۰۱ / مرزهای اعتماد

از اینجا شروع کنید که سیستم مجاز است به چه چیزی اعتماد کند.

کاربر، مدیر، سرویس داخلی و یکپارچه‌سازی خارجی سطح اعتماد یکسانی ندارند. این تفاوت باید در معماری با Authentication، Authorization، Validation و تفکیک مسئولیت دیده شود.

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

۰۲ / مرزهای داده

امن‌ترین داده غیرضروری، داده‌ای است که سیستم هرگز جمع نکرده است.

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

برای داده‌ای که واقعاً لازم است، مالکیت و دیدپذیری باید صریح باشد: چه کسی می‌سازد، چه کسی می‌بیند، چه کسی تغییر می‌دهد و تا چه زمانی باید باقی بماند.

۰۳ / شکست بخشی از طراحی است

سیستم امن برای خطا، قطعی و فرضیات شکسته برنامه دارد.

یکپارچه‌سازی از کار می‌افتد. Credential منقضی می‌شود. انسان اشتباه می‌کند. زیرساخت در دسترس نیست. طراحی امنیت‌محور به‌جای فرض اینکه همه وابستگی‌ها همیشه درست کار می‌کنند، حالت خطای کنترل‌شده، لاگ مفید و مسیر بازیابی دارد.

این به معنی ساخت پیچیده‌ترین Stack امنیتی ممکن نیست. کنترل‌ها باید متناسب با ارزش سیستم، حساسیت داده و پیامد شکست باشند.

۰۴ / امنیت بدون نمایش

یک نشان یا Badge، شاهد امن بودن سیستم نیست.

کلماتی مثل رمزنگاری‌شده، امن یا Enterprise-grade را می‌توان به‌راحتی روی سایت نوشت اما بدون زمینه ارزیابی آن‌ها سخت است. ارتباط مسئولانه امنیتی باید کنترل‌های پیاده‌شده را از فرضیات، کار برنامه‌ریزی‌شده و ارزیابی مستقل جدا کند.

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

قابلیت مرتبط

وقتی استدلال به
یک مسیر اجرایی نیاز دارد.

مشاهده امنیت سایبری و زیرساخت امن ↗شروع پروژه ↗