3.1 KiB
3.1 KiB
راهنمای امنیت
رمزنگاری TLS/SSL
BaraDB از TLS 1.3 برای تمام پروتکلها (باینری، HTTP، WebSocket) پشتیبانی میکند. اگر گواهی ارائه نشود، سرور در هنگام راهاندازی یک گواهی خودامضا تولید میکند.
استفاده از گواهیهای سفارشی
BARADB_TLS_ENABLED=true \
BARADB_CERT_FILE=/etc/baradb/server.crt \
BARADB_KEY_FILE=/etc/baradb/server.key \
./build/baradadb
تولید گواهیهای خودامضا
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt \
-days 365 -nodes -subj "/CN=localhost"
Let's Encrypt (تولید)
از certbot استفاده کنید و BaraDB را به فایلهای تولیدشده هدایت کنید:
sudo certbot certonly --standalone -d db.example.com
BARADB_CERT_FILE=/etc/letsencrypt/live/db.example.com/fullchain.pem \
BARADB_KEY_FILE=/etc/letsencrypt/live/db.example.com/privkey.pem \
./build/baradadb
احراز هویت
احراز هویت مبتنی بر JWT
BaraDB از JWT با امضای HMAC-SHA256 استفاده میکند.
فعالسازی احراز هویت
BARADB_AUTH_ENABLED=true \
BARADB_JWT_SECRET="$(openssl rand -hex 32)" \
./build/baradadb
ایجاد توکنها
import barabadb/protocol/auth
var am = newAuthManager("your-secret-key")
let token = am.createToken(JWTClaims(
sub: "user1",
role: "admin",
exp: getTime() + 24.hours
))
کنترل دسترسی مبتنی بر نقش
| نقش | مجوزها |
|---|---|
admin |
دسترسی کامل |
write |
خواندن + نوشتن |
read |
فقط خواندن |
monitor |
فقط معیارها و سلامت |
احراز هویت چندعاملی (MFA)
import barabadb/protocol/auth
var am = newAuthManager("secret-key")
let mfaCode = am.generateTOTP("user1")
let valid = am.validateTOTP("user1", mfaCode)
محدودیت نرخ
محدودیت نرخ token-bucket از سوءاستفاده جلوگیری میکند:
import barabadb/protocol/ratelimit
var rl = newRateLimiter(
rlaTokenBucket,
globalRate = 10000,
perClientRate = 1000,
burstSize = 100
)
if not rl.allowRequest("client-ip"):
return error("محدودیت نرخ تجاوز شده")
امنیت شبکه
آدرس اتصال
بهصورت پیشفرض BaraDB به 127.0.0.1 متصل میشود. برای تولید:
BARADB_ADDRESS=0.0.0.0 ./build/baradadb
چکلیست امنیتی
- تغییر رمز JWT پیشفرض
- فعالسازی TLS با گواهیهای معتبر
- اتصال به رابطهای خاص
- فعالسازی احراز هویت در تولید
- پیکربندی محدودیت نرخ
- فعالسازی لاگ حسابرسی
- رمزنگاری داده در حالت سکون
- اجرای BaraDB بهعنوان کاربر غیرroot
- محدود نگهداشتن قوانین فایروال
- چرخش منظم رمزهای JWT