Cài đặt và Chuẩn bị Database hỗ trợ Intel SGX
Chúng ta sẽ sử dụng MariaDB Enterprise Edition (hoặc MySQL Enterprise Edition) vì đây là phiên bản duy nhất hỗ trợ tính năng "Transparent Encryption" chạy trên Enclave SGX. Phiên bản Community không có module này.
Tại sao: Cần bản Enterprise để có access tới library mã hóa riêng biệt (mariadb-encrypt) và cấu hình enclave_config.
Kết quả mong đợi: Package database được cài đặt, thư mục cấu hình và data được tạo sẵn.
sudo apt update
wget https://mariadb.com/get/mariadb-enterprise/
sudo dpkg -i mariadb-enterprise_*.deb
sudo apt install -f
Verify kết quả bằng cách kiểm tra phiên bản và đường dẫn bin:
mysql --version
which mysql
Cấu hình file my.cnf để kích hoạt SGX Enclave
Bạn cần chỉnh sửa file cấu hình chính để chuyển đổi chế độ mã hóa từ "file-based" sang "enclave-based". Điều này yêu cầu chỉ định đường dẫn đến thư viện SGX driver và cấu hình enclave.
Tại sao: MySQL/MariaDB cần biết nơi tìm driver SGX (libsgx_sql) và cấu hình để khởi tạo Enclave khi service start.
Kết quả mong đợi: File cấu hình được ghi đè, các tham số SGX được nhận diện đúng.
Trước khi ghi file, đảm bảo bạn đã có thư mục chứa driver SGX (thường là /opt/intel/sgx_sql_libs hoặc tương tự từ SDK đã cài ở Phần 3).
cat > /etc/mysql/my.cnf
Verify cấu hình bằng lệnh hiển thị biến hệ thống:
mysqld --print-defaults | grep -i sgx
Thiết lập chứng thư (Certificate) cho quá trình Attestation
Để Enclave có thể giao tiếp an toàn với Key Management Service (KMS) hoặc để xác thực danh tính với Client, bạn cần tạo một cặp khóa (Key Pair) và chứng thư (Certificate) riêng cho Enclave.
Tại sao: Attestation cần một chứng thư được ký bởi CA đáng tin cậy để xác nhận Enclave là phần mềm hợp lệ và chạy trên phần cứng Intel thật.
Kết quả mong đợi: File .pem chứa private key và public certificate được tạo ra.
mkdir -p /etc/mysql/sgx_certs
cd /etc/mysql/sgx_certs
# Tạo Private Key (2048 bit)
openssl genrsa -out sgx_enclave.key 2048
# Tạo Certificate Signing Request (CSR)
openssl req -new -key sgx_enclave.key -out sgx_enclave.csr -subj "/CN=MySQL-SGX-Enclave/O=YourCompany/C=US"
# Tự ký (Self-signed) cho môi trường dev/test
openssl x509 -req -days 365 -in sgx_enclave.csr -signkey sgx_enclave.key -out sgx_enclave.crt
Verify quyền sở hữu và nội dung chứng thư:
ls -l /etc/mysql/sgx_certs/
openssl x509 -in /etc/mysql/sgx_certs/sgx_enclave.crt -text -noout | grep -A 5 "Subject:"
Cấu hình Key Management để bảo vệ khóa mã hóa trong Enclave
Bạn cần tạo file JSON cấu hình để định nghĩa nơi lưu trữ Master Key. Trong môi trường SGX, Master Key sẽ được lưu trữ bên trong Enclave, không nằm trên disk dưới dạng plain text.
Tại sao: File này chỉ dẫn cho driver SGX biết cách lấy Key từ KMS hoặc từ file config (trong trường hợp dev) để mã hóa data.
Kết quả mong đợi: File sgx_config.json hợp lệ với đường dẫn certificate và key.
cat > /etc/mysql/sgx_config.json
Verify file JSON có cú pháp đúng:
python3 -m json.tool /etc/mysql/sgx_config.json
Khởi động service Database với chế độ SGX
Trước khi start, cần đảm bảo quyền truy cập vào thư mục data và config, đồng thời khởi động service với quyền root hoặc user mysql đã được cấu hình đúng.
Tại sao: Enclave cần quyền truy cập vào /dev/dri/ (SGX device) và thư mục chứa key/cert. Nếu quyền sai, service sẽ crash ngay khi khởi tạo Enclave.
Kết quả mong đợi: Service MySQL chạy, log hiển thị thông báo "Enclave initialized successfully" hoặc "SGX encryption enabled".
mkdir -p /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld /var/lib/mysql /etc/mysql/sgx_certs
# Khởi động service
systemctl start mysql
# Kiểm tra trạng thái
systemctl status mysql
Verify bằng cách kiểm tra log error xem có thông báo thành công về SGX:
grep -i "sgx\|enclave\|encryption" /var/log/mysql/error.log | tail -20
Verify cuối cùng bằng cách login vào MySQL và kiểm tra biến hệ thống:
mysql -u root -p -e "SHOW VARIABLES LIKE 'encrypt_mode';"
Điều hướng series:
Mục lục: Series: Triển khai Database Confidential Computing với Intel SGX trên Ubuntu 24.04
« Phần 3: Thiết lập môi trường phát triển với Intel SGX SDK và DCAT
Phần 5: Triển khai quy trình Attestation và xác thực Enclave »