ترکیب Kyverno و Confidential Containers برای استقرار امن در کوبرنتیز
خلاصهٔ کاملتر
Confidential Containers (CoCo) یه پروژه متنباز CNCF هست که هدفش اجرای امن ورکلودهای کانتینری در محیطهای غیرقابلاعتماده. نقطه کلیدی در مدل امنیتی CoCo اینه که کنترلپلین کوبرنتیز بهطور پیشفرض غیرقابل اعتماد فرض میشه. یعنی هر مشخصات podی که از این کنترلپلین میاد، باید از طریق فرآیند remote attestation (تأیید هویت از راه دور) توسط محیط اجرا تأیید بشه.
برای اینکه یه pod توی محیط CoCo درست اجرا بشه، به چند چیز نیاز داره: یه runtimeClass مناسب، یه initdata (که شامل اطلاعات سرور attestation، پالیسی ایمیج کانتینر، و تنظیمات kata-agent هست)، و بهصورت اختیاری sealed secrets و sidecarهای کمکی. تهیه و مدیریت این موارد میتونه پیچیده و خطرپذیر باشه.
مشکل اصلی اینه که این بار زیرساختی روی دوش تیمهای توسعه میفته. یه initdata ناقص یا اشتباه، یه annotation غلط، یا یه فیلد پالیسی فراموششده میتونه pod رو از کار بندازه. اینجاست که Kyverno وارد میشه؛ یه موتور پالیسی بومی کوبرنتیز که میتونه در لحظه admission، منابع رو هم mutate (تغییر خودکار) کنه و هم validate (اعتبارسنجی) کنه.
یه نکته مهم هم هست که باید بهش توجه کرد: Kyverno خودش داخل همون کنترلپلین غیرقابلاعتمادی اجرا میشه که CoCo بهش اعتماد نمیکنه. پس Kyverno مسئول امنیت نیست، بلکه فقط استقرار رو راحتتر میکنه. مسئولیت نهایی امنیت همچنان با فرآیند remote attestation و پالیسی runtime کاتا هست که توسط تیم امنیت اپلیکیشن مدیریت میشه.
در این مدل، سه تیم نقش مشخص دارن: تیم پلتفرم زیرساخت و پالیسیهای Kyverno رو مدیریت میکنه، تیم امنیت اپلیکیشن اطلاعات initdata و سرور attestation رو فراهم میکنه، و تیم توسعه فقط manifest اپلیکیشنشون رو deploy میکنه. Kyverno بهصورت خودکار runtimeClass و initdata لازم رو به pod اضافه میکنه.
جریان کار به این شکله: توسعهدهنده manifest رو میفرسته، Kyverno پالیسیهای تعریفشده رو اعمال میکنه و تنظیمات CoCo رو تزریق میکنه، سپس محیط runtime قبل از اجرا فرآیند remote attestation رو اجرا میکنه. secretها و کلیدهای حساس فقط بعد از تأیید موفق attestation به اپلیکیشن تحویل داده میشن.
نکات کلیدی:
- CoCo کنترلپلین کوبرنتیز رو غیرقابل اعتماد فرض میکنه و از remote attestation برای تأیید استفاده میکنه
- Kyverno تنظیمات CoCo مثل initdata و runtimeClass رو بهصورت خودکار به podها تزریق میکنه
- Kyverno فقط اتوماسیون عملیاتی انجام میده، نه تضمین امنیت؛ اعتماد واقعی همچنان از attestation میاد
- این مدل بار زیرساختی رو از تیم توسعه برمیداره و اجازه میده روی کدنویسی تمرکز کنن
- همه پالیسیهای نمونه CoCo در کتابخانه پالیسی Kyverno با تگ Confidential Computing در دسترسن




