磁盘加密

磁盘加密配置指南 #

在合规要求较高的场景(金融、政务、医疗),可能需要对 Easysearch 数据所在磁盘进行静态加密(Encryption at Rest)。

加密方案对比 #

方案透明性性能影响适用场景
LUKS (dm-crypt)完全透明5~15%Linux 原生,推荐
eCryptfs文件级15~30%不推荐(性能差)
硬件自加密 (SED)完全透明~0%硬件支持时首选
云盘加密完全透明~0%云环境推荐

LUKS 全盘加密(Linux) #

配置步骤 #

# 1. 安装 cryptsetup
yum install -y cryptsetup  # CentOS/RHEL
apt install -y cryptsetup  # Ubuntu/Debian

# 2. 加密磁盘(会清除数据!)
cryptsetup luksFormat /dev/nvme0n1
# 输入加密密码

# 3. 打开加密卷
cryptsetup open /dev/nvme0n1 es-data
# 创建 /dev/mapper/es-data

# 4. 格式化并挂载
mkfs.xfs -f /dev/mapper/es-data
mkdir -p /data/easysearch
mount -o noatime /dev/mapper/es-data /data/easysearch

# 5. 配置开机自动解锁
# 方式一:密钥文件(适合服务器)
dd if=/dev/urandom of=/root/.luks-key bs=256 count=1
chmod 400 /root/.luks-key
cryptsetup luksAddKey /dev/nvme0n1 /root/.luks-key

# /etc/crypttab
echo "es-data /dev/nvme0n1 /root/.luks-key luks" >> /etc/crypttab

# /etc/fstab
echo "/dev/mapper/es-data /data/easysearch xfs noatime 0 0" >> /etc/fstab

性能优化 #

# 使用 AES-NI 硬件加速(现代 CPU 均支持)
cryptsetup open --type luks --allow-discards /dev/nvme0n1 es-data

# 验证 AES-NI 是否启用
grep -o aes /proc/cpuinfo | head -1
# 输出 "aes" 表示支持

# 选择高效的加密参数
cryptsetup luksFormat --cipher aes-xts-plain64 --key-size 256 --hash sha256 /dev/nvme0n1

云环境加密 #

阿里云 #

创建云盘时勾选「加密」,选择 KMS 密钥
# 或通过 API:
aliyun ecs CreateDisk --Encrypted true --KMSKeyId <key-id>

AWS #

创建 EBS 卷时启用加密:
aws ec2 create-volume --encrypted --kms-key-id <key-id> ...

腾讯云 #

创建云硬盘时勾选「加密」

云盘加密对 Easysearch 完全透明,无需额外配置,也无明显性能损耗。

密钥管理建议 #

建议说明
使用 KMS云环境使用云厂商的 KMS 管理密钥
密钥轮换定期轮换加密密钥
备份密钥LUKS header 备份,防止密钥丢失导致数据不可恢复
分离存放密钥不要存放在加密磁盘本身
# 备份 LUKS header(重要!)
cryptsetup luksHeaderBackup /dev/nvme0n1 --header-backup-file /backup/luks-header.bak

延伸阅读 #