Cấu hình Xác thực (Authentication) và SSL/TLS
Để bảo vệ Databend khỏi truy cập trái phép, chúng ta cần kích hoạt cơ chế xác thực người dùng và mã hóa kết nối qua SSL/TLS.
Trước khi cấu hình, chúng ta cần tạo một cặp chứng chỉ tự ký (self-signed certificate) cho máy chủ Databend nếu chưa có chứng chỉ từ CA uy tín.
Thực hiện tạo thư mục chứa chứng chỉ và file khóa riêng tư.
mkdir -p /etc/databend/certs
cd /etc/databend/certs
Kết quả: Thư mục chứa chứng chỉ đã được tạo sẵn sàng.
Để tạo chứng chỉ, sử dụng lệnh openssl để tạo khóa riêng (private key) và chứng chỉ công khai (certificate) với thời hạn 365 ngày.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/CN=localhost/O=Databend/C=VN"
Kết quả: Xuất hiện 2 file là server.key và server.crt trong thư mục /etc/databend/certs.
Cấu hình file dnf (Databend Frontend) để bật SSL/TLS và yêu cầu xác thực. File cấu hình nằm tại /etc/databend/dnf.toml.
[meta]
address = "0.0.0.0:9000"
[storage]
type = "local"
path = "/var/lib/databend/data"
[http]
address = "0.0.0.0:8080"
enable_tls = true
tls_cert_path = "/etc/databend/certs/server.crt"
tls_key_path = "/etc/databend/certs/server.key"
[query]
address = "0.0.0.0:8000"
enable_tls = true
tls_cert_path = "/etc/databend/certs/server.crt"
tls_key_path = "/etc/databend/certs/server.key"
Kết quả: Databend sẽ yêu cầu client kết nối qua cổng 8000 và 8080 với giao thức HTTPS.
Khởi động lại dịch vụ Databend để áp dụng cấu hình mới.
systemctl restart databend-dnf
Kết quả: Dịch vụ khởi động lại thành công, kiểm tra trạng thái bằng systemctl status databend-dnf.
Quản lý Người dùng và Cấp quyền (User Management)
Sau khi bật xác thực, chúng ta cần tạo tài khoản người dùng mới thay vì sử dụng user mặc định (root) cho các ứng dụng AI.
Đăng nhập vào Databend CLI (databend-cli) hoặc MySQL client để thực thi lệnh SQL quản lý user.
mysql -h 127.0.0.1 -P 9000 -u root -p -e "CREATE USER 'ai_engineer' IDENTIFIED BY 'StrongPassword123!';"
Kết quả: Lệnh trả về "Query OK, 0 rows affected", báo hiệu user ai_engineer đã được tạo.
Cấp quyền truy cập vào cơ sở dữ liệu (database) và bảng (table) cụ thể cho user vừa tạo. Ở đây chúng ta cấp quyền SELECT và INSERT cho bảng vector embeddings.
mysql -h 127.0.0.1 -P 9000 -u root -p -e "GRANT SELECT, INSERT, UPDATE ON vector_db.* TO 'ai_engineer';"
Kết quả: Lệnh trả về "Query OK, 0 rows affected", user ai_engineer đã có quyền thao tác trên database vector_db.
Tuỳ chọn: Thu hồi quyền (REVOKE) nếu cần giới hạn truy cập sau này.
mysql -h 127.0.0.1 -P 9000 -u root -p -e "REVOKE UPDATE ON vector_db.* FROM 'ai_engineer';"
Kết quả: User ai_engineer chỉ còn quyền SELECT và INSERT, không thể UPDATE nữa.
Để kiểm tra danh sách user và quyền hạn hiện tại, sử dụng lệnh SHOW.
mysql -h 127.0.0.1 -P 9000 -u root -p -e "SHOW USERS; SHOW GRANTS FOR 'ai_engineer';"
Kết quả: Hiển thị danh sách user và chi tiết các quyền đã cấp cho ai_engineer.
Thiết lập Kiểm soát Truy cập Mạng (Network Access Control)
Để ngăn chặn truy cập từ các địa chỉ IP không đáng tin cậy, chúng ta sẽ cấu hình whitelist IP trong file cấu hình Databend.
Chỉnh sửa lại file /etc/databend/dnf.toml, thêm phần [security] để giới hạn IP.
[meta]
address = "0.0.0.0:9000"
[http]
address = "0.0.0.0:8080"
enable_tls = true
tls_cert_path = "/etc/databend/certs/server.crt"
tls_key_path = "/etc/databend/certs/server.key"
[query]
address = "0.0.0.0:8000"
enable_tls = true
tls_cert_path = "/etc/databend/certs/server.crt"
tls_key_path = "/etc/databend/certs/server.key"
[security]
network_acl = ["192.168.1.0/24", "10.0.0.0/8", "127.0.0.1"]
Kết quả: Databend chỉ chấp nhận kết nối từ dải IP nội bộ 192.168.1.x, 10.x.x.x và localhost.
Khởi động lại dịch vụ Databend để áp dụng chính sách mạng mới.
systemctl restart databend-dnf
Kết quả: Dịch vụ chạy lại với chính sách bảo mật mạng mới.
Để kiểm tra tính hiệu quả, thử kết nối từ một IP nằm ngoài danh sách whitelist (ví dụ từ máy tính khác trong mạng không nằm trong dải 192.168.1.x).
mysql -h -P 9000 -u ai_engineer -p
Kết quả: Kết nối bị từ chối (Connection refused hoặc Access denied) nếu IP không nằm trong danh sách whitelist.
Verification Tổng thể
Thực hiện kiểm tra toàn bộ quy trình bảo mật bằng cách kết nối với user mới, qua SSL, từ IP được phép.
Sử dụng lệnh mysql với các tham số SSL để xác minh kết nối mã hóa.
mysql -h 127.0.0.1 -P 9000 -u ai_engineer -p --ssl-cert=/etc/databend/certs/server.crt --ssl-ca=/etc/databend/certs/server.crt --ssl-verify-server-cert
Kết quả: Kết nối thành công, prompt chuyển sang mysql> và bạn có thể thực thi lệnh SELECT * FROM vector_db.; để đọc dữ liệu.
Kiểm tra log của Databend để đảm bảo không có cảnh báo bảo mật nào.
journalctl -u databend-dnf -f | grep -i "error\|warning"
Kết quả: Không xuất hiện dòng log nào liên quan đến lỗi bảo mật hoặc từ chối kết nối bất thường từ IP hợp lệ.
Điều hướng series:
Mục lục: Series: Triển khai Database AI-native với Databend và Ubuntu 24.04
« Phần 2: Cài đặt Databend Cloud Native Data Platform trên Ubuntu
Phần 4: Tích hợp tính năng AI-native: Vector Search và Embedding »