加密云盘

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

云盘加密是指通过加密算法保护存储在云盘中的数据免受未经授权的访问和泄露。在数据被写入云盘时对其进行加密,并确保数据在未授权情况下无法被访问或解密,即使云盘数据泄露也无法解密,并在授权用户读取云盘数据时自动解密,从而确保云盘数据的机密性和完整性。本文介绍云盘加密原理、使用限制以及如何实现云盘加密等。

加密概述

加密原理

在ECS的加密过程中,云盘、镜像和快照的加密都是采用行业标准的AES-256加密算法,并且通过密钥管理服务KMS(Key Management Service)进行加密。加密密钥采用双层设计,并通过信封加密的机制实现对数据的加密,第一层为用户的主密钥CMK(Customer Master Key),第二层为根据主密钥生成的数据密钥DK(Data Key)。其中,主密钥CMK用于对数据密钥DK进行加解密操作和保护,数据密钥DK用于对真实业务数据进行加解密操作和保护。加密流程和信封加密机制如下:

  1. 加密数据密钥DK。

    在使用数据密钥DK之前,会用主密钥CMK加密数据密钥。加密后的数据密钥(非明文)可以安全地与加密的业务数据一同存储。这样即使存储介质被访问,没有CMK也无法解密数据密钥。

  2. 存储和读取加密数据。

    当需要读取加密数据时,首先通过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)不支持轮转。

    更多信息,请参见密钥轮转

如何证明数据落盘已加密

在云盘加密机制中,您对云盘数据是否加密是无感的,您可以按照以下思路来证明数据落盘存储时是加密的。

  1. 创建加密云盘时使用KMS主密钥。具体操作,请参见如何加密云盘

  2. 禁用KMS主密钥。具体操作,请参见管理密钥

  3. 通过reboot命令重启ECS实例。

由于加密云盘关联的KMS加密密钥失效,导致ECS实例无法重启,系统盘出现IO hang,云盘无法进行读写操作,从而证明用户数据在落盘存储时是被加密的。

计费说明

KMS为您提供免费的默认密钥(服务密钥和主密钥),默认密钥无需购买KMS实例可直接使用。如果您需要扩展主密钥、使用凭据管家能力或为自建应用构建应用层密码技术方案,您需要付费购买软件密钥管理实例或硬件密钥管理实例。关于使用KMS的更多计费信息,请参见产品计费

使用限制

限制项

说明

实例规格

  • 加密系统盘或通过快照创建数据盘:不包括ecs.ebmg5、ecs.ebmgn5t、ecs.ebmi3、ecs.sccg5、ecs.scch5、ecs.ebmc4和ecs.ebmhfg5。更多信息,请参见实例规格族

  • 创建空数据盘:无限制。

云盘类型

  • 本地盘:不支持。

  • 弹性临时盘:不支持。

  • 云盘:

    • 系统盘或通过快照创建数据盘:仅支持加密ESSD系列云盘(ESSD PL0/PL1/PL2/PL3、ESSD Entry、ESSD AutoPL和ESSD同城冗余)。

    • 创建空数据盘:无限制。

密钥

  • 目前华东5(南京-本地地域)、华东6(福州-本地地域)、泰国(曼谷)和韩国(首尔)地域不支持选择密钥。

  • 首次在密钥下拉列表中选择主密钥加密时,需要单击先授权,根据页面引导为ECS授权AliyunECSDiskEncryptDefaultRole角色,允许ECS访问KMS资源。更多信息,请参见加密ECS资源

权限策略

对于部分高安全合规要求的企业,针对企业账号下所有RAM子账号可能要求必须使用加密以保护数据的机密性。ECS支持配置自定义权限策略限制RAM子账号仅支持创建加密云盘,详细的策略信息,请参见限制RAM用户仅支持创建加密云盘

注意事项

  • 加密行为不可逆,一旦创建为加密云盘,无法转换为非加密云盘。

  • 由于删除、禁用密钥等操作会导致密钥失效,密钥失效后会存在已创建的加密云盘、加密镜像、加密快照数据不可恢复的风险。建议您在删除、禁用密钥前,使用禁用密钥功能,或者自行排查该密钥是否存在关联使用的云资源,避免密钥丢失后数据不可恢复。

    警告

    声明:由用户自行操作密钥失效后导致关联的云盘资源相关数据丢失后不可恢复的风险,由用户自行承担责任。

如何加密云盘

新建ECS实例或云盘时加密云盘

控制台方式

  • 新建ECS实例

    本步骤仅描述创建ECS实例时如何加密系统盘或数据盘,其余配置说明,请参见自定义购买实例

    1. 存储区域选择系统盘和数据盘(如果有)的云盘类型,并配置容量等信息。

    2. 选中加密选项,并在下拉列表中选择一个加密密钥。

      image

  • 新建云盘

    本步骤仅描述创建云盘时如何配置加密选项,其余配置说明,请参见创建空数据盘

    1. 云盘参数处选择云盘类型,并配置容量等信息。

    2. 选中加密选项,并在下拉列表中选择一个加密密钥。

      image

说明
  • 选择加密密钥时,可以选择服务密钥或事先在KMS中创建的密钥。关于加密密钥的更多说明,请参见加密密钥。选择主密钥有地域和权限限制,详情请参见使用限制

  • 如果选择用快照创建磁盘,实例规格族及云盘类型必须满足限制条件才能选择加密选项,详情请参见使用限制

API方式

  • 新建ECS实例

    通过调用API接口RunInstances创建ECS实例时,设置系统盘SystemDisk或数据盘DataDisk的Encrypted值和KMSKeyId值,来加密系统盘和数据盘。

  • 新建云盘

    通过调用API接口CreateDisk创建数据盘时,设置Encrypted值和KMSKeyId值,来加密数据盘。

将存量非加密盘转换为加密云盘

您可以通过以下几种方式加密存量系统盘或数据盘。

控制台方式

  • 加密系统盘

    1. 为ECS实例创建镜像。具体操作,请参见使用实例创建自定义镜像

    2. 将镜像复制为加密镜像。具体操作,请参见复制自定义镜像

    3. 基于加密镜像实现加密系统盘。

      • 使用加密镜像更换源ECS实例的系统盘,源ECS实例的系统盘会自动加密。具体操作,请参见更换操作系统(系统盘)

      • 使用加密镜像重新创建新的ECS实例,新ECS实例的系统盘以及数据盘(如果有)会自动加密。具体操作,请参见使用自定义镜像创建实例

  • 加密数据盘

    1. 为数据盘创建快照。具体操作,请参见创建快照

    2. 将快照复制为加密快照。具体操作,请参见复制快照

    3. 基于加密快照创建新的云盘,云盘数据是加密的。具体操作,请参见使用快照创建云盘

    4. 将创建的加密云盘挂载至源ECS实例。具体操作,请参见挂载数据盘

OOS自动编排方案

您可以通过OOS公共模板ACS-ECS-BulkyEncryptSystemDisk实现对多台ECS实例中的系统盘批量加密。具体操作,请参见通过OOS批量加密系统盘

说明

系统运维管理 OOS(CloudOps Orchestration Service)是全面、免费的云上自动化运维平台,可以帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。更多信息,请参见什么是系统运维管理OOS的公共模板说明,请参见公共模板