docs: add multi-language documentation (ru, fa, zh, tr, ar)
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
# راهنمای امنیت
|
||||
|
||||
## رمزنگاری TLS/SSL
|
||||
|
||||
BaraDB از TLS 1.3 برای تمام پروتکلها (باینری، HTTP، WebSocket) پشتیبانی میکند. اگر گواهی ارائه نشود، سرور در هنگام راهاندازی یک گواهی خودامضا تولید میکند.
|
||||
|
||||
### استفاده از گواهیهای سفارشی
|
||||
|
||||
```bash
|
||||
BARADB_TLS_ENABLED=true \
|
||||
BARADB_CERT_FILE=/etc/baradb/server.crt \
|
||||
BARADB_KEY_FILE=/etc/baradb/server.key \
|
||||
./build/baradadb
|
||||
```
|
||||
|
||||
### تولید گواهیهای خودامضا
|
||||
|
||||
```bash
|
||||
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt \
|
||||
-days 365 -nodes -subj "/CN=localhost"
|
||||
```
|
||||
|
||||
### Let's Encrypt (تولید)
|
||||
|
||||
از certbot استفاده کنید و BaraDB را به فایلهای تولیدشده هدایت کنید:
|
||||
|
||||
```bash
|
||||
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 استفاده میکند.
|
||||
|
||||
#### فعالسازی احراز هویت
|
||||
|
||||
```bash
|
||||
BARADB_AUTH_ENABLED=true \
|
||||
BARADB_JWT_SECRET="$(openssl rand -hex 32)" \
|
||||
./build/baradadb
|
||||
```
|
||||
|
||||
#### ایجاد توکنها
|
||||
|
||||
```nim
|
||||
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)
|
||||
|
||||
```nim
|
||||
import barabadb/protocol/auth
|
||||
|
||||
var am = newAuthManager("secret-key")
|
||||
let mfaCode = am.generateTOTP("user1")
|
||||
let valid = am.validateTOTP("user1", mfaCode)
|
||||
```
|
||||
|
||||
## محدودیت نرخ
|
||||
|
||||
محدودیت نرخ token-bucket از سوءاستفاده جلوگیری میکند:
|
||||
|
||||
```nim
|
||||
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` متصل میشود. برای تولید:
|
||||
|
||||
```bash
|
||||
BARADB_ADDRESS=0.0.0.0 ./build/baradadb
|
||||
```
|
||||
|
||||
## چکلیست امنیتی
|
||||
|
||||
- [ ] تغییر رمز JWT پیشفرض
|
||||
- [ ] فعالسازی TLS با گواهیهای معتبر
|
||||
- [ ] اتصال به رابطهای خاص
|
||||
- [ ] فعالسازی احراز هویت در تولید
|
||||
- [ ] پیکربندی محدودیت نرخ
|
||||
- [ ] فعالسازی لاگ حسابرسی
|
||||
- [ ] رمزنگاری داده در حالت سکون
|
||||
- [ ] اجرای BaraDB بهعنوان کاربر غیرroot
|
||||
- [ ] محدود نگهداشتن قوانین فایروال
|
||||
- [ ] چرخش منظم رمزهای JWT
|
||||
Reference in New Issue
Block a user