افزایش امنیت با Private API Server کوبرنتیز ستون
در سرویس کوبرنتیز ستون، از امکان ساخت کلاستر با API Server خصوصی (private) پشتیبانی میشود که دسترسی خصوصی به API Server و کلاستر را فراهم میکند.
هنگام ساخت کلاستر جدید در ستون، دو حالت برای دسترسی به API Server وجود دارد:
- عمومی (Public):
- ستون به طور خودکار یک Load Balancer با IP خارجی ایجاد میکند.
- میتوانید از طریق اینترنت به API Server دسترسی داشته باشید.
2. خصوصی (Private):
- ستون Load Balancer را بدون IP خارجی ایجاد میکند.
- تمام ارتباطات بین نودها و API Server در سابنت شما باقی میماند.
- دسترسی اینترنت به API Server کاملاً غیرفعال است.
استفاده از API Server خصوصی مزایای امنیتی متعددی را به همراه دارد که در ادامه به برخی از آنها اشاره میکنیم:
- کاهش سطح آسیبپذیری:
- دسترسی به API Server خصوصی فقط از طریق شبکه خصوصی شما امکان پذیر است. این امر سطح آسیبپذیری API Server را به طور قابل توجهی کاهش میدهد، زیرا مهاجمان نمیتوانند از طریق اینترنت به آن دسترسی داشته باشند.
2. کاهش حملات امنیتی:
- با محدود کردن دسترسی به API Server، احتمال حملات امنیتی مانند حملات brute force و DDoS به طور قابل توجهی کاهش مییابد. همچنین API Server خصوصی میتواند به شما در انطباق با الزامات امنیتی و قانونی مختلف کمک کند.
3. افزایش کنترل:
- با استفاده از API Server خصوصی، شما کنترل کاملی بر ترافیک ورودی به API Server خود دارید. میتوانید از ابزارهای مختلف برای فیلتر کردن ترافیک و جلوگیری از دسترسیهای غیرمجاز استفاده کنید.
با توجه به مزایای امنیتی متعددی که استفاده از API Server خصوصی ارائه میدهد، اکیداً توصیه میشود که دسترسی به API Server را به صورت خصوصی تعریف کنید.
در صورت نیاز به دسترسی عمومی به API Server، میتوانید از روش دسترسی با Ingress استفاده کنید. Ingress یک کنترلکننده ترافیک است که به شما امکان میدهد تا به طور امن به API Server خود از طریق اینترنت دسترسی داشته باشید.
دو روش برای فعال کردن دسترسی خصوصی API Server وجود دارد:
- در زمان ساخت کلاستر: در مرحله پیکربندی شبکه، پس از مشخص کردن سابنت، نوع دسترسی به API Server را انتخاب کنید. در نهایت گزینه خصوصی (Private) را انتخاب کنید.
- پس از ساخت کلاستر: اگر از قبل API Server کلاستر خود را به صورت عمومی ساختهاید، برای تغییر آن به خصوصی، با پشتیبانی ستون در اسلک ارتباط بگیرید.

در صورت فعال کردن دسترسی خصوصی به کلاستر، میتوانید با ساخت یک Bastion Host به API Server خود دسترسی پیدا کنید. Bastion Host یک سرور واسط است که در داخل سابنت کلاستر شما قرار میگیرد و به عنوان یک دروازه امن برای دسترسی به سایر منابع کلاستر، از جمله API Server، عمل میکند.
دو روش برای دسترسی به API Server از طریق Bastion Host وجود دارد:
- استفاده از SSH:
- یک سرور در سابنت کلاستر خود راه اندازی کنید.
- از طریق SSH به Bastion Host خود وارد شوید.
- دستورات kubectl را از طریق Bastion Host اجرا کنید.
2. استفاده از sshuttle : (یک ابزار است که ترافیک را بین دو سرور منتقل میکند.)
- برای استفاده از sshuttle کافی است python3 روی Bastion Host شما نصب باشد.
- روی کلاینت خود، مثلا رایانهای که قصد دارید از روی آن از kubectl استفاده کنید، sshuttle را نصب کنید.
حال میتوانید از sshuttle برای فرستادن ترافیک به API Server استفاده کنید. به عنوان مثال، دستور زیر تمام ترافیک را از طریق SSH به Bastion منتقل میکند:
در صورتی که کلاستر خود را به صورت خصوصی ساختهاید و بعدها تصمیم به پابلیک کردن آن گرفتید، میتوانید با ساخت Ingress به API Server خود دسترسی عمومی پیدا کنید.
برای پابلیک کردن API Server با Ingress، میتوانید از نمونهی زیر استفاده کنید:
پابلیک کردن API Server با Ingress مزایای متعددی نسبت به ساخت کلاستر با API Server عمومی دارد برای مثال به کنترل بیشتر بر روی درخواستهای ورودی و اعمال محدودیتهای مختلف و همچنین امکان تغییر آدرس و یا آیپی عمومی API Server میتوان اشاره کرد.
قبل از استفاده از Ingress، باید یک Ingress Controller را نصب کنید. در مثال بالا از Ingress Nginx استفاده شده است. برای استفاده از آن باید ingress-nginx را نصب کنید.
برای ساخت secret میتوانید cert-manager را نصب کرده و از آن استفاده کنید و یا خودتان آن را به صورت زیر ایجاد کنید.
همچنین برای توضیحات بیشتر در در مورد دسترسی به Ingress از طریق Public IP میتوانید به این مستند مراجعه نمایید.