当您的业务因为安全需求或法规合规要求等原因,需要对存储在云盘上的数据进行加密保护时,您可以使用阿里云ECS云盘加密功能,无需构建、维护和保护自己的密钥管理基础设施,即可保护数据的隐私性和自主性。

本文中的云盘指代云盘和共享块存储。下文中统一简称为云盘,除非特别指出。

什么是ECS云盘加密

使用ECS云盘加密功能,系统会将从ECS实例传输到云盘的数据自动加密,并在读取数据时自动解密。加密解密在ECS实例所在的宿主机上进行,对从ECS实例传输到云盘的数据进行加密。在加密解密的过程中,云盘的性能几乎没有衰减。关于性能测试方式,请参见块存储性能

在创建加密云盘并将其挂载到ECS实例后,系统将对以下数据进行加密:
  • 云盘中的静态数据
  • 云盘和实例间传输的数据(实例操作系统内数据不加密)
  • 从加密云盘创建的所有快照(即,加密快照)

ECS 云盘加密支持所有在售云盘(普通云盘、高效云盘、SSD云盘和ESSD云盘)和共享块存储(高效共享块存储和SSD共享块存储)。

ECS 云盘加密支持所有在售的实例规格。所有地域都支持云盘的加密。

ECS云盘加密的依赖

ECS 云盘加密功能依赖于同一地域的 密钥管理服务(Key Management Service,KMS),但是您无需到密钥管理服务控制台做额外的操作,除非您有单独的 KMS 操作需求。

首次使用 ECS 云盘加密功能(在 ECS 实例售卖页或者独立云盘售卖页)时,需要根据页面提示授权开通密钥管理服务(KMS),否则将无法购买带有加密云盘的实例或者加密的独立云盘。

如果通过 API 或者 CLI 使用 ECS 云盘加密功能,比如RunInstancesCreateInstanceCreateDisk,您需要先在阿里云网站上开通密钥管理服务。

当您在一个地域第一次使用加密盘时,ECS 系统会为您在密钥管理服务(KMS)中的使用地域自动创建一个专为 ECS 使用的用户主密钥(Customer Master Key,CMK),这个用户主密钥免费,您可以在密钥管理服务控制台上查询到该用户主密钥,但不能删除。

ECS云盘加密的密钥管理

ECS云盘加密功能通过行业标准的AES-256算法,利用数据密钥加密您的卷。每个阿里云账号在每个地域都具有唯一的用户主密钥(CMK),该密钥与数据分开,存储在一个受严格的物理和逻辑安全控制保护的系统上。

每个地域的新创建云盘都使用这一地域下唯一的256位密钥(来自于CMK)加密。云盘的所有快照以及从这些快照创建的云盘也关联该密钥。这些密钥受阿里云KMS提供的密钥管理基础设施的保护,实施强逻辑和物理安全控制以防止未经授权的访问。阿里云的密钥管理基础设施符合(NIST) 800-57中的建议,并使用了符合(FIPS) 140-2标准的密码算法。

云盘的加密密钥仅在您的ECS实例所在的宿主机的内存中使用,永远不会以明文形式存储在任何永久介质(如云盘)上。

使用限制

  • 只能加密云盘,不能加密本地盘。
  • 只能加密数据盘,不能加密系统盘。
  • 已经存在的非加密盘,不能直接转换成加密盘。
  • 已经加密的云盘,也不能转换为非加密云盘。
  • 已经存在的非加密盘产生的快照,不能直接转换成加密快照。
  • 加密快照不能转换为非加密快照。
  • 不能共享带有加密快照的镜像。
  • 不能跨地域复制带有加密快照的镜像。
  • 不能导出带有加密快照的镜像。
  • 每个地域每个用户无法自己选择用户主密钥 CMK,由系统为您生成。
  • 每个地域 ECS 系统创建的用户主密钥(CMK),用户不能删除,但不收费用。
  • 不支持在云盘加密后更换该云盘用于加解密的关联的用户主密钥。

费用

ECS 不对云盘加密功能收取额外的费用。

ECS 为您在每个地域创建的用户主密钥(CMK)属于服务密钥,不收取额外费用,也不占用您在每个地域的主密钥数量限制。

说明 您对云盘的任何 读写操作(例如 mount/umount、分区、格式化等)都不会产生费用。但是,凡是涉及云盘本身的管理操作(见下面列表),无论是通过 ECS 管理控制台还是通过 API,均会以 API 的形式使用到密钥管理服务(KMS),将会记入到您在该地域的 KMS 服务 API 调用次数。 请注意,目前 KMS 每个用户每月有 20000 次的免费额度,但一旦高频率大量操作超过免费额度,则会产生费用。详情请参见 密钥管理服务计费方式
对加密云盘的管理操作包括:

请保证您的账户余额充足,否则会出现操作失败,进而可能产生额外的费用。

创建加密云盘

目前,ECS 云盘加密功能只支持数据盘。您可以通过不同渠道创建加密云盘:

  • 通过购买实例页面或购买云盘页面

    • 勾选加密选项,创建加密的空盘。
    • 选择加密快照来创建云盘。
  • 通过 API 或 CLI:

    • 指定参数 DataDisk.n.EncryptedRunInstancesCreateInstance)或者 EncryptedCreateDisk)为 true
    • 在 CreateInstance 或 CreateDisk 中,指定加密快照的 SnapshotId

转换数据加密状态

已经存在的非加密盘,不能直接转换成加密盘。已经存在的加密盘,不能直接转换成非加密盘。

已经存在的非加密盘产生的快照,不能直接转换成加密快照。已经存在的加密盘产生的快照,不能直接转换成非加密快照。

所以,如果您需要对现有数据非加密状态转换为加密状态,阿里云推荐用 Linux 下的 rsync 命令或者 Windows 下的 robocopy 命令将数据从非加密盘上复制到(新创建的)加密盘上。

如果您需要对现有数据加密状态转换为非加密状态,则用 Linux 下的 rsync 命令或者 Windows 下的 robocopy 命令将数据从加密盘上复制到(新创建的)非加密盘上。