مقالات
portforward - rick and morty

Portforward و امنیت در ابر یوتاب

اگر انیمیشن ریک و مورتی را دیده باشید، شخصیت‌های اصلی برای «گذر بین کهکشانی»، ماشین‌زمانی داشتند که یک پرتال یا درگاه سبز رنگ ایجاد می‌کرد و با پا گذاشتن در این پرتال، آنها تله‌پورت می‌شدند و از یک پرتال سبز رنگ در کهکشانی دیگر خارج می‌شدند.

 

مفهوم portforward هم شباهت زیادی به تله‌پورت دارد، اگر نرم‌افزاری در یک سرور در حال اجرا باشد، به کمک portforward، پورت انتقال اطلاعات آن نرم‌افزار به کامپیوتر شما انتقال داده می‌شود. درست مشابه آن است که نرم‌افزار در localhost شما درحال اجرا است. در واقع این تونل تمام اطلاعات را از یک پورت در localhost به همان پورت در سرور انتقال می‌دهد یا به عبارتی تله‌پورت می‌کند.

چرا Portforward را استفاده کنیم

ابر یوتاب به این ویژگی به عنوان یک پیشنیاز امنیتی نگاه می‌کند. درواقع تمامی سرویس‌های که بر روی ابر یوتاب در حال اجرا می‌باشند، در یک شبکه داخلی هستند و دسترسی از شبکه اینترنت به این سرویس‌ها امکان‌پذیر نمی‌باشد.

تنها پرت‌های که کاربران قادر هستند آنها را برای عموم در دسترس قرار دهند، پورت ۸۰ و ۴۴۳ است که به ترتیب برای پروتکل‌های HTTP و HTTPS مورد استفاده می‌باشد. این پورت‌ها مخصوص سرویس‌دهی نرم‌افزارهای وب مثل سایت‌های فروشگاهی می‌باشد.

ما برای دسترسی به سایر پورت‌های نرم‌افزارها که بر روی ابر یوتاب قرار دارند، راهکار portforward را پیشنهاد می‌کنیم که کامل مدیریت شده توسط خود کاربر دسترسی به آن مدیریت می‌شود و فقط در دسترس او قرار می‌گیرد.

مثال کاربردی از Portforward

دیتابیس‌ها شناخته شده در ابر یوتاب به صورت سرویس یا SaaS ارائه می‌شود، به طور مثال می‌خواهم در حساب کاربری خودم بر روی ابر یوتاب، دیتابیس PostgreSQL را راه‌اندازی و دستور ‌‍‍CREATE DATABASE را بر روی آن اجرا کنم.

دیتابیس PostgreSQL برای مدیریت خود و انتقال اطلاعات، از پورت شماره ۵۴۳۲ استفاده می‌کند. من بعد از راه‌اندازی سرویس دیتابیس PostgreSQL، بدون هیچ تنظیماتی، می‌توانید نرم‌افزارهای دیگرم که روی ابر یوتاب قرار دارد را به پورت ۵۴۳۲ این دیتابیس متصل کنم. ولی برای دسترس و مدیریت دیتابیس از داخل کامپیوتر شخصی خودم، امکان دسترسی به پورت ۵۴۳۲ سرویس دیتابیس PostgreSQL ندارم. این اقدام از طرف ابر یوتاب به منظور بالا بردن امنیت سرویس‌های در حال اجرا، اعمال شده است.

برای برقراری ارتباط با دیتابیس، رابط کاربری خط فرمان ابر یوتاب، امکان ارتباط از طریق portforward و ایجاد یک تونل ایمن از سرورهای ابر یوتاب تا کامپیوتر شخصی من را فراهم می‌کند. بدین ترتیب پورت ۵۴۳۲ کامپیوتر شخصی من، معادل پورت ۵۴۳۲ سرویس دیتابیس PostgreSQL راه‌اندازی شده بر روی ابر یوتاب می‌شود.

> yb create service postgresql \
     --name="my-postgresql"

> yb portforward service my-postgresql
#   Forwarding ports: [5432]
 

در مثال بالا در ابتدا یک سرویس دیتابیس PostgreSQL را با نام my-postgresql ساختم. در نهایت همانطور که در بالا می‌بینید، برای اجرای portforward بر روی یک سرویس از دستور portforward service و در انتها اسم سرویسی که می‌خواهیم به آن متصل شویم، می‌آید.

حالا سرویس PostgreSQL که ساختم در آدرس localhost:5432 در دسترس است و می‌توانم به کمک برنامه psql که رابط کاربری استاندارد PostgreSQL است، این دیتابیس را مدیریت کنم. شما می‌توانید از هر رابط کاربری دیگری برای اتصال به دیتابیس استفاده کنید و اجباری به استفاده از psql نیست.

> psql \
    --host="localhost" \
    --port=5432 \
    --username=postgres
#   psql (9.6.13, server 9.6.2)
#   Type "help" for help.
#
#   postgres=#   CREATE DATABASE mydatabase WITH OWNER = postgres;
#   CREATE DATABASE