KavLabs
خانهبلاگ
KavLabs

یادداشت‌هایی از ذهن‌های کاوشگر، برای ذهن‌های کنجکاو

پرهام·پرهام·زال·زال·
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
نوشته‌هادسته‌بندی‌هاجستجوی پیشرفتهلاگ تغییرات

©۲٬۰۲۶ KavLabs — تمام حقوق محفوظ است

ساخته‌شده با عشق توسط پرهام و زال

واژه‌نامه
۰۷ اسفند ۱۴۰۴امنیت ابرمبتدیزبان: فارسی

کلید دسترسی و کلید مخفی

مبتدینسخه انگلیسی

یک جفت اعتبارنامه (مثل نام کاربری و رمز عبور) که برای احراز هویت دسترسی برنامه‌محور به سرویس‌های ابری از طریق APIها استفاده می‌شود.

اعتبارنامهawsابرapiاحراز-هویت

تعریف کوتاه

کلید دسترسی رو به‌عنوان نام کاربری و کلید مخفی رو به‌عنوان رمز عبور در نظر بگیر — اما برای برنامه‌ها، نه انسان‌ها. اونها به کد شما اجازه می‌دن با سرویس‌های ابری (AWS، Azure، GCP) بدون ورود از طریق مرورگر صحبت کنه.

تعریف کامل

کلیدهای دسترسی جفت‌های اعتبارنامه‌ای هستند که برای احراز هویت برنامه‌محور به پلتفرم‌های ابری استفاده می‌شوند:

اجزا:

  • شناسه کلید دسترسی: شناسه عمومی (مثل نام کاربری) - AKIAIOSFODNN7EXAMPLE
  • کلید دسترسی مخفی: کلید خصوصی (مثل رمز عبور) - wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

انواع:

  • بلندمدت: به صورت دستی ایجاد می‌شوند، هرگز منقضی نمی‌شوند (پرریسک)
  • موقت: توسط STS صادر می‌شوند، به طور خودکار منقضی می‌شوند (ایمن‌تر)

کاربرد:

bash
1aws s3 ls --access-key AKIA... --secret-key wJalr...

چرا مهم است

  • برای تمام دسترسی‌های برنامه‌محور ابری ضروری است
  • در صورت به خطر افتادن، معادل رمزهای ریشه هستند
  • اغلب در کد هاردکد می‌شوند (رویه بد)
  • هدف اصلی در نقض‌های ابری

چگونه مهاجمان از آن استفاده می‌کنند

  • سرقت از IMDS از طریق SSRF
  • پیدا کردن در مخازن عمومی GitHub
  • استخراج از فایل‌های .env افشا شده
  • کشف در تصاویر Docker یا لاگ‌ها
  • استفاده برای دسترسی به کل زیرساخت ابری

پس از سرقت، مهاجمان می‌توانند:

  • فهرست تمام منابع را ببینند
  • به باکت‌های S3 دسترسی پیدا کنند
  • نمونه‌های جدید راه‌اندازی کنند
  • گروه‌های امنیتی را تغییر دهند
  • حساب‌های پشتی ایجاد کنند

چگونه تشخیص یا پیشگیری کنیم

پیشگیری:

  • هرگز در کد منبع هاردکد نکنید
  • به جای کلیدهای بلندمدت از نقش‌های IAM استفاده کنید
  • کلیدها را به طور منظم (حداکثر ۹۰ روز) بچرخانید
  • مجوزهای کمترین دسترسی را اعمال کنید
  • از AWS Secrets Manager یا مشابه استفاده کنید
  • برای عملیات حساس MFA را فعال کنید
  • مخازن را با ابزارهایی مثل GitGuardian اسکن کنید

تشخیص:

  • نظارت بر استفاده از کلیدها از مکان‌های غیرعادی
  • هشدار در مورد ایجاد کلید جدید
  • ردیابی فراخوانی‌های API بر اساس کلید
  • بررسی وجود کلیدها در مخازن عمومی (هشدارهای GitHub)
  • تحلیل الگوهای دسترسی برای ناهنجاری‌ها

باورهای غلط رایج

  • "کلیدهای موقت برای افشا ایمن هستند" - تا زمانی که معتبرند همچنان خطرناکند
  • "حذف کد کلیدهای لو رفته را پاک می‌کند" - تاریخچه گیت آنها را نگه می‌دارد
  • "کلیدها در مخازن خصوصی ایمن هستند" - مخازن می‌توانند به خطر بیفتند
  • "نقش‌های IAM از کلید استفاده نمی‌کنند" - استفاده می‌کنند، اما موقت

مثال واقعی

نقض Uber (۲۰۱۶)

  • توسعه‌دهندگان کلیدهای AWS را در مخزن خصوصی GitHub ذخیره کرده بودند
  • مهاجم به مخزن دسترسی پیدا کرد
  • از کلیدها برای دسترسی به باکت S3 حاوی ۵۷ میلیون رکورد استفاده کرد
  • هزینه: ۱۴۸ میلیون دلار جریمه

نشت Travis CI (۲۰۲۱)

  • هزاران کلید دسترسی در لاگ‌ها افشا شد
  • پروژه‌های متن‌باز و خصوصی را تحت تأثیر قرار داد
  • کلیدها سطوح دسترسی متفاوتی داشتند

اصطلاحات مرتبط

Credentials, IMDS, API, Cloud Infrastructure, IAM

منابع و مراجع

  • docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html

مفاهیم مرتبط

اعتبارنامه

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

رابط برنامه‌نویسی کاربردی(API)

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

سرویس متادیتای نمونه(IMDS)

سرویسی در محیط‌های ابری که اطلاعاتی درباره خود نمونه‌ها از جمله اعتبارنامه‌های موقت را فراهم می‌کند و در آدرس 169.254.169.254 قابل دسترسی است.

زیرساخت ابری

منابع محاسباتی از راه دور (سرورها، ذخیره‌سازی، شبکه‌ها) که توسط شرکت‌هایی مثل AWS، Google Cloud یا Azure ارائه می‌شوند و از طریق اینترنت بدون نیاز به خرید سخت‌افزار فیزیکی در دسترس هستند.