数据加密
CPFS 通用版支持服务端加密和传输加密,全链路保障您的数据安全。
-
服务端加密:保护静态存储的数据,防止物理磁盘丢失或被盗取导致的数据泄露。
-
传输加密:保护网络传输中的数据,防止数据在传输过程中被窃听或篡改。
工作原理
-
服务端加密
采用业界标准的信封加密机制,通过阿里云密钥管理服务 (KMS) 实现。系统会为每个文件系统生成一个唯一的数据加密密钥(DEK),并使用AES-256算法加密您的数据。该DEK自身则由您在KMS中指定的用户主密钥(CMK)加密保护。此过程对用户透明,在保障数据安全的同时,通过DEK缓存机制维持了较高的读写性能。
-
传输加密
基于开源软件Stunnel实现端到端的数据安全传输。挂载文件系统时,CPFS客户端工具(
aliyun-alinas-utils)在ECS实例上启动Stunnel代理进程。该进程将所有NFS流量封装在TLS加密隧道中进行传输,有效防止数据在网络中被窃听或篡改。
选择加密方案
对于最高安全等级的业务,建议同时启用服务端加密和传输加密,实现全链路数据保护。
|
对比维度 |
服务端加密 |
传输加密 |
|
核心价值 |
保护静态数据安全,防止物理介质泄露。 |
保护传输中数据安全,防止网络窃听。 |
|
适用场景 |
|
|
|
性能影响 |
IOPS和吞吐量可能略有下降,CPU开销少量增加。 |
有约10%的性能损耗(访问延迟增加10%,IOPS下降10%)。 对于吞吐密集型应用,每个挂载点的Stunnel进程在极端情况下可能占用一整个CPU核心。建议根据业务负载预留足够的CPU资源。 |
|
成本 |
|
免费 |
|
管理复杂度 |
创建时一次性配置。 用户管理的密钥若被误删,数据将永久丢失且无法恢复。 |
需要安装和维护客户端,并关注证书有效期。 客户端证书过期将导致文件系统停止响应。 |
配置服务端加密
服务端加密仅支持在创建文件系统时配置。创建完成后,加密功能不可关闭,绑定的密钥不可更改。开启加密会对性能产生轻微影响,IOPS和吞吐量可能略有下降。
步骤一:选择密钥管理方式
根据您的安全合规需求,选择合适的密钥管理方式:
-
托管密钥:由CPFS服务代您创建和管理密钥,您无需关心密钥的生命周期,仅拥有审计权限。此方式免费且管理简单,适用于通用安全场景。
-
用户管理密钥(KMS):使用您在KMS中管理的密钥对文件系统进行加密,您拥有密钥完整生命周期管理权限(创建、启用、禁用、轮转、删除),适用于严格合规要求或需自主掌控密钥的场景。支持两种密钥来源:
-
KMS创建的密钥:在KMS控制台创建用户主密钥(CMK)。
-
自带密钥(BYOK):将外部生成的密钥导入KMS使用。
如选择用户管理密钥,需提前在密钥管理服务控制台创建或导入用户主密钥(CMK)。
-
步骤二:创建加密的文件系统
-
登录CPFS控制台,进入创建CPFS文件系统页面。
-
在加密类型配置项,选择托管密钥或用户管理密钥(KMS)。
-
若选择用户管理密钥(KMS),请从密钥ID下拉列表中选择一个您已创建的自定义密钥。
首次使用时,系统会引导您创建服务关联角色,以授权CPFS访问您的KMS资源。
-
完成其他配置项,然后创建文件系统。
步骤三:验证加密配置
创建完成后,在文件系统列表中查看加密列状态,确认加密功能已启用。
此时,所有写入该文件系统的数据都将在存储时被自动加密。
配置传输加密
传输加密通过在挂载时添加特定参数实现,用于保护NFS流量在网络传输中的安全。
前提条件
-
目标ECS实例已配置公网或绑定弹性公网IP。
步骤一:安装CPFS-NFS客户端
-
登录待挂载CPFS文件系统的云服务器ECS。连接方式,请参见选择ECS远程连接方式。
-
下载并安装CPFS-NFS客户端。
Alibaba Cloud Linux
-
下载CPFS-NFS客户端。
wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.al.noarch.rpm -
安装CPFS-NFS客户端。
sudo yum install aliyun-alinas-utils-*.rpm
CentOS
-
下载CPFS-NFS客户端。
wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.el.noarch.rpm -
安装CPFS-NFS客户端。
sudo yum install aliyun-alinas-utils-*.rpm
Ubuntu
-
下载CPFS-NFS客户端。
sudo wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.deb -O /tmp/aliyun-alinas-utils-latest.deb -
安装CPFS-NFS客户端。
sudo apt-get update sudo apt-get install /tmp/aliyun-alinas-utils-latest.deb
Debian
-
下载CPFS-NFS客户端。
sudo wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.deb -O /tmp/aliyun-alinas-utils-latest.deb -
安装CPFS-NFS客户端。
sudo apt-get update sudo apt-get install /tmp/aliyun-alinas-utils-latest.deb
SUSE
-
下载CPFS-NFS客户端。
wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.lp15.x86_64.rpm -
安装CPFS-NFS客户端。
sudo zypper --no-gpg-checks install -y aliyun-alinas-utils-*.rpm
-
-
检查CPFS-NFS客户端安装结果。
which mount.cpfs-nfs成功返回示例如下:
/usr/sbin/mount.cpfs-nfs
步骤二:启用传输加密挂载
开启传输加密功能时,如果您的目标ECS实例上对应目录(例如/mnt)已挂载NFS协议文件系统,请先卸载NFS协议文件系统,再根据本文重新挂载NFS协议文件系统。
在标准的挂载命令中,添加 -o tls 参数即可启用传输加密。挂载时,CPFS客户端工具会自动将挂载点映射写入/etc/hosts文件,卸载时会删除相应映射。
# 示例:启用传输加密挂载
sudo mount -t cpfs-nfs -o tls,vers=3,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.cpfs.aliyuncs.com:/share/path /mnt
-
-o tls:必需参数,启用传输加密。 -
vers=3:使用NFSv3协议,提供更好的兼容性。 -
rsize=1048576,wsize=1048576:设置1MB的读写块大小,优化传输性能。 -
hard:硬挂载模式,确保数据一致性。
如需了解更多挂载参数,请参见CPFS-NFS客户端挂载文件系统(推荐)。
步骤三:验证加密生效
挂载成功后,您可以通过检查Stunnel进程和网络连接来验证加密是否已生效。
-
检查
Stunnel进程:确认Stunnel代理进程已在运行。ps aux | grep stunnel -
检查网络连接:确认Stunnel已建立到CPFS服务端的加密连接。
netstat -anp | grep stunnel预期会看到
stunnel进程与CPFS服务端的12049端口建立了连接。
验证通过后,您对挂载目录的所有读写操作都将通过加密隧道进行。
配额与限制
-
服务端加密限制
-
创建时配置:必须在创建文件系统时配置,创建后无法开启、关闭或更改。
-
算法限制:仅支持AES-256算法,不支持SM4等其他算法。
-
-
传输加密限制
-
文件系统支持:仅支持CPFS通用版NFS协议文件系统。
-
网络端口占用:Stunnel进程默认需要使用本地
12049端口,请确保该端口未被业务占用。您可以执行
ss -ant | grep -w 12049命令判断目标端口是否被占用。如果返回为空,则表示目标端口未被占用。如果端口被占用,可通过修改配置文件更换端口。 -
本地IP占用:每个启用了传输加密的挂载点会按顺序占用
127.0.1.1~127.0.255.254范围内的一个IP地址,卸载后释放。您可以通过cat /etc/hosts查看当前占用情况。 -
挂载模式互斥:不支持在同一个客户端上,对同一个文件系统挂载点同时使用加密(TLS)和非加密模式进行挂载。如需切换,必须先卸载原有的挂载点。
-
操作系统支持:仅支持以下64位操作系统版本。
操作系统类型
操作系统版本
Alibaba Cloud Linux
-
Alibaba Cloud Linux 3.2104 64位
-
Alibaba Cloud Linux 2.1903 64位
CentOS
-
CentOS 8.x 64位
-
CentOS 7.x 64位
Ubuntu
-
Ubuntu 20.04 64位
-
Ubuntu 18.04 64位
-
Ubuntu 16.04 64位
Debian
-
Debian 10.x 64位
-
Debian 9.x 64位
-
Debian 8.x 64位
SUSE
-
SUSE Linux Enterprise Server 15 64位
-
-
故障与日志排查
传输加密相关的客户端日志位于/var/log/aliyun/alinas/目录。通过修改/etc/aliyun/alinas/alinas-utils.conf文件可调整日志配置:
|
参数 |
说明 |
默认值 |
|
|
客户端工具的日志级别。 |
INFO |
|
|
单个日志文件最大容量 |
1048576(1MB) |
|
|
日志文件最大保留数量 |
10 |
|
|
Stunnel调试日志开关,开启后可输出更详细的TLS握手信息。 |
false |
|
|
是否检查服务端证书的域名。生产环境建议设为 |
false |
|
|
是否检查服务端证书的有效期和颁发机构。生产环境建议设为 |
false |
修改配置后执行以下命令重启服务:
sudo service aliyun-alinas-mount-watchdog restart
应用于生产环境
-
密钥管理风险(服务端加密)
如果您使用的是用户管理密钥,请务必制定严格的密钥管理流程。一旦密钥被禁用或删除,加密的文件系统将无法读写任何数据,且数据无法恢复。建议开启 KMS 的密钥删除保护功能。 -
证书管理(传输加密)
CPFS客户端传输加密功能依赖第三方证书,第三方证书需要定期更换,CPFS会提前一个月通过邮件、站内信发出通知,请您关注信息并及时更新CPFS客户端工具
aliyun-alinas-utils版本,未更新CPFS客户端工具将导致使用传输加密方式挂载的CPFS文件系统在证书过期后停止响应。
常见问题
Q: 服务端加密的密钥被禁用或删除后,数据还能访问吗?
不能。 如果您使用的是“用户管理密钥”,一旦密钥被禁用或删除,加密的文件系统将无法读写任何数据。请谨慎操作。
Q: 文件系统开启服务器端加密且为静态加密类型,有效存储容量是否会缩小?
不会。AES属于分组加密,遵循自动补位机制,静态加密自动补位的数据不计算在文件系统实例的有效存储容量中。
Q:服务端加密支持SM4算法吗?
不支持。CPFS 服务器端加密密钥采用行业标准AES-256加密算法,保护文件系统静态数据,并通过信封加密机制防止未经授权的数据访问。服务器端加密密钥依托于KMS服务生成和管理。KMS服务能最大程度保障密钥的保密性、完整性和可用性。更多加密信息,请参见使用KMS信封加密在本地加密和解密数据。
Q:使用传输加密方式挂载时报错:The mountpoint <mountpoint> is already mounted with tls/non-tls, mixing tls and non-tls is not supported in this version。
报错原因:同一挂载地址不能同时支持传输加密(TLS)和非传输加密(非TLS)两种模式。当客户端检测到混合挂载操作时,会报错并终止挂载。
解决方案:使用umount命令卸载当前挂载点,在TLS和非TLS中选择一种,重新执行挂载命令。
Q:使用传输加密方式挂载时报错:Cannot mount with tls/non-tls now, please wait <sec> seconds for the unmount to complete。
报错原因:在传输加密模式和非传输加密模式之间切换时,系统需要完成卸载缓冲期才能重新挂载。如果切换间隔时间过短,会触发此错误。
解决方案:
-
根据错误提示等待指定的秒数,等待时间结束后,重新执行挂载命令。
-
还可通过配置
unmount_grace_period_sec参数调整卸载缓冲期时长。具体配置方法请参见CPFS客户端参数配置详情。