اجازهٔ دسترسی شبکه و فایروال
این صفحه برای مسئول شبکه و مدیر پایگاهداده است. اوبا از سرور خود به پایگاهدادهٔ شما وصل میشود؛ پس پورت پایگاهداده باید فقط برای IP سرور اوبا باز باشد، نه برای کل اینترنت. پیش از هر تغییر، قوانین فعلی فایروال را یادداشت کنید تا در صورت نیاز به حالت قبل برگردید. دستورهای این صفحه نمونهاند؛ مقادیر داخل < > را با مقدار واقعی جایگزین کنید.
خلاصهٔ کار
Section titled “خلاصهٔ کار”برای اتصال، سرور پایگاهدادهٔ شما باید این سه شرط را داشته باشد:
- از اینترنت یا مسیر شبکهای که برای اوبا تعیین کردهاید قابل دسترسی باشد.
- پورت پایگاهداده فقط برای IP سرور اوبا باز باشد، نه برای کل اینترنت.
- کاربر پایگاهداده فقط اجازهٔ خواندن داشته باشد.
IP سرور اوبا
Section titled “IP سرور اوبا”IP سرور اوبا در صفحهٔ «اتصالهای پایگاهداده» داخل برنامه هم با این پیام نمایش داده میشود: «برای اتصال به پایگاهدادهٔ شما، باید IP سرور ما را در فهرست مجاز (whitelist) پایگاهداده یا فایروال خود اضافه کنید:». اگر آزمایش اتصال به دلیل مشکل شبکه شکست بخورد، همین IP در کادر «راهنمای رفع مشکل اتصال» هم تکرار میشود. همیشه مقدار فعلی را از برنامه یا این صفحه بردارید، نه از یادداشتهای قدیمی.
در این صفحه مقدار IP فعلی در دسترس نیست. پیش از باز کردن فایروال، IP خروجی موردنیاز اتصال را از تیم پشتیبانی بگیرید. از حدسزدن IP یا باز کردن پورت برای `0.0.0.0/0` خودداری کنید.پورتهای رایج
Section titled “پورتهای رایج”| پایگاهداده | پورت پیشفرض |
|---|---|
| PostgreSQL | 5432 |
| MySQL و MariaDB | 3306 |
| Microsoft SQL Server | 1433 |
| Oracle | 1521 |
| IBM Db2 | 50000 |
| ClickHouse (HTTP) | 8123 |
| MongoDB | 27017 |
| Redshift | 5439 |
| CockroachDB | 26257 |
| Elasticsearch و OpenSearch | 9200 |
| Cassandra و ScyllaDB | 9042 |
اگر پورت شما تغییر کرده است، همان پورت واقعی را در دستورهای این صفحه و در فیلد «درگاه» فرم اتصال وارد کنید.
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 استفاده نکنید؛ قانون باید پایگاهداده، کاربر و مبدأ را با هم محدود کند. ترتیب قوانین pg_hba.conf مهم است: قانون عمومیتری که بالاتر نوشته شده، ممکن است قانون شما را بیاثر کند. تغییر 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انتشار پورت در Docker بهتنهایی مبدأ را محدود نمیکند و ممکن است قوانین UFW میزبان را دور بزند؛ اثر واقعی قوانین را روی پورت منتشرشده بررسی کنید. اگر پایگاهداده فقط از شبکهٔ خصوصی یا VPN در دسترس است، مسیر را با پشتیبانی هماهنگ کنید؛ VPN روی رایانهٔ شما، دسترسی سرور اوبا را فراهم نمیکند.
فایروال ابری
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 “آزمون اتصال”-
برای بررسی باز بودن پورت، از یک سرور مجاز این دستور را اجرا کنید:
Terminal window nc -vz <DATABASE_HOST> <PORT> -
در اوبا، در فرم «افزودن اتصال» اطلاعات را وارد و «آزمایش اتصال» را بزنید. آزمون از رایانهٔ خودتان یا از داخل شبکهٔ شرکت، جای این آزمون را نمیگیرد؛ فقط آزمون داخل اوبا مسیر واقعی سرور اوبا را میسنجد.
-
نتیجه را اینطور بخوانید:
- زمان انتظار تمام شد یا سرور پیدا نشد: مسیر شبکه، فایروال، پورت یا روشن بودن سرویس را بررسی کنید.
- ورود ناموفق: نام کاربری، گذرواژه و قانون ورود (
pg_hba.confیا میزبان کاربر MySQL) را بررسی کنید. - ورود موفق ولی جدولها خوانده نمیشوند: مجوز
SELECTکاربر را بررسی کنید.
جزئیات بیشتر در رفع مشکل اتصال آمده است.
قطع دسترسی
Section titled “قطع دسترسی”برای قطع دسترسی، قانون IP اوبا را از فایروال بردارید یا کاربر فقطخواندنی را در پایگاهداده غیرفعال کنید. پس از قطع، گفتوگوها، نمودارهای داشبورد و هشدارهایی که از این اتصال استفاده میکنند دیگر داده دریافت نمیکنند و هشدارها خطا گزارش میدهند. قطع شبکه، گفتوگوها و نتایجی را که قبلاً در اوبا ثبت شدهاند حذف نمیکند.