云盘加密是指通过加密算法保护存储在云盘中的数据免受未经授权的访问和泄露。在数据被写入云盘时对其进行加密,并确保数据在未授权情况下无法被访问或解密,即使云盘数据泄露也无法解密,并在授权用户读取云盘数据时自动解密,从而确保云盘数据的机密性和完整性。本文介绍云盘加密原理、使用限制以及如何实现云盘加密等。
加密概述
加密原理
在ECS的加密过程中,云盘、镜像和快照的加密都是采用行业标准的AES-256加密算法,并且通过密钥管理服务KMS(Key Management Service)进行加密。加密密钥采用双层设计,并通过信封加密的机制实现对数据的加密,第一层为用户的主密钥CMK(Customer Master Key),第二层为根据主密钥生成的数据密钥DK(Data Key)。其中,主密钥CMK用于对数据密钥DK进行加解密操作和保护,数据密钥DK用于对真实业务数据进行加解密操作和保护。加密流程和信封加密机制如下:
加密数据密钥DK。
在使用数据密钥DK之前,会用主密钥CMK加密数据密钥。加密后的数据密钥(非明文)可以安全地与加密的业务数据一同存储。这样即使存储介质被访问,没有CMK也无法解密数据密钥。
存储和读取加密数据。
当需要读取加密数据时,首先通过KMS请求解密数据密钥。KMS验证请求后,返回数据密钥的明文形式,这一过程通常在内存中完成,不会存储在任何存储介质上。然后,使用管理程序在内存中的明文数据密钥来解密云盘I/O操作中的数据。
整个信封加密过程中,主密钥的明文不会在KMS托管的密码机之外进行存储和使用。同时,数据密钥明文仅会在用户使用的服务实例所在的宿主机的内存中进行使用,永远不会以明文形式存储在任何存储介质上。
更多信息,请参见云产品集成KMS加密概述。
加密密钥
密钥类型
KMS提供默认密钥(服务密钥)、默认密钥(主密钥)、软件密钥等多种密钥类型供云产品使用。当您希望对ECS实例中的某些资源进行加密时,可以选择使用服务密钥进行加密,也可以选择使用自行创建或管理的用户主密钥进行加密。关于密钥类型的更多说明,请参见密钥服务概述。
服务密钥
您首次在一个地域加密云盘时,系统会自动在当前地域KMS中创建一个专为ECS使用的服务密钥。每个用户在每个地域的服务密钥是唯一的,由云产品创建和管理。服务密钥可以帮助您获得最基本的数据保护能力,但是对于高安全要求级别的场景,服务密钥可能存在一些密钥管理上的短板,例如不能自主管理密钥的生命周期。
ECS使用的服务密钥别名为:
华北5(呼和浩特)、华北6(乌兰察布)、华南2(河源)、西南1(成都)4个地域:alias/acs/ecs
其他地域:Default Service CMK
主密钥
您可以选择自己创建或者上传主密钥到KMS,并且管理主密钥的生命周期。使用主密钥可以获得更多的安全能力。您可以禁用或启用密钥、通过KMS导入自带的密钥等操作进一步增强密钥生命周期管理能力和控制ECS数据加解密的能力。创建密钥、禁用密钥等操作,请参见管理密钥。
密钥规格
KMS支持常见的对称密钥规格和非对称密钥规格,以保证数据加密的安全性。使用主密钥创建加密云盘、复制加密快照或加密镜像时,仅支持使用对称密钥规格的密钥。更多信息,请参见密钥管理类型和密钥规格。
密钥轮转
在ECS的加密最佳实践中建议不要广泛重复使用加密密钥,建议您使用KMS的密钥轮转功能来加强密钥使用的安全性。
启用密钥轮转只会对新的加密资源(云盘、快照或镜像)使用新的密钥材料进行加密,存量的加密资源不会受到影响。
仅由KMS生成密钥材料的对称密钥支持轮转,自行导入密钥材料的密钥(BYOK)不支持轮转。
更多信息,请参见密钥轮转。
如何证明数据落盘已加密
在云盘加密机制中,您对云盘数据是否加密是无感的,您可以按照以下思路来证明数据落盘存储时是加密的。
由于加密云盘关联的KMS加密密钥失效,导致ECS实例无法重启,系统盘出现IO hang,云盘无法进行读写操作,从而证明用户数据在落盘存储时是被加密的。
计费说明
KMS为您提供免费的默认密钥(服务密钥和主密钥),默认密钥无需购买KMS实例可直接使用。如果您需要扩展主密钥、使用凭据管家能力或为自建应用构建应用层密码技术方案,您需要付费购买软件密钥管理实例或硬件密钥管理实例。关于使用KMS的更多计费信息,请参见产品计费。
使用限制
限制项 | 说明 |
实例规格 |
|
云盘类型 |
|
主密钥 |
|
权限策略 | 对于部分高安全合规要求的企业,针对企业账号下所有RAM子账号可能要求必须使用加密以保护数据的机密性。ECS支持配置自定义权限策略限制RAM子账号仅支持创建加密云盘,详细的策略信息,请参见限制RAM用户仅支持创建加密云盘。 |
注意事项
加密行为不可逆,一旦创建为加密云盘,无法转换为非加密云盘。
由于删除、禁用密钥等操作会导致密钥失效,密钥失效后会存在已创建的加密云盘、加密镜像、加密快照数据不可恢复的风险。建议您在删除、禁用密钥前,使用禁用密钥功能,或者自行排查该密钥是否存在关联使用的云资源,避免密钥丢失后数据不可恢复。
警告声明:由用户自行操作密钥失效后导致关联的云盘资源相关数据丢失后不可恢复的风险,由用户自行承担责任。
如何加密云盘
新建ECS实例或云盘时加密云盘
控制台方式
API方式
新建ECS实例
通过调用API接口RunInstances创建ECS实例时,设置系统盘SystemDisk或数据盘DataDisk的
Encrypted
值和KMSKeyId
值,来加密系统盘和数据盘。新建云盘
通过调用API接口CreateDisk创建数据盘时,设置
Encrypted
值和KMSKeyId
值,来加密数据盘。
将存量非加密盘转换为加密云盘
您可以通过以下几种方式加密存量系统盘或数据盘。
控制台方式
加密系统盘
为ECS实例创建镜像。具体操作,请参见使用实例创建自定义镜像。
将镜像复制为加密镜像。具体操作,请参见复制自定义镜像。
基于加密镜像实现加密系统盘。
使用加密镜像更换源ECS实例的系统盘,源ECS实例的系统盘会自动加密。具体操作,请参见更换操作系统(系统盘)。
使用加密镜像重新创建新的ECS实例,新ECS实例的系统盘以及数据盘(如果有)会自动加密。具体操作,请参见使用自定义镜像创建实例。
加密数据盘
OOS自动编排方案
您可以通过OOS公共模板ACS-ECS-BulkyEncryptSystemDisk实现对多台ECS实例中的系统盘批量加密。具体操作,请参见通过OOS批量加密系统盘。