Table of Contents
محاسبات بدون سرور اساساً تغییر داده است که چگونه تیم های توسعه برنامه های کاربردی را بسازند و به کار گیرند، و از لایه زیرساخت جدا شوند تا مهندسان بتوانند بر منطق و سرعت کسب و کار به بازار تمرکز کنند، با این حال، این تغییر پارادایم همچنین یک سطح حمله جدید را معرفی می کند، با API هایی که به عنوان رابط اصلی بین مشتریان و توابع ابر مانند لامسه AWS، توابع Azure، توابع Google، پشتیبانی از این قابلیت های امنیتی ثابت شده است.
درک مدل امنیتی بی سرور
در زیرساخت های سنتی، امنیت بر محیط شبکه متکی است: فایروال، VPN ها و سرورهای سخت افزاری. سرورهای بی سرور که مدل وجود دارد، هیچ سرور مداوم برای سخت شدن وجود ندارد؛ در عوض، هر تابع در حرفه ای است که ephemeral است، و ارائه دهنده ابر محیط زمان را مدیریت می کند. مدل مسئولیت مشترک به این معنی است که شما کد خود را امن می کند، و هویت ارائه دهنده باید به طور بالقوه با مجوز زمینه ای جدید درمان شود.
تهدیدات اصلی در API های بدون سرور
قبل از غواصی در دفاع، مهم است که رایج ترین بردارهای حمله را که نقاط پایانی بی سرور را هدف قرار می دهند، شناسایی کنیم:
- [FLT 1] حمله - SQL، NoSQL، دستور سیستم عامل، یا تزریق LDAP از طریق ورودی غیر بهداشتی تصویب شده به توابع.
- تأیید هویت ثابت - Weak یا از دست رفته اعتبار توکن، مدیریت کلید ضعیف یا به طور نادرست دامنه دسترسی توکن.
- قرار گرفتن در معرض داده های ضروری [FLT 1] - API ها بازگشت محموله های کامل شی زمانی که تنها داده های جزئی مورد نیاز است، نشت زمینه های حساس.
- ] [[ - حمله های بور که دارای محدودیت های ارزی هستند یا شروع سرد پر هزینه می کنند.
- [[۱] [۱۰] [[۱۰]]] [[۱۰]]] [۱]]] [۱۰] [۱]] [۱]] [۱۰]] [۱]] [۱]] [۱۰] [۱]]] [۱۰] [۱]] [۱] [۱]] [۱] [۱]] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱] [۱] [۱]] [۱] [۱]] [۱] [۱] [۱]] [۱]]] [۱] [۱] [۱]]]]]]] [۱]]]] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱]]] [۱] [۱۰] [۱۰] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱۰] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱
هر یک از این تهدیدات را می توان با طراحی عمدی و ابزار یکپارچه در خط لوله استقرار خود کاهش داد.
بهترین روش ها برای محافظت از نقاط پایانی
1- پیاده سازی اعتبار قوی و مجوز
هر درخواست API برای یک تابع بدون سرور باید معتبر و مجاز باشد. [۱] پروتکل های استاندارد صنعتی مانند OAuth 2.0 با OpenID Connect یا موضوع JSON Web Tokens (JT) به طور ایمن از طریق یک تابع API ذخیره شده (و یا دارای مجوز استفاده از طریق یک تابع API)
فراتر از تأیید پایه با ] کنترل دسترسی مبتنی بر کنترل (RBAC) [ یا حتی کنترل دسترسی توزیع شده (ABAC) بروید.به عنوان مثال، یک تابع پردازش تابع تابع تابع AWS باید ادعاهای JWT را بررسی کند تا نقش تماس گیرنده و منابع بازگشت به طور مستقیم با لایه های تأیید شده توسط سرویس های تأیید شده توسط DNS را تأیید کند.
۲- ارتباطات امن
تمام ترافیک API باید در حمل و نقل رمزگذاری شود.استفاده از ]HTTPS (TLS 1.2 یا 1.3) به طور انحصاری، دروازه API یا تعادل بار خود را برای رد درخواست های HTTP اضافه شده، پیاده سازی (FLT:2certificate) به منظور حذف یک گواهی برگشت به شدت TLS است.
اگر توابع شما با یکدیگر ارتباط برقرار کنند (به عنوان مثال، از طریق اتوبوس های رویداد یا صف)، رمزنگاری این ترافیک را نیز رمزگذاری کنید. اکثر ارائه دهندگان ابر به طور پیش فرض برای پیام رسانی بین سرویس را فعال می کنند، اما اطمینان حاصل کنید که تنظیمات محصول شما این را قفل می کند.
۳- محدودیت های سرعت و Throttling
محدود کردن نرخ از API های شما در برابر کاربران سوء استفاده و فرآیندهای تصادفی فرار محافظت می کند.در سطح API Gateway، محدودیت های نرخ انفجار و درخواست های حالت ثابت (به عنوان مثال، 100 درخواست در هر دقیقه در هر دقیقه) استفاده از سطل توکن یا الگوریتم های پنجره کشویی برای اجازه دادن به ترافیک گاه به گاه در حالی که هنوز هم حملات مداوم.
محدودیت های مختلف بر اساس وضعیت احراز هویت. کاربران ناشناس ممکن است 10 درخواست / چند دقیقه (در حالی که کاربران معتبر دارای محدودیت بالاتری هستند، در نظر بگیرید با استفاده از API] کلید با برنامه های کاربردی در AWS API Gateway یا rate قوانین محدود [[F3] در Azure Management API، علاوه بر این، [FLT] منابع خود را از یک سرور کامل جلوگیری کنید:5.
به یاد داشته باشید که در مورد رویدادهای تروژک وارد و هشدار کنید تا بتوانید بین موج های ترافیکی قانونی و تلاش های مخرب تمایز قائل شوید.
۴- اعتبار و تضمین تمام ورودی ها
هرگز به داده های مشتری یا خدمات بالادستی اعتماد نکنید، از یک کتابخانه ی اعتبار سنجی طرح (به عنوان مثال، جوئی، Pydantic یا JSON Schema) در ابتدای هر تابع استفاده کنید.هر ورودی که مطابق با شکل مورد انتظار نیست.
علاوه بر این، تاییدیه نوع محتوا را اجرا کنید، اگر نقطه پایانی شما انتظار JSON را دارد، درخواست ها را با یا انواع MIME پشتیبانی نشده، برای آپلود فایل، اعتبار نوع MIME، اندازه فایل و اسکن برای بدافزار با استفاده از خدمات اختصاصی مانند AWS GuardDuty یا اسکنرهای ویروس شخص ثالث.
تدابیر امنیتی اضافی
سیستم های کاربردی وب (WAFs)
نصب WAF در مقابل دروازه API خود را به طور خودکار فیلتر الگوهای حمله مشترک مانند تزریق SQL، اسکریپت نویسی متقابل محل (XSS)، و تهدیدات شهرت IP. ارائه می دهد WAFs مدیریت شده (AWS WAF، Azure WAF، Cloud Armor) که با تعادل بار و سرویس های IP مشکوک ادغام می شوند.
نظارت کامل و ورود
قابلیت مشاهده برای امنیت غیر قابل مذاکره است.ایجاد لاگ های دقیق برای تمام درخواست های API و توابع در حرفه ها.استفاده از خدمات مانند AWS CloudTrail، Azure Monitor یا Google Cloud loging برای ثبت نام که چه زمانی و از کجا به آن دسترسی پیدا می کند.
- پاسخ های 401/403 (نیروی وحشی احتمالی)
- افزایش ناگهانی در زمان اجرای عملکرد یا نرخ خطا
- دسترسی از جغرافیای غیر معمول یا محدوده IP
- توابع in Jobs که از دروازه API (direct URL in Job) دور می شوند.
logs در سراسر لایه ها -gate، تابع و فروشگاه داده - برای ردیابی زنجیره حمله کامل.
وابستگی و مدیریت پچ
توابع بدون سرور به کتابخانه های شخص ثالث متکی هستند، یک وابستگی آسیب پذیر می تواند کل برنامه شما را به خطر اندازد (FLT:0) تجزیه و تحلیل ترکیب نرم افزار (SCA) [به عنوان مثال، Snyk، Trivy، RTabot] در خط لوله CI / CD شما برای اسکن برای آسیب پذیری های شناخته شده، وابستگی های پین به نسخه های خاص به جای استفاده از [F:3F] از کتابخانه های لایه های مشترک (F:3A:2.
به طور منظم بررسی و به روز رسانی عملکرد زمان و تصاویر پایه (برای سرور بدون کانتینر) تنظیم به روز رسانی های خودکار وابستگی با آزمایش برای جلوگیری از شکستن تغییرات برای توابع میراث با وابستگی های غیر آروماتیک، آنها را جدا و اعمال کنترل اضافی جبران مانند WAF یا اعتبار دقیق ورودی.
امنیت شبکه و حل
در حالی که توابع بی سرور در یک محیط ابر چند مستاجر اجرا می شوند، می توانید کنترل های سطح شبکه را اضافه کنید.مکان توابع که داده های حساس را پردازش می کنند (به عنوان مثال، اطلاعات پرداخت، سوابق بهداشتی) داخل یک (FLT:0VPC [FLT-1] بدون دسترسی به اینترنت عمومی، یک دروازه را به اشتراک بگذارید که درخواست می کند تا تعادل بار خصوصی یا از آن استفاده کند [F:2.
از برای نقاط پایانی اداری یا ابزار داخلی استفاده کنید. گروه های امنیتی شکل و ACL شبکه برای محدود کردن ترافیک ورودی به تنها پورت های ضروری و IPs برای توابع که نیاز به دسترسی به اینترنت دارند (به عنوان مثال، فراخوانی یک API شخص ثالث)، مسیر ترافیک از طریق یک دروازه NAT در یک زیرشبکه کنترل شده.
پیاده سازی امنیت در یک خط لوله CI / CD
امنیت باید در ابتدا خودکار و یکپارچه در توسعه باشد.در یک دروازه امنیتی در خط لوله CI / CD شما که قبل از استقرار اجرا می شود، معرفی شود:
- تست امنیت برنامه استاتیک (SAST) در کد تابع برای تشخیص الگوهای ناامن.
- اسکن وابستگی با شکست در آسیب پذیری های بحرانی
- (به عنوان مثال، برای نقش های IAM پیکربندی نشده، عدم رمزگذاری یا قرار گرفتن در معرض عمومی.
- تست های واحد و یکپارچه سازی که اعتبار، مجوز و منطق اعتبار ورودی را تأیید می کنند.
از محیط های غیرماتیک (بازسازی یا پیش نمایش) برای اجرای تست های امنیتی در برابر نقاط پایانی واقعی سرور قبل از ادغام به تولید استفاده کنید.در نظر بگیرید که از ابزارهای تست امنیتی API مانند استفاده کنید یا OWASP ZAP [LT3] استفاده کنید.
نتیجه گیری
محاسبات بدون سرور سرعت و مقیاس پذیری فوق العاده ای را ارائه می دهد، اما با درمان API به عنوان محیط جدید، اجرای تأیید قوی و مجوز، اجرای رمزگذاری، ترافیک مخرب، به شدت معتبر ورودی های شما، و لایه برداری در WAFs، نظارت و کنترل شبکه، شما می توانید نقاط پایانی خود را در برابر اکثریت حملات مدرن در آغوش محافظت کنید.