رمزنگاری اتصال پایگاهداده
متابیس اطلاعات اتصال به پایگاهدادههایی را که اضافه میکنید، در پایگاهدادهٔ اپلیکیشن متابیس ذخیره میکند. برای اینکه اگر شخصی به این پایگاهداده دسترسی پیدا کرد نتواند بهسادگی جزئیات اتصال را بخواند، متابیس میتواند این اطلاعات را هنگام ذخیرهشدن بهطور خودکار با الگوریتم AES256 + SHA512 رمزنگاری کند و هر زمان لازم شد، در لحظه (on-the-fly) آنها را رمزگشایی کند.
ساخت کلید رمزنگاری
- یک کلید محرمانه (Secret key) بسازید که حداقل ۱۶ کاراکتر داشته باشد (هرچه طولانیتر، امنتر). پیشنهاد میکنیم از یک مولّد امن تصادفی مثل
opensslاستفاده کنید.بدون این کلید، امکان رمزگشایی جزئیات اتصال وجود ندارد. اگر این کلید را گم کنید (یا عوض کنید)، باید تمام جزئیات اتصالی را که با این کلید رمز شدهاند در بخش ادمین دوباره تنظیم کنید.
- این کلید را بهصورت متغیر محیطی
MB_ENCRYPTION_SECRET_KEYتنظیم کنید. در پلنهای self-hosted Pro و Enterprise میتوانید این مقدار را از طریق فایل تنظیمات هم تنظیم کنید.
نمونه دستورات برای ساخت و افزودن کلید
- میتوانید با
opensslیک کلید ۳۲ کاراکتری تصادفی و رمزنگاریشده تولید کنید:
openssl rand -base64 32
- کلید تولیدشده را کپی کنید؛ خروجی چیزی شبیه این خواهد بود:
IYqrSi5QDthvFWe4/WdAxhnra5DZC3RKx3ZSrOJDKsM=
- کلید را بهصورت متغیر محیطی تنظیم کنید و متابیس را مثل همیشه اجرا کنید:
MB_ENCRYPTION_SECRET_KEY="IYqrSi5QDthvFWe4/WdAxhnra5DZC3RKx3ZSrOJDKsM=" \
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar
بهمحض اینکه مقدار MB_ENCRYPTION_SECRET_KEY را تنظیم کنید، متابیس جزئیات اتصال هر پایگاهدادهٔ جدیدی را که اضافه میکنید بهطور خودکار رمزنگاری و ذخیره میکند. برای رمزنگاری اتصالهای موجود، بخش بعدی را ببینید.
رمزنگاری اتصالهای موجود
اگر قبل از تنظیم MB_ENCRYPTION_SECRET_KEY پایگاهدادههایی را به متابیس اضافه کردهاید، میتوانید با رفتن به صفحهٔ هر پایگاهداده در Admin settings > Databases و کلیک روی دکمهٔ Save جزئیات اتصال آن را رمزنگاری کنید. پایگاهدادههایی که هنوز جزئیات اتصالشان رمز نشده، همچنان بهطور عادی کار خواهند کرد.
چرخش (Rotation) کلید رمزنگاری
- توصیه میکنیم قبل از چرخش کلید، از دادههای خود بکآپ بگیرید.
- اجرای متابیس را متوقف کنید.
- دستور CLI
rotate-encryption-keyرا اجرا کنید:- کلید فعلی را بهصورت متغیر محیطی
MB_ENCRYPTION_SECRET_KEYتنظیم کنید. - کلید جدید را بهعنوان پارامتر دستور قرار دهید.
- کلید فعلی را بهصورت متغیر محیطی
نمونه دستور برای چرخش کلید
MB_ENCRYPTION_SECRET_KEY=your-current-key \
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar \
rotate-encryption-key new-key
غیرفعالکردن رمزنگاری (حذف کلید)
برای غیرفعالکردن کلید رمزنگاری، مراحل چرخش کلید را تکرار کنید، اما اینبار بهجای کلید جدید، یک رشتهٔ خالی ("") وارد کنید.
نمونه دستور برای غیرفعالکردن کلید
MB_ENCRYPTION_SECRET_KEY="your-current-key" \
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar \
rotate-encryption-key ""