اسرار داکر چگونه کار میکنند و توسعهدهندگان در کجا از آنها سوءاستفاده میکنند
اسرار داکر برای مدیریت ایمن دادههای حساس مانند کلیدهای API، رمزهای عبور پایگاه داده و توکنها معرفی شدند. آنها با نصب اسرار به عنوان فایلهایی در ... کار میکنند. /اجرا/اسرار درون یک کانتینر، که فقط برای سرویس کانتینر شده قابل دسترسی است. این مکانیزم، حداقل در تئوری، اسرار را از متغیرهای محیطی و گزارشها دور نگه میدارد. مشکل از جایی شروع میشود که توسعهدهندگان به جای استفاده از رمزهای Docker Compose، این مکانیسم را دور میزنند. به درستی از ویژگیها استفاده کنید، اسرار اغلب به صورت کدنویسی شده در میآیند dockerfile, commitبه Git منتقل میشوند، یا از طریق متغیرهای محیطی تزریق میشوند. این میانبرها، اسرار را در معرض افشای تصادفی از طریق گزارشها، لایههای کانتینر یا تاریخچه نسخه قرار میدهند.
⚠️ مثال ناامن، در محیط عملیاتی استفاده نشود
پس از اضافه شدن این خط، به صورت لایه لایه در تصویر قرار میگیرد. هر کسی که به تصویر دسترسی داشته باشد (حافظه پنهان ساخت، رجیستری یا ...) CI/CD سیاهههای مربوط) میتوانند آن را استخراج کنند. حتی بدتر از آن، این الگو اغلب در طول بررسیها مورد توجه قرار نمیگیرد زیرا «فقط کار میکند».
اسرار Docker Compose و خطرات پنهان در پیکربندیهای مشترک
Docker Compose برنامههای چند کانتینری را ساده میکند، اما اسرار Docker Compose با خطرات پنهان همراه است. توسعهدهندگان اغلب به اشتراک میگذارند داکر کامپوز.yml or .NS فایلها را در تیمها و محیطهای مختلف، از طریق Git، Slack یا درایوهای مشترک، مدیریت کنید.
⚠️ مثال نمایشی، رمزهای واقعی را در فایلهای نسخهبندیشده قرار ندهید
مشکل؟ اینها داکور نوشتن اسرار ارجاعات، فایلهای محلی را فرض میکنند، اما در عمل، این فایلها به صورت ناامن نسخهبندی یا توزیع میشوند. رازها به مخازن گیت نفوذ میکنند و در ... ظاهر میشوند. pull requestsیا در پوشههای دیگر کپی شوند. این فرض که «همه ما میدانیم که نباید commit «اسرار» یک سیاست امنیتی نیست.
بدتر از آن، محیطهایی مانند مرحلهبندی و تولید ممکن است از همان دادهها دوباره استفاده کنند docker-compose.ymlو حس کاذب جدایی ایجاد میکند. یکی به اشتباه پیکربندی شده است .NS فایل، و اسرار تولید به یک محیط آزمایشی تزریق میشوند.
CI/CD Pipelines: جایی که مدیریت مخفی داکر دچار مشکل میشود
In CI/CD, اسرار داکر اگر منزوی نشوند، از هم میپاشند. رازها اغلب فاش میشوند در سه مکان: لاگها، لایههای تصویر و دوندههای مشترک.
سیاهههاچاپ مراحل CI پژواک $SECRET_KEY برای اشکالزدایی مشکلات. اما این گزارشها ذخیره میشوند، گاهی اوقات به صورت عمومی. ابزارهایی مانند اقدامات GitHub or گیتلب لاگها را برای چند روز یا چند هفته ذخیره کنید.
لایههای تصویراگر یک Dockerfile در حین ساخت، یک راز اضافه کند:
⚠️ مثال ناامن، این مورد اسرار موجود در لایههای تصویر را افشا میکند
که راز داکر اکنون بخشی از یک لایه تصویر است. حتی اگر فایل را بعداً حذف کنید، لایه قبلی در تاریخچه تصویر باقی میماند.
دوندههای مشترک: زیاد CI/CD پلتفرمها از runnerهای مشترک استفاده میکنند. اگر رمزها به درستی تعیین محدوده یا پاکسازی نشوند، سایر buildها میتوانند به آنها دسترسی پیدا کنند. بدتر از آن، رمزها گاهی اوقات به طور پیشفرض به عنوان متغیرهای محیطی به همه مراحل ارسال میشوند.
ایمنسازی داکر در کد، Pipelineو ثبتها
قفل کردن اسرار داکرتیمهای توسعه به دفاع لایهای نیاز دارند:
- از مدیران مخفی استفاده کنید مانند AWS Secrets Manager، HashiCorp Vault یا Doppler. این ابزارها در زمان اجرا، اطلاعات محرمانه را به صورت چرخشی و ایمن به کانتینرهای شما تزریق میکنند.
- محدودهها را محدود کنیدهرگز اسرار تولید را در محیطهای توسعه/آزمایش افشا نکنید. از کنترل دسترسی مبتنی بر نقش (RBAC) برای محدود کردن افرادی که میتوانند اسرار را تزریق یا بخوانند، استفاده کنید.
- از متغیرهای ENV برای رمزها اجتناب کنید. استفاده از راز داکر یا به طور صریح، فایلهای مخفی را به عنوان فایل سوار کنید.
- پاکسازی ساختارهامطمئن شوید که رازها در تصاویر ذخیره نشدهاند یا در فایلهای میانی باقی نماندهاند.
- اسکن کانتینرها و مخازن: از ابزارهایی استفاده کنید که تصاویر، تاریخچه گیت و ... را بررسی میکنند. CI/CD پیکربندیهایی برای اسرار فاششده.
بهترین روشها برای جلوگیری از افشای اطلاعات محرمانهی داکر
- رازهای زودگذردر طول اجرای CI، اطلاعات محرمانهی یکبار مصرف ایجاد کنید. این اطلاعات در صورت سرقت منقضی شده و قابل استفادهی مجدد نیستند.
- اسرار مهر و موم شدهبرای رمزگذاری اسرار در Git از Kubernetes Sealed Secrets یا SOPS استفاده کنید. این کار تضمین میکند که اسرار به طور ایمن نسخهبندی میشوند.
- CI/CD سیاست: اجرای سیاستهایی مانند هیچ رازی در داکرفایل وجود ندارد، بلوکهایی بر اساس تشخیص مخفی ایجاد میکند، و استفاده از آن را ثبت میکند اسرار داکر برای pipeline.
- Pre-commit hooksبلوک commitبا استفاده از ابزارهایی مانند اسرار اسرار آمیزشی or کشف اسرار.
- زیرساخت های تغییرناپذیراطلاعات محرمانه را در کانتینرها تغییر ندهید. با اطلاعات جدید، آنها را بازسازی و مجدداً مستقر کنید. اسرار داکر به جای آن.
نتیجه
وقتی مورد سوءاستفاده قرار میگیرد، اسرار داکر به جای یک ویژگی امنیتی، به یک مسئولیت تبدیل شود. از اسرار Docker Compose نشت از طریق فایلهای YAML به CI/CD pipelineبا افشای اسرار در لاگها یا لایهها، خطرات واقعی و قابل پیشگیری هستند.
استفاده از ابزارهایی مانند شیگنی، تیمها میتوانند موارد در معرض خطر را تشخیص دهند اسرار در مراحل اولیه، سیاستهای مدیریت مخفی را اجرا کنید و تغییرات امنیتی را در کد، کانتینرها و ... اسکن کنید. pipelineبا D خود رفتار کنید.راز اوکر استراتژی را به عنوان زیرساخت حیاتی در نظر بگیرید. آن را همانطور که میخواهید ایمن کنید.





