احراز هویت از بخشهای مهم و اساسی همة برنامههای کاربردی است. در زمان احراز هویت کاربران در برنامههای کاربردی تحت وب و یا در زمان تلاش برای دریافت اطلاعات از یک سرور پایگاه داده، اتصال کاربر نیاز است. برنامههای کاربردی Container شده نیز از این موضوع مستثنی نیستند، به همین دلیل است که از همان ابتدا در Windows Containerها از احراز هویت از طریق اکتیودایرکتوری پشتیبانی شده است. در ادامه شرح داده میشود که پس از ارائهی Windows Server 2019، در سه سال گذشته برای آسانتر کردن و افزایش قابلیت اطمینان احراز هویت ویندوز کانتینر چه اقداماتی صورت گرفته است.
جهت مشاهده ویدئوی مقایسه مفهوم داکر و کانتینر در ساختار مجازی VMware به این لینک مراجعه نمایید.
افزایش قابلیت اطمینان در Container
همزمان با پشتیبانی از کانتینترها در ویندوز سرور 2016، مایکروسافت تلاش کرد تا تعاریف جدیدی از اینکه افراد چگونه برنامههای کاربردی خود را مدیریت میکنند، ارائه دهد. یکی از این نوآوریها، استفاده از یک (Group Managed Service Account (gMSA برای جایگزینی احراز هویت کامپیوتر در Containerها بود. اکثر افراد پیش از روی کار آمدن Containerها، کامپیوتر خود را به دامین Join میکردند و از هویت فردی یا Service Account آن استفاده میکردند تا برنامة کاربردی را اجرا نمایند. Containerها را روی کار آمدند تا پیچیدگیهای پیوند به دامین از بین بروند، چرا که با Join به دامین، مدیریت اکانتهای کامپیوتری که در اکتیودایرکتوری ایجاد و پس از مدت کوتاهی حذف میشدند، دشوار میشد. با این حال همچنان نیاز بود که برنامههای کاربردی، از احراز هویت اکتیودایرکتوری استفاده کنند. برای حل این مشکل در Runtime یک gMSA به اکانت کامپیوتری Container اختصاص داده شود. گویی Container به دامین Join شده است، با این تفاوت که این گونه چندین Container میتوانستند یک هویت واحد داشته باشند و همچنین با این روش دیگر لازم نیست اطلاعات اعتباری حساس در Container Image ذخیره گردند.
وقتی کاربران بیشتری شروع به استفاده از gMSA در طیف گستردهای از برنامههای کاربردی کردند، دو مشکل شناسایی شد که بر قابلیت اطمینان gMSA در Containerها اثر میگذاشت:
- اگر Hostname Container با نام gMSA مطابقت نمیکرد، ممکن بود قابلیتهای خاصی چون احراز هویت NTLM ورودی و Role Lookupها در NET Membership از کار بیفتد. استفاده از gMSA جایگزین آسانی میباشد، اما مشکلات جدیدی را ایجاد میکند.
- وقتی کانتینرهای مختلف برای ارتباط با یک Domain Controller واحد، از یک Hostname واحد استفاده میکنند، آخرین کانتینر، مابقی Containerها را از دور خارج و اتصال آنها را قطع میکند که نتیجة آن عدم احراز هویت سایرین میباشد.
برای پاسخ به این مسائل، اقداماتی انجام شد تا Container، خود را در شبکه به شکل دیگری معرفی کنند تا اطمینان حاصل شود بدون در نظر گرفتن Hostname، از نام gMSA برای احراز هویت استفاده میکند و همچنین اطمینان حاصل میشود که چند اتصال با هویت یکسان به طور کامل تحت پشتیبانی هستند. برای بهرهوری از این عملکرد جدید، تنها لازم است Image و Host مربوط به Container خود را به Windows Server 2019 یا Windows 10 نسخة 1809 ارتقا داد.
به علاوه، اگر در نسخههای 1703، 1709 و 1803، کاربران قادر نبودند از gMSA برای احراز هویت در Containerهای قرارگرفته در محیط ایزولهشدة Hyper-V استفاده کنند، این مشکل در ویندوز سرور 2019 و Windows 10 نسخة 1809 حل شده است. در صورتی که کاربر نتواند ویندوز خود را به آخرین نسخه ارتقا دهد، میتواند به جای آن از gMSA با محیط ایزولهشدة Hyper-V در Windows Server 2016 و Windows 10 نسخة 1607 استفاده نماید.
بهبود مستندسازی و دسترسی
مایکروسافت روی ارتقای مستندسازی خود سرمایهگذاری کرده است تا شروع کار با gMSA درWindows Container برای کاربران تسهیل شود.
همچنین دسترسی به ماژول PowerShell Credential Spec تسهیل شده است که خود بخشی از ارتقای سند است. با این که Source Code هنوز در GitHub است، میتوان به آسانی با اجرای Install-Module CredentialSpec، آن را از PowerShell Gallery دانلود نمود. علاوه بر اینها، چند اصلاح دیگر نیز صورت گرفته است که از آن جمله میتوان به پشتیبان بهتر از Child Domain و اعتبارسنجی بهتر اطلاعات اکانت اشاره کرد.
پشتیبانی Kubernetes
با عرضه Kubernetes نسخة 1.14، مایکروسافت نسخه Alpha از gMSA در Windows Containerها را پشتیبانی میکند . Kubernetes به کپی شدن خودکار Credential Specها بر Worker Nodeها رسیدگی میکند و با اضافه کردن کنترل دسترسی نقشمحور، تعیین میکند که کاربران میتوانند برای کدامیک از gMSAها برنامهریزی کنند. با این حال هنوز پشتیبانی عمومی gMSA آماده ارائه نیست، ولی میتوان آن را با فعال کردن قابلیتهای Alpha امتحان کرد.