اجازهٔ دسترسی شبکه و فایروال
برای خواندن داده، باید مسیر شبکه از محیط سرویس اوبا به منبع شما برقرار باشد. هدف این راهنما باز کردن دسترسی عمومی نیست؛ میخواهید تنها مبدأ مجاز بتواند به پورت لازم برسد و سپس با حساب محدود وارد شود. این صفحه را به مسئول شبکه و پایگاهداده بدهید. اجرای دستورها را به مسئول مجاز بسپارید.
پیش از تغییر، نشانی مقصد، پورت واقعی، نوع منبع و قانونهای فعلی را ثبت کنید و راه بازگشت به تنظیم قبلی را داشته باشید. در منابع ابری یا مسیر خصوصی، ممکن است کنترل اصلی در سرویس شبکهٔ دیگری باشد. دستورهای این صفحه نمونهاند و باید با محیط واقعی تطبیق داده شوند؛ وارد کردن آنها بدون جایگزینی مقادیر یا شناخت مسیر، اتصال قابل اتکایی ایجاد نمیکند.
خلاصهٔ کار
Section titled “خلاصهٔ کار”برای اتصال، سرور پایگاهدادهٔ شما باید این سه شرط را داشته باشد:
- از اینترنت یا مسیر شبکهای که برای اوبا تعیین کردهاید قابل دسترسی باشد.
- پورت پایگاهداده فقط برای IP سرور اوبا باز باشد، نه برای کل اینترنت.
- کاربر پایگاهداده فقط اجازهٔ خواندن داشته باشد.
IP سرور اوبا
Section titled “IP سرور اوبا”IP نشانی مبدأ اتصال است که مسئول شبکه برای قانون مجاز استفاده میکند. مقدار فعلی را از بخش زیر بردارید و با اطلاعاتی که برای اتصال شما اعلام شده تطبیق دهید. این نشانی ممکن است تغییر کند؛ از تصویر یا یادداشت قدیمی بهعنوان مرجع دائمی استفاده نکنید. اگر مبدأ تغییر کند، قوانین قبلی باید با هماهنگی مسئولان اصلاح شوند.
در این صفحه مقدار IP فعلی در دسترس نیست. پیش از باز کردن فایروال، IP خروجی موردنیاز اتصال را از تیم پشتیبانی بگیرید. از حدسزدن IP یا باز کردن پورت برای `0.0.0.0/0` خودداری کنید.فهرست مجاز یا allowlist یعنی مجموعهٔ مبدأهایی که اجازهٔ ورود دارند. در قانون مربوط به اوبا، همان مبدأ اعلامشده را ثبت کنید. اگر چند مبدأ برای محیط شما معرفی شدهاند، مسئول شبکه باید قانون هر کدام را بررسی کند. نبود مقدار در صفحه، مجوز حدس زدن نشانی یا باز کردن پورت برای تمام اینترنت نیست.
پورتهای رایج
Section titled “پورتهای رایج”| پایگاهداده | پورت پیشفرض |
|---|---|
| PostgreSQL | 5432 |
| MySQL و MariaDB | 3306 |
| Microsoft SQL Server | 1433 |
| Oracle | 1521 |
اگر پورت شما تغییر کرده است، همان پورت واقعی را در همهٔ دستورهای این صفحه جایگزین کنید. پورت مشخص میکند درخواست به کدام سرویس روی میزبان برسد. باز بودن یک پورت دیگر، سلامت مسیر پایگاهداده را ثابت نمیکند. نشانی میزبان و پورت فرم اتصال باید با مقصد و قوانین شبکه یکسان باشند.
Ubuntu و Debian با UFW
Section titled “Ubuntu و Debian با UFW”در سرور پایگاهداده، بهجای <OOBA_IP> مقدار بالا و بهجای <PORT> پورت واقعی را بنویسید:
sudo ufw allow from <OOBA_IP> to any port <PORT> proto tcpsudo ufw status numberedاگر UFW هنوز فعال نیست، ابتدا قوانین لازم برای SSH را ثبت کنید تا دسترسی خودتان قطع نشود:
sudo ufw allow OpenSSHsudo ufw enableهرگز پورت پایگاهداده را بدون محدود کردن مبدأ باز نکنید؛ قانون sudo ufw allow <PORT>/tcp برای همهٔ IPها دسترسی ایجاد میکند.
RHEL، CentOS، Rocky و AlmaLinux با firewalld
Section titled “RHEL، CentOS، Rocky و AlmaLinux با firewalld”sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='<OOBA_IP>' port protocol='tcp' port='<PORT>' accept"sudo firewall-cmd --reloadsudo firewall-cmd --list-rich-rulesبرای IPv6، فقط اگر IP خروجی اوبا واقعاً IPv6 است قانون IPv6 جداگانه بنویسید.
PostgreSQL: تنظیم listen_addresses و pg_hba.conf
Section titled “PostgreSQL: تنظیم listen_addresses و pg_hba.conf”مسیر فایلهای PostgreSQL را با این دستور پیدا کنید:
sudo -u postgres psql -c "SHOW config_file; SHOW hba_file;"در postgresql.conf آدرس و پورت را تنظیم کنید:
listen_addresses = '0.0.0.0'port = 5432در pg_hba.conf فقط IP اوبا را مجاز کنید. برای یک IP نسخهٔ ۴، CIDR معمولاً /32 است:
host <DATABASE> <OOBA_USER> <OOBA_IP>/32 scram-sha-256بعد از بررسی فایلها:
sudo systemctl reload postgresqlsudo -u postgres psql -c "SELECT pg_reload_conf();"از trust یا قانون عمومی مانند 0.0.0.0/0 استفاده نکنید. قانون ورود PostgreSQL باید هم پایگاهداده، هم کاربر و هم مبدأ را محدود کند. ترتیب قوانین نیز مهم است؛ مسئول پایگاهداده بررسی کند قانون عمومی قبلی رفتار موردنظر را تغییر نداده باشد. اگر listen_addresses تغییر کرده، بارگذاری مجدد بهتنهایی کافی نیست و راهاندازی مجدد سرویس لازم است؛ آن را در زمان مناسب انجام دهید. دستورهای بالا برای تغییراتی هستند که با بارگذاری مجدد اعمال میشوند.
MySQL و MariaDB
Section titled “MySQL و MariaDB”در mysqld.cnf یا فایل تنظیمات معادل:
[mysqld]bind-address = 0.0.0.0port = 3306سپس سرویس را راهاندازی مجدد کنید:
sudo systemctl restart mysql# در MariaDB:sudo systemctl restart mariadbکاربر را به IP اوبا محدود کنید:
CREATE USER 'ooba_reader'@'<OOBA_IP>' IDENTIFIED BY '<STRONG_PASSWORD>';GRANT SELECT, SHOW VIEW ON `<DATABASE>`.* TO 'ooba_reader'@'<OOBA_IP>';FLUSH PRIVILEGES;کاربری با host برابر % را استفاده نکنید؛ % یعنی هر مبدأ شبکه. محدودیت میزبان حساب و محدودیت فایروال مکمل یکدیگرند. پس از ساخت حساب، مجوزهای واقعی آن را بررسی کنید و مطمئن شوید مجوز مدیریتی دیگری از نقش یا تنظیم قبلی دریافت نکرده است. نمونهٔ بالا خواندن کل مقصد تعیینشده را مجاز میکند؛ اگر تنها چند جدول لازم دارید، مسئول داده باید محدوده را کوچکتر کند.
Docker و Docker Compose
Section titled “Docker و Docker Compose”اگر پایگاهداده داخل Docker است، پورت را publish کنید و محدودسازی IP را در فایروال میزبان یا فایروال ابری انجام دهید:
services: db: ports: - "5432:5432"برای بررسی:
sudo ss -ltnp | grep ':5432'docker compose psاگر از شبکهٔ خصوصی یا VPN استفاده میکنید، جزئیات مسیر را با پشتیبانی هماهنگ کنید. VPN مسیر ارتباطی خصوصی ایجاد میکند، اما وجود آن روی رایانهٔ کاربر به معنای دسترسی خودکار محیط اوبا نیست. انتشار پورت Docker نیز بهتنهایی محدودسازی مبدأ نیست؛ مسئول شبکه باید اثر واقعی قواعد میزبان و سرویس ابری را روی پورت منتشرشده بررسی کند.
فایروال ابری
Section titled “فایروال ابری”در AWS Security Group، Azure Network Security Group، Google Cloud VPC Firewall، DigitalOcean Cloud Firewall یا سرویس مشابه، یک قانون inbound بسازید:
| فیلد | مقدار |
|---|---|
| Protocol | TCP |
| Port | پورت واقعی پایگاهداده |
| Source | <OOBA_IP>/32 |
| Action | Allow |
قوانین عمومی 0.0.0.0/0 و ::/0 را برای پورت پایگاهداده حذف یا محدود کنید.
آزمون اتصال
Section titled “آزمون اتصال”پس از اعمال تنظیمات، در اوبا به صفحهٔ افزودن اتصال بروید و «تست اتصال» را بزنید. برای بررسی موقت باز بودن پورت از سمت یک سرور مجاز:
nc -vz <DATABASE_HOST> <PORT>باز بودن پورت بهتنهایی صحت نام کاربری و مجوزها را ثابت نمیکند؛ هر دو را بررسی کنید. همچنین آزمون از یک رایانهٔ غیرمجاز، وضعیت مسیر اوبا را نشان نمیدهد. پس از موفقیت آزمون فنی، یک خواندن محدود از جدول لازم و سپس یک سؤال شناختهشده را کنترل کنید. پاسخ درست علاوه بر مسیر شبکه به تعریف معیار و پوشش داده وابسته است.
مثال بررسی یک مسیر مجاز
Section titled “مثال بررسی یک مسیر مجاز”فرض کنید در شرکت فرضی شما PostgreSQL داخل میزبان ابری اجرا میشود. مسئول شبکه، IP فعلی اوبا و پورت واقعی منبع را ثبت میکند و در فایروال ابری و میزبان فقط همان مبدأ را مجاز میکند. مسئول پایگاهداده نیز حساب فقطخواندنی و قانون ورود همان مقصد را آماده میکند. سپس اتصال از داخل اوبا آزمایش میشود؛ موفقیت از داخل شبکهٔ شرکت جای این آزمایش را نمیگیرد.
اگر زمان انتظار تمام شد، مسیر، پورت و فعال بودن سرویس بررسی میشوند. اگر پیام ورود ناموفق بود، حساب و قانون ورود بررسی میشوند. اگر ورود موفق و خواندن ناموفق بود، مجوز جدول کنترل میشود. این ترتیب مانع تغییر بیدلیل همهٔ تنظیمات میشود. در پایان، مسئولان ثبت میکنند چه قانونهایی تغییر کردهاند تا هنگام تغییر IP یا قطع همکاری، محدودهٔ مربوط روشن باشد.
قطع دسترسی
Section titled “قطع دسترسی”برای جلوگیری از دسترسی تازه، قانون مبدأ اوبا را از فایروال بردارید و حساب فقطخواندنی را در منبع غیرفعال یا مجوز آن را لغو کنید. اتصال داخل برنامه نیز باید مطابق تصمیم شرکت مدیریت شود. پیش از تغییر، وابستگی پرسشها، داشبوردها و هشدارها را بررسی کنید. قطع شبکه، نتایج و خروجیهای قبلاً ثبتشده را حذف نمیکند. اگر هدف حذف اطلاعات نگهداریشده است، موضوع را جداگانه با مسئول شرکت و پشتیبانی پیگیری کنید.