数据加密
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客户端参数配置详情。