در مورد مدیران سیستم قدیمی نگران نیستم. آنها میدانند چطور سیستم در حال کار را حفظ کنند، بهروزرسانیها را مدیریت و مسیرها را بههنگام کنند. نگرانی من در مورد بارگُنجها، ماشینهای مجازی از پیش ساخته شده و آشفتگی باورنکردنی است که ایجاد میکنند. دلیلش هم این است که مفهوم آنها فاقد ادراکی از «اعتماد» و «بهروزرسانیها» است.
مثلا هادوپ را در نظر بگیرید. به نظر نمیرسد کسی باشد که ساخت هادوپ را از پایه بداند. هادوپ آشفتگی باورنکردنی از وابستگیها، نیازمندیهای نسخه و ابزارهای ساخت است.
هیچ کدام از این ابزارهای «توهمی» توسط دستور قدیمی make ساخته نشدهاند. هریک از این ابزارها با «روش روزانه» ناسازگار و غیرقابل انتقال خود میآیند.
و از آنجا که هیچ کسی قادر به کامپایل کردن چیزها از ابتدا نیست، همه باینریهای از پیش کامپایل شده را از وبسایتهای تصادفی دریافت میکنند؛ اغلب بدون هیچ احراز هویت یا امضایی.
NSA و بهشت ویروس
دیگر لازم نیست بدنبال هیچ حفره امنیتی باشید. تنها یک «اپ» یا «ماشین مجازی» یا حتی تصویر «داکر» بسازید و افراد را مجبور کنید تا باینری بدافزار شما را بر روی شبکهشان بار کنند.
صفحه «هادوپ» در «دبیان» یک مثال شاخص است. در سال ۲۰۱۰ افراد امیدشان را در ساخت «هادوپ» از کد منبع برای عرضه به عنوان بستهای خوب از دست داده بودند.
برای ساخت Apache Bigtop، در آغاز ظاهرا مجبورید puppet3 را نصب کنید. به آن اجازه بدهید تا بسته جادویی را از اینترنت دریافت کند. بعد تلاش خواهد کرد sudo pupet را اجرا کند تا درهای پشتی NSA را فعال کند. (به عنوان مثال، JDK از پیش کامپایل شده منسوخی را دریافت و نصب خواهد کرد. به این خاطر که فکر میکند شما آن قدر احمق هستید که java را نصب کنید.) بعد آرزو میکنم که ساخت gradle ۲۰۰ خط بیمصرف تولید نکند.
من شوخی نمیکنم. آن تلاش میکند تا چیزی مثل دستور زیر را اجرا کند:
/bin/bash -c "wget http://www.scala-lang.org/files/archive/scala-2.10.3.deb ; dpkg -x ./scala-2.10.3.deb /"
توجه کنید که حتی بسته را نیز به درستی نصب نمیکند، اما آن را در دایرکتوری root شما استخراج میکند. فرآیند دریافت هیچ امضایی را بررسی نمیکند؛ حتی مجوزهای ssl را.
حتی اگر فرآیند ساخت نیز کار کند، بعد درگیر دریافت کدهای باینری امضا نشده Maven از اینترنت میشوید و از آنها برای ساخت استفاده میکند.
بجای نوشتن تمیز و ماژولار، امروزه همهچیز تبدل به آشفتگی بزرگی از وابستگیهای در هم تنیده شده است. آخرین باری که classpath مربوط به هادوپ را بررسی کردم بیش از ۱۰۰ فایل jar بود، شرط میبدم که حالا بدون استفاده از HBaseGiraphFlumeCrunchPigHiveMahoutSolrSparkElasticsearch صد و پنجاه تایی باشد.
پشته واژه جدیدی است برای عبارت «من هیچ فکری برای آنچه که واقعا استفاده میکنم ندارم».
Maven، ivy و sbt ابزارهایی برای وادرا کردن سیستم شما به دریافت دادههای باینری امضا نشده از اینترنت و اجرایشان بر روی کامپیوتر شماست و با بارگُنجها، این آشفتگیها حتی بدتر هم میشود.
آیا تا به حال تلاش کردهاید بهروزرسانیهای امنیتی را بر روی بارگُنجها انجام دهید؟
اساسا رویکرد داکر دریافت باینریهای امضا نشده و اجرای آنها با این امید است که «انشاالله هیچ در پشتی در شبکه شرکت شما وجود ندارد». درست مثل دریافت نرمافزارهای مجانی ویندوز در دهه ۹۰.
چه موقع اولین تصویر داکر که شامل نوارابزار ASK است، دیده میشود؟
اولین کرم اینترنتی از طریق تصاویر داکر پخش خواهد شد؟
ده سال به عقب برگردیم. توزیعهای لینوکس سعی میکردند برای شما سیستمعامل امنی را مهیا کنند که در آنها بستههای امضا شده توسط یک وبسایت قابل اعتماد ساخته میشدند.حتی برخی از آنها ساختهای قابل باز تولید بودند.
اما بعد همهچیز «ویندوز زده» شد. «اپها» مد شدند که بدون این که نگران امنیت یا امکان بهروزرسانی به نسخه بعدی برنامه باشید، تنها دریافت و اجرایشان میکنید. بخاطر این که «شما تنها یک بار زندگی میکنید».
بهروزرسانی: مشخص شد که این راه پیش از داکر آغاز شده بود. داکر همان‘curl | sudo bash‘ جدید است.
این درست است اما آن اکنون بسیار زیبا، مسیر اصلی برای دریافت و اجرای نرمافزارهای غیر مطمئن در«مرکز دادهها» شما شده است. این بد است، واقعا بد. پیش از این مدیران سیستم سخت تلاش میکردند تا از حفرههای امنیتی جلوگیری کنند. اکنون خود را «devops» مینامند و با خوشحالی خود را به شبکهشان معرفی میکنند.
پ.ن مترجم: به این فکر میکردم که معادل فارسی «کانتینر» چیمیشه؟ بچهها حامل رو پیشنهاد دادن، ولی من فکر میکنم حامل اسم فاعل هست و چیزی رو حمل میکنه در حالی که منظور از کانتینر چیزی مثل ظرف هست که داخلش رو پر میکنن. در آخر من بارگُنج رو پیدا کردم. این اسم خیلی بامزه و دوست داشتیه