گواهی SSL
اگر میخواهید اینستنس Metabase Cloud یا نسخهٔ self‑hosted متابیس را به یک پایگاهداده متصل کنید، میتوانید اتصال را با استفاده از رمزنگاری SSL (Secure Socket Layer) و یک گواهی، ایمن کنید.
دلایل رایج برای انجام این کار:
- از Metabase Cloud استفاده میکنید و میخواهید از هویت انبار دادهای که به آن وصل میشوید (مثلاً PostgreSQL یا MySQL) مطمئن شوید.
- متابیس را بهصورت self‑hosted اجرا میکنید و میخواهید از هویت انبار دادهای که یک ارائهدهندهٔ خارجی میزبانی میکند اطمینان پیدا کنید. همچنین میتوانید هنگام اتصال به پایگاهدادهٔ اپلیکیشن، از این روش برای استفاده از سختگیرانهترین پارامترهای اتصال بهره بگیرید.
اگر از Metabase Cloud استفاده میکنید، پایگاهدادهٔ اپلیکیشن شما توسط خود Cloud مدیریت میشود؛ بنابراین فقط لازم است اتصالهایی را که خودتان به انبارهای دادهٔ خارجی اضافه میکنید ایمن کنید.
پیشنیازها
یک پایگاهداده که از اتصال JDBC پشتیبانی میکند، چون باید با استفاده از Connection string، گواهی مورد استفاده را مشخص کنید.
گام ۱: دانلود گواهی Root از ارائهدهنده
اگر متابیس را در یک کانتینر Docker اجرا میکنید، باید از قبل گواهیهای AWS و Azure را در اختیار داشته باشید.
این گواهیها در ایمیج Docker متابیس و در مسیر /app/certs/ قرار دارند:
- AWS RDS: مسیر
/app/certs/rds-combined-ca-bundle.pem - Azure: مسیر
/app/certs/DigiCertGlobalRootG2.crt.pem
اگر به گواهی دیگری نیاز دارید، میتوانید ایمیج Docker دلخواه خود را بسازید. به صفحهٔ دیتابیس در سایت ارائهدهندهٔ خارجیتان بروید و لینک دانلود Root Certificate برای اتصال به آن پایگاهداده را پیدا کنید.
گام ۲: ذخیرهسازی گواهی
Self‑hosted
گواهی دانلودشده را در همان دایرکتوریای که فایل metabase.jar را نگه میدارید ذخیره کنید. از نظر فنی میتوانید گواهی را هر کجا قرار دهید، اما نگهداشتن آن در همان مسیر metabase.jar یک الگوی خوب است. مسیر این گواهی را در Connection string مشخص خواهید کرد.
Metabase Cloud
ابتدا باید گام ۳: افزودن پایگاهداده را انجام دهید.
بعد از آن میتوانید به Admin > Databases بروید، پایگاهدادهٔ مورد نظر را انتخاب کنید، بخش SSL Client Certificate را پیدا کنید و با کلیک روی Select a file گواهی دانلودشده را آپلود کنید.
گام ۳: افزودن پایگاهداده
بهعنوان مثال، فرض کنید میخواهید اتصال به یک پایگاهدادهٔ PostgreSQL را ایمن کنید. طبق دستورالعملهای داخل برنامه پایگاهداده را اضافه کنید. برای جزئیات بیشتر در مورد راهاندازی اتصال پایگاهداده، بخش افزودن پایگاهداده را ببینید.
گام ۴: فعالکردن گزینهٔ "Use a secure connection (SSL)"
اگر پایگاهدادهٔ شما از اتصال JDBC پشتیبانی کند، متابیس برای شما فیلدی فراهم میکند تا پارامترهای اضافهٔ Connection string را وارد کنید. متابیس این پارامترها را برای برقرارکردن اتصال امن استفاده میکند.
گام ۵: افزودن گزینههای اضافی به Connection string
باید محل ذخیرهٔ گواهی روی سروری که متابیس روی آن اجرا میشود را مشخص کنید.
مثلاً هنگام اتصال به PostgreSQL، معمولاً باید دو پارامتر اضافه کنید:
sslmode– میتوانید لیست کامل مقدارهای مجاز را در مستندات PostgreSQL ببینید. پیشنهاد میکنیم از مقدارverify-fullاستفاده کنید؛ این حالت امنترین است و سربار عملکردی آن ناچیز است.sslrootcert– در این پارامتر مسیر فایل گواهی را مشخص میکنید.
برای جداکردن پارامترها در Connection string، بین آنها از علامت & استفاده کنید. مثلاً در فیلد Add additional connection string options میتوانید چیزی شبیه این بنویسید:
sslmode=verify-full&sslrootcert=/path/to/certificate.pem
مقدار /path/to/certificate.pem را با مسیر کامل گواهیای که از ارائهدهندهٔ خود دانلود کردهاید جایگزین کنید.
برای اطلاعات بیشتر، بخش پشتیبانی SSL در PostgreSQL را ببینید.
ایمنکردن اتصال به پایگاهدادهٔ اپلیکیشن با استفاده از متغیرهای محیطی
اگر متابیس را بهصورت self‑hosted اجرا میکنید، میتوانید اتصال به پایگاهدادهٔ اپلیکیشن را با استفاده از متغیرهای محیطی امن کنید.
متغیر محیطی مربوط به این کار MB_DB_CONNECTION_URI است.
در این متغیر باید Connection string کامل را وارد کنید، شامل Host دیتابیس، پورت، نام پایگاهداده، اطلاعات کاربر و همچنین پارامترهای اضافه برای اشاره به گواهی. مثلاً:
jdbc:postgresql://db.example.com:port/mydb?user=dbuser&password=dbpassword&ssl=true&sslmode=verify-full&sslrootcert=/path/to/certificate.pem
میتوانید از Truststore و Keystore بهصورت همزمان استفاده کنید تا سناریوهای احراز هویت دوطرفه (Mutual authentication) را پیادهسازی کنید.
Truststore و Keystore
در برخی پایگاهدادهها مثل PostgreSQL و Oracle میتوانید با استفاده از Truststore و Keystore اتصال را ایمن کنید.
Truststore
اگر Truststore برای راستیآزمایی گواهیها تنظیم شود، کلاینت (متابیس شما) میتواند سرور (پایگاهداده) را احراز هویت کند و اطمینان حاصل کند که هویت آن همان است که انتظار میرود.
Keystore
اگر از Keystore برای ارائهٔ گواهیها استفاده شود، سرور (پایگاهداده) میتواند از کلاینت (متابیس شما) بخواهد که با استفاده از آن Keystore خودش را احراز هویت کند. Keystoreها کمتر متداول هستند و در بعضی موارد اصلاً امکان استفاده از آنها وجود ندارد (مثلاً Amazon RDS اجازهٔ استفاده از Keystore را نمیدهد). با این حال، اگر زیرساخت را on‑prem میزبانی میکنید، ممکن است بخواهید از Keystore برای احراز هویت دوطرفه استفاده کنید.